diff --git a/finance/urls.py b/finance/urls.py index 487a1a7..ea88abe 100644 --- a/finance/urls.py +++ b/finance/urls.py @@ -4,6 +4,7 @@ from finance import views urlpatterns = [ url(r'bills/([0-9]{1,99})/$', views.BillDetailView.as_view()), url(r'payment/([0-9]{1,99})/$', views.YandexPay.as_view()), + url(r'bills_find/$', views.FindBillView.as_view()), url(r'bills/$', views.BillListView.as_view()), url(r'invoices/$', views.get_invoices), url(r'success/$', views.YandexSuccessView.as_view()), diff --git a/finance/views.py b/finance/views.py index 0afdad5..b1f6b21 100644 --- a/finance/views.py +++ b/finance/views.py @@ -102,6 +102,37 @@ class BillDetailView(APIView): return Response("Permission denied", status=403) +class FindBillView(APIView): + renderer_classes = (JSONRenderer,) + status_code = 200 + + @staticmethod + def get(request): + if request.user.is_authenticated() and \ + (request.user.is_superuser + or request.user.groups.filter(name__in=['managers', 'lead_managers']).exists()): + + key = request.GET.get('key', None) + count = int(request.GET.get('count', '10')) + + if key: + res = Bill.objects.filter( + Q(opener__email__contains=key.lower()) | Q(user__email__contains=key.lower()) + ) + + else: + res = Bill.objects.all() + + res = res[:(count if len(res) > count else len(res))] + + return Response( + [BillSerializer(i).data for i in res], + status=200 + ) + + return Response('Permission denied', status=403) + + class YandexPay(APIView): renderer_classes = (JSONRenderer,)