def filter_queryset(self, request, queryset, view): # Get built-in DRF datatables queryset first to join with search text, # then apply additional filters. super_queryset = super(ReturnFilterBackend, self).filter_queryset( request, queryset, view).distinct().order_by('-id') date_from = request.GET.get('date_from') date_to = request.GET.get('date_to') status = request.GET.get('status') queryset = super_queryset if queryset.model is Return: # apply user selected filters status = status.lower() if status else 'all' if status != 'all': status_ids = [] for returns in queryset: if status in returns.processing_status.lower(): status_ids.append(returns.id) queryset = queryset.filter(id__in=status_ids).distinct() if date_from: date_from = datetime.strptime(date_from, '%Y-%m-%d') + timedelta(days=1) queryset = queryset.filter(lodgement_date__gte=date_from) if date_to: date_to = datetime.strptime(date_to, '%Y-%m-%d') + timedelta(days=1) queryset = queryset.filter(lodgement_date__lte=date_to) return queryset
def get_status(self, status): """Get status from string or int""" try: status = int(status) except ValueError: status = STATUS_LOOKUP[status.lower()] return status
def get(self, request, *args, **kwargs): status = request.GET.get('status', None) crawl_type = request.GET.get('crawl-type', 'import') lead_type = request.GET.get('lead-type', None) if status: if status.lower() == 'check': print('-- status variable passed to /spiderfarm/spider-jobs') # get all SpiderJobs currently running try: # trying to get data for SSL domain crawls if crawl_type: print('-- crawl-type passed in GET: %s' % crawl_type) if crawl_type == 'ssl': # retrieve running job id for ssl crawl job_ids = job_ids = SpiderJob.objects.filter( job_status='RUNNING', crawl_type='SSL').values_list( 'celery_id', flat=True).distinct() else: job_ids = SpiderJob.objects.filter( job_status__in=['RUNNING', 'PENDING' ]).values_list( 'celery_id', flat=True).distinct() # should contain either an error msg, or job_status as running, or # or job_status and task_id job_dict = parse_spiderjob_status(job_ids) return Response(job_dict) except Exception as e: print(e) data = {'job_status': e} return Response(data) else: data = {'job_status': 'ready'} return Response(data)
def get_queryset(self): queryset = Booking.objects.all() name = self.request.query_params.get('name', None) fromDate = self.request.query_params.get('fromDate', None) toDate = self.request.query_params.get('toDate', None) status = self.request.query_params.get('status', None) q = Q() if name and name != 'null': q &= Q(name__icontains=name.lower()) if fromDate and fromDate != 'null': q &= Q(time_booked__gte=fromDate) if toDate and toDate != 'null': toDateObj = datetime.strptime(toDate, '%Y-%m-%d %H:%M') + timedelta(days=1) q &= Q(time_booked__lte=toDateObj) if status and status != 'null': q &= Q(status__icontains=status.lower()) return queryset.filter(q)
def map_status(status): if status.lower() not in [ "offline", "online", "busy", "modified", "mounted" ]: return None if status.lower() == "offline": return LogicalUnitStatus.OFFLINE.value if status.lower() == "online": return LogicalUnitStatus.ONLINE.value if status.lower() == "busy": return LogicalUnitStatus.BUSY.value if status.lower() == "modified": return LogicalUnitStatus.MODIFIED.value if status.lower() == "mounted": return LogicalUnitStatus.MOUNTED.value
def list(self, request, pk=None): serializer_context = { 'request': Request(request), 'pk': pk, 'counter': self.request.GET.get('counter', ""), 'point': self.request.GET.get('point'), 'status': self.request.GET.get('status') } # Note the use of `get_queryset()` instead of `self.queryset` queryset = Orders.objects.filter(status="payment-pending") counter = self.request.GET.get("counter", "") point = self.request.GET.get("point", "") status = self.request.GET.get('status') user_id = self.request.GET.get('user') readyStatusBoolean = False collectedStatusBoolean = False if status: if status.lower() == "collected" or status.lower( ) == "not collected": if status.lower() == "collected": collectedStatusBoolean = True elif status.lower() == "not collected": collectedStatusBoolean = False set_orders = [] for i in queryset: if point == "counter": products_count = OrderedItem.objects.filter( orders=i, collected=collectedStatusBoolean, counter__pk=counter).count() elif point == "kitchen": products_count = OrderedItem.objects.filter( orders=i, collected=collectedStatusBoolean, kitchen__pk=counter).count() else: products_count = OrderedItem.objects.filter( orders=i, collected=collectedStatusBoolean).count() if products_count >= 1: set_orders.append(i.pk) queryset = queryset.filter(pk__in=set_orders) elif status.lower() == "ready" or status.lower() == "not ready": if status.lower() == "ready": readyStatusBoolean = True elif status.lower() == "not ready": readyStatusBoolean = False set_orders = [] for i in queryset: if point == "counter": products_count = OrderedItem.objects.filter( orders=i, ready=readyStatusBoolean, counter__pk=counter).count() elif point == "kitchen": products_count = OrderedItem.objects.filter( orders=i, ready=readyStatusBoolean, kitchen__pk=counter).count() else: products_count = OrderedItem.objects.filter( orders=i, ready=readyStatusBoolean).count() if products_count >= 1: set_orders.append(i.pk) queryset = queryset.filter(pk__in=set_orders) else: queryset = queryset.filter(status='payment-pending') if user_id: queryset = queryset.filter(user__pk=int(user_id)) query = self.request.GET.get('q') if query: queryset = queryset.filter( Q(status='payment-pending') | (Q(status='fully-paid') & Q(table__isnull=True) & Q(room__isnull=True)) | Q(invoice_number__icontains=query) | Q(room__name__icontains=query) | Q(table__name__icontains=query) | Q(user__name__icontains=query)).distinct() else: queryset = queryset.distinct() serializer = SearchListOrderSerializer(queryset, context=serializer_context, many=True) return Response(serializer.data)