Ejemplo n.º 1
0
class ScreenListView(ScreenViewMixin, ModelViewMixin, ListCreateAPIView):
    serializer_class = ScreenSerializer
    filter_class = filterset_factory(Screen, fields=('name', ))
    ordering = 'name'

    def perform_create(self, serializer):
        return Screen.create(serializer.validated_data)
Ejemplo n.º 2
0
 def get_filterset_class(self):
     if self.filterset_class:
         return self.filterset_class
     elif self.get_filterset_fields():
         return filterset_factory(model=self.model,
                                  fields=self.get_filterset_fields())
     return None
Ejemplo n.º 3
0
    def export(self, request, *args, **kwargs):
        # 1. Get the iterator of the QuerySet
        previous_week = timezone.now() - timedelta(
            days=timezone.now().weekday(), weeks=1)
        year = previous_week.year
        week = previous_week.isocalendar()[1]

        Filter = filterset_factory(models.PassageHourAggregation,
                                   fields=['year', 'week'])
        qs = Filter(request.GET).qs

        # If no date has been given, we return the data of last week
        # Since the last week of the year can contain days of both years
        # we will search in both years.
        if not request.GET.get('year') and not request.GET.get('week'):
            monday = previous_week
            sunday = monday + timedelta(days=6)
            qs = qs.filter(date__gte=monday, date__lte=sunday)

        qs = (qs.annotate(bucket=ExpressionWrapper(
            F("date") + HoursInterval(F("hour")),
            output_field=DateTimeField()), ).values(
                "camera_id", "camera_naam",
                "bucket").annotate(sum=Sum("count")).order_by("bucket"))

        # 2. Create the instance of our CSVExport class
        csv_export = CSVExport()

        # 3. Export (download) the file
        return csv_export.export("export", qs.iterator(), streaming=True)
Ejemplo n.º 4
0
def get_suppliers_ledger_data(request):
    data = []
    context = {}
    if request.method == "GET":
        supplier_id = request.GET.get("supplier", "")
        supplier_id = int(supplier_id) if supplier_id.isdigit() else 0
        if supplier_id == 0:
            qs = SupplierPayment.objects.none()
        else:
            qs = SupplierPayment.objects.filter(supplier__shop=request.shop)

        SupplierPaymentFilter = filterset_factory(model=SupplierPayment,
                                                  fields=["supplier"])
        f = SupplierPaymentFilter(request.GET, queryset=qs)
        columns = [
            'supplier__name', 'payment_type', 'payment_date', 'description',
            'amount'
        ]
        vs = list(f.qs.values(*columns))
        for obj in vs:
            row = {}
            row["name"] = obj["supplier__name"]
            row["amount"] = obj["amount"]
            row["pament_type"] = obj["payment_type"]
            row["pament_date"] = obj["payment_time"]
            row["description"] = obj["description"]
            row["remaining_amount"] = ""
            data.append(row)
        context["ledger_list"] = data
        context["selected_supplier"] = supplier_id
    return context
Ejemplo n.º 5
0
 def test_view_with_filterset_not_model(self):
     factory = RequestFactory()
     request = factory.get(self.base_url)
     filterset = filterset_factory(Book)
     view = FilterView.as_view(filterset_class=filterset)
     response = view(request)
     self.assertEqual(response.status_code, 200)
     for b in ['Ender's Game', 'Rainbow Six', 'Snowcrash']:
         self.assertContains(response, b)
Ejemplo n.º 6
0
 def test_view_with_filterset_not_model(self):
     factory = RequestFactory()
     request = factory.get(self.base_url)
     filterset = filterset_factory(Book)
     view = FilterView.as_view(filterset_class=filterset)
     response = view(request)
     self.assertEqual(response.status_code, 200)
     for b in ['Ender's Game', 'Rainbow Six', 'Snowcrash']:
         self.assertContains(response, b)
Ejemplo n.º 7
0
    def do_field_filtering(self, request, queryset):
        """
        This performs field level filtering on the result set
        Eg: ?title=James Joyce
        """
        # Get filterset class
        filterset_class = filterset_factory(queryset.model)

        # Run field filters
        return filterset_class(request.GET, queryset=queryset).qs
Ejemplo n.º 8
0
 def get_filterset_class(self):
     """
     Returns the filterset class to use in this view
     """
     if self.filterset_class:
         return self.filterset_class
     elif self.model:
         return filterset_factory(self.model)
     else:
         msg = "'%s' must define 'filterset_class' or 'model'"
         raise ImproperlyConfigured(msg % self.__class__.__name__)
Ejemplo n.º 9
0
 def get_filterset_class(self):
     """
     Returns the filterset class to use in this view
     """
     if self.filterset_class:
         return self.filterset_class
     elif self.model:
         return filterset_factory(model=self.model, fields=self.filterset_fields)
     else:
         msg = "'%s' must define 'filterset_class' or 'model'"
         raise ImproperlyConfigured(msg % self.__class__.__name__)
Ejemplo n.º 10
0
 def _get_filter_class(self, model: Type[Model]) -> Type:
     return filterset_factory(model)
Ejemplo n.º 11
0
 def get_api_filter_class(self):
     return self.api_filter_class or filterset_factory(self.model)
Ejemplo n.º 12
0
 def get_list_filter_class(self):
     return self.list_filter_class or filterset_factory(self.model)