Пример #1
0
    def get_queryset(self):
        self.search_filters = []
        qs = (self.model.objects.filter(
            voucher_set=self.voucher_set).order_by('-date_created'))

        qs = sort_queryset(
            qs, self.request,
            ['num_basket_additions', 'num_orders', 'date_created'],
            '-date_created')

        # If form not submitted, return early
        is_form_submitted = ('name' in self.request.GET
                             or 'code' in self.request.GET)
        if not is_form_submitted:
            self.form = self.form_class()
            return qs

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return qs

        data = self.form.cleaned_data
        if data['code']:
            qs = qs.filter(code__icontains=data['code'])
            self.search_filters.append(_('Code matches "%s"') % data['code'])

        return qs
Пример #2
0
 def get_queryset(self):
     qs = self.model.objects.all().order_by('-date_created')
     qs = sort_queryset(
         qs, self.request,
         ['num_basket_additions', 'num_orders', 'date_created'],
         '-date_created')
     return qs
Пример #3
0
    def get_queryset(self):
        qs = self.model.objects.all().order_by('-date_created')
        qs = sort_queryset(qs, self.request,
                           ['num_basket_additions', 'num_orders',
                            'date_created'],
                           '-date_created')
        self.description_ctx = {'main_filter': _('All vouchers'),
                                'name_filter': '',
                                'code_filter': ''}

        # If form not submitted, return early
        is_form_submitted = 'name' in self.request.GET
        if not is_form_submitted:
            self.form = self.form_class()
            return qs

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return qs

        data = self.form.cleaned_data
        if data['name']:
            qs = qs.filter(name__icontains=data['name'])
            self.description_ctx['name_filter'] \
                = _("with name matching '%s'") % data['name']
        if data['code']:
            qs = qs.filter(code=data['code'])
            self.description_ctx['code_filter'] \
                = _("with code '%s'") % data['code']
        if data['is_active']:
            now = timezone.now()
            qs = qs.filter(start_datetime__lte=now, end_datetime__gte=now)
            self.description_ctx['main_filter'] = _('Active vouchers')

        return qs
Пример #4
0
    def get_queryset(self):
        """
        Build the queryset for this list and also update the title that
        describes the queryset
        """
        description_ctx = {"upc_filter": "", "title_filter": ""}
        queryset = get_queryset_for_user(self.request.user)
        if "recently_edited" in self.request.GET:
            # Just show recently edited
            queryset = queryset.order_by("-date_updated")
            queryset = queryset[: self.recent_products]
        else:
            # Allow sorting when all
            queryset = sort_queryset(queryset, self.request, ["title"], "-date_created")
        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            self.description = self.description_template % description_ctx
            return queryset

        data = self.form.cleaned_data

        if data["upc"]:
            queryset = queryset.filter(upc=data["upc"])
            description_ctx["upc_filter"] = _(" including an item with UPC '%s'") % data["upc"]

        if data["title"]:
            queryset = queryset.filter(title__icontains=data["title"]).distinct()
            description_ctx["title_filter"] = _(" including an item with title matching '%s'") % data["title"]

        self.description = self.description_template % description_ctx
        return queryset
Пример #5
0
    def get_queryset(self):
        queryset = self.model.objects.select_related('product', 'user').all()
        queryset = sort_queryset(
            queryset, self.request, ['score', 'total_votes', 'date_created'])
        self.desc_ctx = {
            'main_filter': _('All reviews'),
            'date_filter': '',
            'status_filter': '',
            'kw_filter': '',
            'name_filter': '',
        }

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return queryset

        data = self.form.cleaned_data

        queryset = self.add_filter_status(queryset, data['status'])
        queryset = self.add_filter_keyword(queryset, data['keyword'])
        queryset = self.add_filter_name(queryset, data['name'])

        queryset = self.get_date_from_to_queryset(
            data['date_from'], data['date_to'], queryset)

        return queryset
Пример #6
0
    def get_queryset(self):
        """
        Build the queryset for this list and also update the title that
        describes the queryset
        """
        description_ctx = {'upc_filter': '', 'title_filter': ''}
        queryset = get_queryset_for_user(self.request.user)
        if 'recently_edited' in self.request.GET:
            # Just show recently edited
            queryset = queryset.order_by('-date_updated')
            queryset = queryset[:self.recent_products]
        else:
            # Allow sorting when all
            queryset = sort_queryset(queryset, self.request, ['title'],
                                     '-date_created')
        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            self.description = self.description_template % description_ctx
            return queryset

        data = self.form.cleaned_data

        if data['upc']:
            queryset = queryset.filter(upc=data['upc'])
            description_ctx['upc_filter'] = _(
                " including an item with UPC '%s'") % data['upc']

        if data['title']:
            queryset = queryset.filter(
                title__icontains=data['title']).distinct()
            description_ctx['title_filter'] = _(
                " including an item with title matching '%s'") % data['title']

        self.description = self.description_template % description_ctx
        return queryset
Пример #7
0
    def get_queryset(self):
        qs = self.model._default_manager.filter(
            offer_type=ConditionalOffer.SITE)
        qs = sort_queryset(qs, self.request,
                           ['name', 'start_datetime', 'end_datetime',
                            'num_applications', 'total_discount'])

        self.description = _("All offers")

        # We track whether the queryset is filtered to determine whether we
        # show the search form 'reset' button.
        self.is_filtered = False
        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return qs

        data = self.form.cleaned_data

        if data['name']:
            qs = qs.filter(name__icontains=data['name'])
            self.description = _("Offers matching '%s'") % data['name']
            self.is_filtered = True
        if data['is_active']:
            self.is_filtered = True
            today = datetime.date.today()
            qs = qs.filter(start_date__lte=today, end_date__gte=today)

        return qs
Пример #8
0
    def get_queryset(self):
        qs = self.model._default_manager.filter(
            offer_type=ConditionalOffer.SITE)
        qs = sort_queryset(qs, self.request,
                           ['name', 'start_date', 'end_date',
                           'num_applications', 'total_discount'])

        self.description = _("All offers")

        # We track whether the queryset is filtered to determine whether we
        # show the search form 'reset' button.
        self.is_filtered = False
        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return qs

        data = self.form.cleaned_data

        if data['name']:
            qs = qs.filter(name__icontains=data['name'])
            self.description = _("Offers matching '%s'") % data['name']
            self.is_filtered = True
        if data['is_active']:
            self.is_filtered = True
            today = datetime.date.today()
            qs = qs.filter(start_date__lte=today, end_date__gte=today)

        return qs
Пример #9
0
    def get_queryset(self):
        qs = self.model._default_manager.exclude(offer_type=ConditionalOffer.VOUCHER)
        qs = sort_queryset(
            qs, self.request, ["name", "start_datetime", "end_datetime", "num_applications", "total_discount"]
        )

        self.description = _("All offers")

        # We track whether the queryset is filtered to determine whether we
        # show the search form 'reset' button.
        self.is_filtered = False
        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return qs

        data = self.form.cleaned_data

        if data["name"]:
            qs = qs.filter(name__icontains=data["name"])
            self.description = _("Offers matching '%s'") % data["name"]
            self.is_filtered = True
        if data["is_active"]:
            self.is_filtered = True
            today = timezone.now()
            qs = qs.filter(start_datetime__lte=today, end_datetime__gte=today)

        return qs
Пример #10
0
    def get_queryset(self):
        qs = self.model.objects.all().order_by('-date_created')
        qs = sort_queryset(qs, self.request,
                           ['num_basket_additions', 'num_orders',
                            'date_created'],
                           '-date_created')
        self.description_ctx = {'main_filter': _('All vouchers'),
                                'name_filter': '',
                                'code_filter': ''}

        # If form not submitted, return early
        is_form_submitted = 'name' in self.request.GET
        if not is_form_submitted:
            self.form = self.form_class()
            return qs

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return qs

        data = self.form.cleaned_data
        if data['name']:
            qs = qs.filter(name__icontains=data['name'])
            self.description_ctx['name_filter'] \
                = _("with name matching '%s'") % data['name']
        if data['code']:
            qs = qs.filter(code=data['code'])
            self.description_ctx['code_filter'] \
                = _("with code '%s'") % data['code']
        if data['is_active']:
            today = datetime.date.today()
            qs = qs.filter(start_date__lte=today, end_date__gte=today)
            self.description_ctx['main_filter'] = _('Active vouchers')

        return qs
Пример #11
0
    def get_queryset(self):
        qs = self.model.objects.all().order_by("-date_created")
        qs = sort_queryset(qs, self.request, ["num_basket_additions", "num_orders", "date_created"], "-date_created")
        self.description_ctx = {"main_filter": _("All vouchers"), "name_filter": "", "code_filter": ""}

        # If form not submitted, return early
        if "name" not in self.request.GET:
            self.form = self.form_class()
            return qs

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return qs

        data = self.form.cleaned_data
        if data["name"]:
            qs = qs.filter(name__icontains=data["name"])
            self.description_ctx["name_filter"] = _("with name matching '%s'") % data["name"]
        if data["code"]:
            qs = qs.filter(code=data["code"])
            self.description_ctx["code_filter"] = _("with code '%s'") % data["code"]
        if data["is_active"]:
            today = datetime.date.today()
            qs = qs.filter(start_date__lte=today, end_date__gte=today)
            self.description_ctx["main_filter"] = _("Active vouchers")

        return qs
Пример #12
0
    def get_queryset(self):
        queryset = self.model.objects.select_related('product', 'user').all()
        queryset = sort_queryset(queryset, self.request,
                                 ['score', 'total_votes', 'date_created'])
        self.desc_ctx = {
            'main_filter': _('All reviews'),
            'date_filter': '',
            'status_filter': '',
            'kw_filter': '',
            'name_filter': '',
        }

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return queryset

        data = self.form.cleaned_data

        queryset = self.add_filter_status(queryset, data['status'])
        queryset = self.add_filter_keyword(queryset, data['keyword'])
        queryset = self.add_filter_name(queryset, data['name'])

        queryset = self.get_date_from_to_queryset(data['date_from'],
                                                  data['date_to'], queryset)

        return queryset
Пример #13
0
 def apply_ordering(self, queryset):
     if "recently_edited" in self.request.GET:
         # Just show recently edited
         queryset = queryset.order_by("-date_updated")
         queryset = queryset[: self.recent_products]
     else:
         # Allow sorting when all
         queryset = sort_queryset(queryset, self.request, ["title"], "-date_created")
     return queryset
Пример #14
0
    def get_queryset(self):
        queryset = self.model.objects.select_related('product').all()
        queryset = sort_queryset(queryset, self.request,
                                 ['score', 'total_votes', 'date_created'])
        self.desc_ctx = {
            'main_filter': _('All reviews'),
            'date_filter': '',
            'status_filter': '',
            'kw_filter': '',
            'name_filter': '',
        }

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return queryset

        data = self.form.cleaned_data

        # checking for empty string rather then True is required
        # as zero is a valid value for 'status' but would be
        # evaluated to False
        if data['status'] != '':
            queryset = queryset.filter(status=data['status']).distinct()
            display_status = self.form.get_friendly_status()
            self.desc_ctx['status_filter'] \
                = _(" with status matching '%s'") % display_status

        if data['keyword']:
            queryset = queryset.filter(
                Q(title__icontains=data['keyword']) |
                Q(body__icontains=data['keyword'])
            ).distinct()
            self.desc_ctx['kw_filter'] \
                = _(" with keyword matching '%s'") % data['keyword']

        queryset = self.get_date_from_to_queryset(data['date_from'],
                                                  data['date_to'], queryset)

        if data['name']:
            # If the value is two words, then assume they are first name and
            # last name
            parts = data['name'].split()
            if len(parts) >= 2:
                queryset = queryset.filter(
                    user__first_name__istartswith=parts[0],
                    user__last_name__istartswith=parts[1]
                ).distinct()
            else:
                queryset = queryset.filter(
                    Q(user__first_name__istartswith=parts[0]) |
                    Q(user__last_name__istartswith=parts[-1])
                ).distinct()
            self.desc_ctx['name_filter'] \
                = _(" with customer name matching '%s'") % data['name']

        return queryset
Пример #15
0
    def get_queryset(self):
        queryset = self.model.objects.all()
        queryset = sort_queryset(queryset, self.request,
                                 ['score', 'total_votes', 'date_created'])
        self.desc_ctx = {
            'main_filter': _('All reviews'),
            'date_filter': '',
            'status_filter': '',
            'kw_filter': '',
            'name_filter': '',
        }

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return queryset

        data = self.form.cleaned_data

        # checking for empty string rather then True is required
        # as zero is a valid value for 'status' but would be
        # evaluated to False
        if data['status'] != '':
            queryset = queryset.filter(status=data['status']).distinct()
            display_status = self.form.get_friendly_status()
            self.desc_ctx['status_filter'] \
                = _(" with status matching '%s'") % display_status

        if data['keyword']:
            queryset = queryset.filter(
                Q(title__icontains=data['keyword']) |
                Q(body__icontains=data['keyword'])
            ).distinct()
            self.desc_ctx['kw_filter'] \
                = _(" with keyword matching '%s'") % data['keyword']

        queryset = self.get_date_from_to_queryset(data['date_from'],
                                                  data['date_to'], queryset)

        if data['name']:
            # If the value is two words, then assume they are first name and
            # last name
            parts = data['name'].split()
            if len(parts) >= 2:
                queryset = queryset.filter(
                    user__first_name__istartswith=parts[0],
                    user__last_name__istartswith=parts[1]
                ).distinct()
            else:
                queryset = queryset.filter(
                    Q(user__first_name__istartswith=parts[0]) |
                    Q(user__last_name__istartswith=parts[-1])
                ).distinct()
            self.desc_ctx['name_filter'] \
                = _(" with customer name matching '%s'") % data['name']

        return queryset
Пример #16
0
 def apply_ordering(self, queryset):
     if 'recently_edited' in self.request.GET:
         # Just show recently edited
         queryset = queryset.order_by('-date_updated')
         queryset = queryset[:self.recent_bodyworks]
     else:
         # Allow sorting when all
         queryset = sort_queryset(queryset, self.request,
                                  ['name',], '-date_created')
     return queryset
Пример #17
0
 def apply_ordering(self, queryset):
     if 'recently_edited' in self.request.GET:
         # Just show recently edited
         queryset = queryset.order_by('-date_updated')
         queryset = queryset[:self.recent_products]
     else:
         # Allow sorting when all
         queryset = sort_queryset(queryset, self.request, ['title'],
                                  '-date_created')
     return queryset
Пример #18
0
    def get_queryset(self):
        self.search_filters = []
        qs = self.model._default_manager.all()
        qs = sort_queryset(qs, self.request, [
            'name', 'offer_type', 'start_datetime', 'end_datetime',
            'num_applications', 'total_discount'
        ])

        self.form = self.form_class(self.request.GET)
        # This form is exactly the same as the other one, apart from having
        # fields with different IDs, so that they are unique within the page
        # (non-unique field IDs also break Select2)
        self.advanced_form = self.form_class(self.request.GET,
                                             auto_id='id_advanced_%s')
        if not all([self.form.is_valid(), self.advanced_form.is_valid()]):
            return qs

        name = self.form.cleaned_data['name']
        offer_type = self.form.cleaned_data['offer_type']
        is_active = self.form.cleaned_data['is_active']
        has_vouchers = self.form.cleaned_data['has_vouchers']
        voucher_code = self.form.cleaned_data['voucher_code']

        if name:
            qs = qs.filter(name__icontains=name)
            self.search_filters.append(_('Name matches "%s"') % name)
        if is_active is not None:
            now = timezone.now()
            if is_active:
                qs = qs.filter((Q(start_datetime__lte=now)
                                | Q(start_datetime__isnull=True))
                               & (Q(end_datetime__gte=now)
                                  | Q(end_datetime__isnull=True)))
                self.search_filters.append(_("Is active"))
            else:
                qs = qs.filter(
                    Q(end_datetime__lt=now) | Q(start_datetime__gt=now))
                self.search_filters.append(_("Is inactive"))
        if offer_type:
            qs = qs.filter(offer_type=offer_type)
            self.search_filters.append(
                _('Is of type "%s"') %
                dict(ConditionalOffer.TYPE_CHOICES)[offer_type])
        if has_vouchers is not None:
            qs = qs.filter(vouchers__isnull=not has_vouchers).distinct()
            self.search_filters.append(
                _("Has vouchers") if has_vouchers else _("Has no vouchers"))
        if voucher_code:
            qs = qs.filter(vouchers__code__icontains=voucher_code).distinct()
            self.search_filters.append(
                _('Voucher code matches "%s"') % voucher_code)

        return qs
Пример #19
0
    def get_queryset(self):
        queryset = super(RefundListView, self).get_queryset()
        queryset = queryset.prefetch_related('lines')
        queryset = sort_queryset(queryset, self.request, ['id'], 'id')

        self.form = self.form_class(self.request.GET)
        if self.form.is_valid():
            for field, value in self.form.cleaned_data.iteritems():
                if value:
                    # Check if the field has a custom query filter setup.
                    # If not, use a standard Django equals/match filter.
                    _filter = self.get_filter_fields().get(field, {}).get('query_filter', field)
                    queryset = queryset.filter(**{_filter: value})

        return queryset
Пример #20
0
    def get_queryset(self):  # noqa (too complex (19))
        """
        Build the queryset for this list.
        """
        queryset = super(BatchListView, self).get_queryset()
        form = self.form_class(self.request.GET)
        if form.is_valid():
            data = form.cleaned_data
            if data.get('batch_id'):
                return queryset.filter(batch_id=data['batch_id'])
            if data.get('status'):
                return queryset.filter(status=data['status'])

        queryset = sort_queryset(queryset, self.request, ['status',], default='-date_created')
        return queryset
Пример #21
0
    def get_queryset(self):
        queryset = super(RefundListView, self).get_queryset()
        queryset = queryset.prefetch_related('lines')
        queryset = sort_queryset(queryset, self.request, ['id', 'created'], 'id')

        self.form = self.form_class(self.request.GET)
        if self.form.is_valid():
            for field, value in self.form.cleaned_data.iteritems():
                if value:
                    # Check if the field has a custom query filter setup.
                    # If not, use a standard Django equals/match filter.
                    _filter = self.get_filter_fields().get(field, {}).get('query_filter', field)
                    queryset = queryset.filter(**{_filter: value})

        return queryset
Пример #22
0
    def get_queryset(self):
        queryset = super(RefundListView, self).get_queryset()
        queryset = queryset.prefetch_related('lines')
        queryset = sort_queryset(queryset, self.request, ['id'], 'id')

        self.form = self.form_class(self.request.GET)
        if self.form.is_valid():
            for field, value in self.form.cleaned_data.iteritems():
                if field == 'status' and value:
                    queryset = queryset.filter(status__in=value)
                elif field == 'username' and value:
                    queryset = queryset.filter(user__username__istartswith=value)
                elif value:
                    queryset = queryset.filter(**{field: value})

        return queryset
Пример #23
0
    def get_queryset(self):
        queryset = super(RefundListView, self).get_queryset()
        queryset = queryset.prefetch_related('lines')
        queryset = sort_queryset(queryset, self.request, ['id'], 'id')

        self.form = self.form_class(self.request.GET)
        if self.form.is_valid():
            for field, value in self.form.cleaned_data.iteritems():
                if field == 'status' and value:
                    queryset = queryset.filter(status__in=value)
                elif field == 'username' and value:
                    queryset = queryset.filter(
                        user__username__istartswith=value)
                elif value:
                    queryset = queryset.filter(**{field: value})

        return queryset
Пример #24
0
    def get_queryset(self):
        qs = self.model._default_manager.all().filter(
            shop_id=self.request.shop_id)
        qs = sort_queryset(qs, self.request, ['name'])
        self.description = _("All partners")
        self.is_filtered = False
        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return qs

        data = self.form.cleaned_data

        if data['name']:
            qs = qs.filter(name__icontains=data['name'])
            self.description = _("Partners matching '%s'") % data['name']
            self.is_filtered = True

        return qs
Пример #25
0
    def get_queryset(self):
        queryset = self.model.objects.select_related('review').select_related(
            'reply_to').all()
        queryset = sort_queryset(queryset, self.request,
                                 ['score', 'total_votes', 'date_created'])
        self.desc_ctx = {
            'main_filter': _('All review answers'),
            'date_filter': '',
            'kw_filter': '',
            'name_filter': '',
        }

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return queryset

        data = self.form.cleaned_data

        if data['keyword']:
            queryset = queryset.filter(
                Q(body__icontains=data['keyword'])).distinct()
            self.desc_ctx['kw_filter'] \
                = _(" with keyword matching '%s'") % data['keyword']

        queryset = self.get_date_from_to_queryset(data['date_from'],
                                                  data['date_to'], queryset)

        if data['name']:
            # If the value is two words, then assume they are first name and
            # last name
            parts = data['name'].split()
            if len(parts) >= 2:
                queryset = queryset.filter(
                    user__first_name__istartswith=parts[0],
                    user__last_name__istartswith=parts[1]).distinct()
            else:
                queryset = queryset.filter(
                    Q(user__first_name__istartswith=parts[0])
                    | Q(user__last_name__istartswith=parts[-1])).distinct()
            self.desc_ctx['name_filter'] \
                = _(" with customer name matching '%s'") % data['name']

        return queryset
Пример #26
0
    def get_queryset(self):
        qs = self.model.browsable().filter(users__contains=self.user)
        qs = sort_queryset(qs, self.request, ['name'])

        self.description = _("Available persons")

#         # We track whether the queryset is filtered to determine whether we
#         # show the search form 'reset' button.
#         self.is_filtered = False
#         self.form = self.form_class(self.request.GET)
#         if not self.form.is_valid():
#             return qs
# 
#         data = self.form.cleaned_data
# 
#         if data['name']:
#             qs = qs.filter(name__icontains=data['name'])
#             self.description = _("Partners matching '%s'") % data['name']
#             self.is_filtered = True

        return qs
Пример #27
0
    def get_queryset(self):
        qs = self.model._default_manager.all()
        qs = sort_queryset(qs, self.request, ['name'])

        self.description = _("All partners")

        # We track whether the queryset is filtered to determine whether we
        # show the search form 'reset' button.
        self.is_filtered = False
        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return qs

        data = self.form.cleaned_data

        if data['name']:
            qs = qs.filter(name__icontains=data['name'])
            self.description = _("Partners matching '%s'") % data['name']
            self.is_filtered = True

        return qs
Пример #28
0
    def get_queryset(self):
        qs = self.model._default_manager.all()
        qs = sort_queryset(qs, self.request, ['name'])

        self.description = _("All partners")

        # We track whether the queryset is filtered to determine whether we
        # show the search form 'reset' button.
        self.is_filtered = False
        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return qs

        data = self.form.cleaned_data

        if data['name']:
            qs = qs.filter(name__icontains=data['name'])
            self.description = _("Partners matching '%s'") % data['name']
            self.is_filtered = True

        return qs
Пример #29
0
    def get_queryset(self):
        """
        Build the queryset for this list and also update the title that
        describes the queryset
        """
        description_ctx = {'upc_filter': '',
                           'title_filter': ''}
        queryset = get_queryset_for_user(self.request.user)
        if 'recently_edited' in self.request.GET:
            # Just show recently edited
            queryset = queryset.order_by('-date_updated')
            queryset = queryset[:self.recent_products]
        else:
            # Allow sorting when all
            queryset = sort_queryset(queryset, self.request,
                                     ['title'], '-date_created')
        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            self.description = self.description_template % description_ctx
            return queryset

        data = self.form.cleaned_data

        if data['upc']:
            queryset = queryset.filter(upc=data['upc'])
            description_ctx['upc_filter'] = _(
                " including an item with UPC '%s'") % data['upc']

        if data['title']:
            queryset = queryset.filter(
                title__icontains=data['title']).distinct()
            description_ctx['title_filter'] = _(
                " including an item with title matching '%s'") % data['title']

        if data['ids']:
            queryset = queryset.filter(pk__in=data['ids'].split(','))
            description_ctx['ids_filter'] = _(" including an item with ids matching '%s'") % data['title']

        self.description = self.description_template % description_ctx
        return queryset
Пример #30
0
    def get_queryset(self):
        """
        Build the queryset for this list.
        """
        queryset = sort_queryset(self.base_queryset, self.request,
                                 ['id', ])

        # Look for shortcut query filters
        if 'searchrequest_state' in self.request.GET:
            self.form = self.form_class()
            state = self.request.GET['searchrequest_state']
            if state.lower() == 'none':
                state = None
            self.description = self.desc_template % self.get_desc_context()
            return self.base_queryset.filter(state=state)

        if 'searchrequest_number' not in self.request.GET:
            self.description = self.desc_template % self.get_desc_context()
            self.form = self.form_class()
            return queryset

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return queryset

        data = self.form.cleaned_data

        if data['searchrequest_number']:
            queryset = self.base_queryset.filter(
                id__istartswith=data['searchrequest_number'])

        if data['name']:
            # If the value is two words, then assume they are first name and
            # last name
            parts = data['name'].split()

            if len(parts) == 1:
                parts = [data['name'], data['name']]
            else:
                parts = [parts[0], parts[1:]]

            filter = Q(owner__first_name__istartswith=parts[0])
            filter |= Q(owner__last_name__istartswith=parts[1])

            queryset = queryset.filter(filter).distinct()

        if data['date_from'] and data['date_to']:
            # Add 24 hours to make search inclusive
            date_to = data['date_to'] + datetime.timedelta(days=1)
            queryset = queryset.filter(date_created__gte=data['date_from'])
            queryset = queryset.filter(date_created__lt=date_to)
        elif data['date_from']:
            queryset = queryset.filter(date_created__gte=data['date_from'])
        elif data['date_to']:
            date_to = data['date_to'] + datetime.timedelta(days=1)
            queryset = queryset.filter(date_created__lt=date_to)

        if data['state']:
            queryset = queryset.filter(state=data['state'])

        self.description = self.desc_template % self.get_desc_context(data)
        return queryset
Пример #31
0
 def get_queryset(self):
     qs = self.model.objects.all().order_by('-date_created')
     qs = sort_queryset(
         qs, self.request,
         ['num_basket_additions', 'num_orders', 'date_created'], '-date_created')
     return qs
Пример #32
0
    def get_queryset(self):  # noqa (too complex (19))
        """
        Build the queryset for this list.
        """
        queryset = sort_queryset(self.base_queryset, self.request,
                                 ['number', 'total_incl_tax'])

        # Look for shortcut query filters
        if 'invoice_status' in self.request.GET:
            self.form = self.form_class()
            status = self.request.GET['invoice_status']
            if status.lower() == 'none':
                status = None
            return self.base_queryset.filter(status=status)

        if 'invoice_number' not in self.request.GET:
            self.form = self.form_class()
            return queryset

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return queryset

        data = self.form.cleaned_data

        if data['invoice_number']:
            queryset = self.base_queryset.filter(
                number__istartswith=data['invoice_number'])

        if data['name']:
            # If the value is two words, then assume they are first name and
            # last name
            parts = data['name'].split()

            if len(parts) == 1:
                parts = [data['name'], data['name']]
            else:
                parts = [parts[0], parts[1:]]

            filter = Q(user__first_name__istartswith=parts[0])
            filter |= Q(user__last_name__istartswith=parts[1])

            queryset = queryset.filter(filter).distinct()

        if data['person_name']:
            queryset = queryset.filter(
                person__name__istartswith=data['person_name']).distinct()

        if data['date_from'] and data['date_to']:
            date_to = datetime_combine(data['date_to'], datetime.time.max)
            date_from = datetime_combine(data['date_from'], datetime.time.min)
            queryset = queryset.filter(date_created__gte=date_from,
                                       date_created__lt=date_to)
        elif data['date_from']:
            date_from = datetime_combine(data['date_from'], datetime.time.min)
            queryset = queryset.filter(date_created__gte=date_from)
        elif data['date_to']:
            date_to = datetime_combine(data['date_to'], datetime.time.max)
            queryset = queryset.filter(date_created__lt=date_to)

        if data['vatin']:
            queryset = queryset.filter(person__vatin=data['vatin']).distinct()

        if data['status']:
            queryset = queryset.filter(status=data['status'])

        return queryset
Пример #33
0
    def get_queryset(self):  # noqa (too complex (19))
        """
        Build the queryset for this list.
        """
        queryset = sort_queryset(self.base_queryset, self.request,
                                 ['number', 'total_incl_tax'])

        # Look for shortcut query filters
        if 'order_status' in self.request.GET:
            self.form = self.form_class()
            status = self.request.GET['order_status']
            if status.lower() == 'none':
                status = None
            return self.base_queryset.filter(status=status)

        if 'order_number' not in self.request.GET:
            self.form = self.form_class()
            return queryset

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return queryset

        data = self.form.cleaned_data

        if data['order_number']:
            queryset = self.base_queryset.filter(
                number__istartswith=data['order_number'])

        if data['name']:
            # If the value is two words, then assume they are first name and
            # last name
            parts = data['name'].split()
            allow_anon = getattr(settings, 'OSCAR_ALLOW_ANON_CHECKOUT', False)

            if len(parts) == 1:
                parts = [data['name'], data['name']]
            else:
                parts = [parts[0], parts[1:]]

            filter = Q(user__first_name__istartswith=parts[0])
            filter |= Q(user__last_name__istartswith=parts[1])
            if allow_anon:
                filter |= Q(billing_address__first_name__istartswith=parts[0])
                filter |= Q(shipping_address__first_name__istartswith=parts[0])
                filter |= Q(billing_address__last_name__istartswith=parts[1])
                filter |= Q(shipping_address__last_name__istartswith=parts[1])

            queryset = queryset.filter(filter).distinct()

        if data['product_title']:
            queryset = queryset.filter(
                lines__title__istartswith=data['product_title']).distinct()

        if data['upc']:
            queryset = queryset.filter(lines__upc=data['upc'])

        if data['partner_sku']:
            queryset = queryset.filter(lines__partner_sku=data['partner_sku'])

        if data['date_from'] and data['date_to']:
            date_to = datetime_combine(data['date_to'], datetime.time.max)
            date_from = datetime_combine(data['date_from'], datetime.time.min)
            queryset = queryset.filter(
                date_placed__gte=date_from, date_placed__lt=date_to)
        elif data['date_from']:
            date_from = datetime_combine(data['date_from'], datetime.time.min)
            queryset = queryset.filter(date_placed__gte=date_from)
        elif data['date_to']:
            date_to = datetime_combine(data['date_to'], datetime.time.max)
            queryset = queryset.filter(date_placed__lt=date_to)

        if data['voucher']:
            queryset = queryset.filter(
                discounts__voucher_code=data['voucher']).distinct()

        if data['payment_method']:
            queryset = queryset.filter(
                sources__source_type__code=data['payment_method']).distinct()

        if data['status']:
            queryset = queryset.filter(status=data['status'])

        return queryset
Пример #34
0
    def get_queryset(self):
        self.search_filters = []
        qs = self.model._default_manager.all()
        qs = sort_queryset(
            qs, self.request,
            ['num_basket_additions', 'num_orders', 'date_created'],
            '-date_created')

        # If form is not submitted, perform a default filter, and return early
        if not self.request.GET:
            self.form = self.form_class(initial={'in_set': False})
            # This form is exactly the same as the other one, apart from having
            # fields with different IDs, so that they are unique within the page
            # (non-unique field IDs also break Select2)
            self.advanced_form = self.form_class(initial={'in_set': False},
                                                 auto_id='id_advanced_%s')
            self.search_filters.append(_("Not in a set"))
            return qs.filter(voucher_set__isnull=True)

        self.form = self.form_class(self.request.GET)
        # This form is exactly the same as the other one, apart from having
        # fields with different IDs, so that they are unique within the page
        # (non-unique field IDs also break Select2)
        self.advanced_form = self.form_class(self.request.GET,
                                             auto_id='id_advanced_%s')
        if not all([self.form.is_valid(), self.advanced_form.is_valid()]):
            return qs

        name = self.form.cleaned_data['name']
        code = self.form.cleaned_data['code']
        offer_name = self.form.cleaned_data['offer_name']
        is_active = self.form.cleaned_data['is_active']
        in_set = self.form.cleaned_data['in_set']
        has_offers = self.form.cleaned_data['has_offers']

        if name:
            qs = qs.filter(name__icontains=name)
            self.search_filters.append(_('Name matches "%s"') % name)
        if code:
            qs = qs.filter(code=code)
            self.search_filters.append(_('Code is "%s"') % code)
        if offer_name:
            qs = qs.filter(offers__name__icontains=offer_name)
            self.search_filters.append(
                _('Offer name matches "%s"') % offer_name)
        if is_active is not None:
            now = timezone.now()
            if is_active:
                qs = qs.filter(start_datetime__lte=now, end_datetime__gte=now)
                self.search_filters.append(_("Is active"))
            else:
                qs = qs.filter(end_datetime__lt=now)
                self.search_filters.append(_("Is inactive"))
        if in_set is not None:
            qs = qs.filter(voucher_set__isnull=not in_set)
            self.search_filters.append(
                _("In a set") if in_set else _("Not in a set"))
        if has_offers is not None:
            qs = qs.filter(offers__isnull=not has_offers).distinct()
            self.search_filters.append(
                _("Has offers") if has_offers else _("Has no offers"))

        return qs
Пример #35
0
    def get_queryset(self):  # noqa (too complex (19))
        """
        Build the queryset for this list.
        """
        queryset = sort_queryset(self.base_queryset, self.request, ["number", "total_incl_tax"])

        # Look for shortcut query filters
        if "order_status" in self.request.GET:
            self.form = self.form_class()
            status = self.request.GET["order_status"]
            if status.lower() == "none":
                status = None
            self.description = self.desc_template % self.get_desc_context()
            return self.base_queryset.filter(status=status)

        if "order_number" not in self.request.GET:
            self.description = self.desc_template % self.get_desc_context()
            self.form = self.form_class()
            return queryset

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return queryset

        data = self.form.cleaned_data

        if data["order_number"]:
            queryset = self.base_queryset.filter(number__istartswith=data["order_number"])

        if data["name"]:
            # If the value is two words, then assume they are first name and
            # last name
            parts = data["name"].split()
            allow_anon = getattr(settings, "OSCAR_ALLOW_ANON_CHECKOUT", False)

            if len(parts) == 1:
                parts = [data["name"], data["name"]]
            else:
                parts = [parts[0], parts[1:]]

            filter = Q(user__first_name__istartswith=parts[0])
            filter |= Q(user__last_name__istartswith=parts[1])
            if allow_anon:
                filter |= Q(billing_address__first_name__istartswith=parts[0])
                filter |= Q(shipping_address__first_name__istartswith=parts[0])
                filter |= Q(billing_address__last_name__istartswith=parts[1])
                filter |= Q(shipping_address__last_name__istartswith=parts[1])

            queryset = queryset.filter(filter).distinct()

        if data["product_title"]:
            queryset = queryset.filter(lines__title__istartswith=data["product_title"]).distinct()

        if data["upc"]:
            queryset = queryset.filter(lines__upc=data["upc"])

        if data["partner_sku"]:
            queryset = queryset.filter(lines__partner_sku=data["partner_sku"])

        if data["date_from"] and data["date_to"]:
            # Add 24 hours to make search inclusive
            date_to = data["date_to"] + datetime.timedelta(days=1)
            queryset = queryset.filter(date_placed__gte=data["date_from"])
            queryset = queryset.filter(date_placed__lt=date_to)
        elif data["date_from"]:
            queryset = queryset.filter(date_placed__gte=data["date_from"])
        elif data["date_to"]:
            date_to = data["date_to"] + datetime.timedelta(days=1)
            queryset = queryset.filter(date_placed__lt=date_to)

        if data["voucher"]:
            queryset = queryset.filter(discounts__voucher_code=data["voucher"]).distinct()

        if data["payment_method"]:
            queryset = queryset.filter(sources__source_type__code=data["payment_method"]).distinct()

        if data["status"]:
            queryset = queryset.filter(status=data["status"])

        self.description = self.desc_template % self.get_desc_context(data)
        return queryset
Пример #36
0
    def get_queryset(self):  # noqa (too complex (19))
        """
        Build the queryset for this list.
        """
        queryset = sort_queryset(self.base_queryset, self.request,
                                 ['number', 'total_incl_tax'])

        # Look for shortcut query filters
        if 'invoice_status' in self.request.GET:
            self.form = self.form_class()
            status = self.request.GET['invoice_status']
            if status.lower() == 'none':
                status = None
            return self.base_queryset.filter(status=status)

        if 'invoice_number' not in self.request.GET:
            self.form = self.form_class()
            return queryset

        self.form = self.form_class(self.request.GET)
        if not self.form.is_valid():
            return queryset

        data = self.form.cleaned_data

        if data['invoice_number']:
            queryset = self.base_queryset.filter(
                number__istartswith=data['invoice_number'])

        if data['name']:
            # If the value is two words, then assume they are first name and
            # last name
            parts = data['name'].split()

            if len(parts) == 1:
                parts = [data['name'], data['name']]
            else:
                parts = [parts[0], parts[1:]]

            filter = Q(user__first_name__istartswith=parts[0])
            filter |= Q(user__last_name__istartswith=parts[1])

            queryset = queryset.filter(filter).distinct()
        
        if data['person_name']:
            queryset = queryset.filter(person__name__istartswith=data['person_name']).distinct()
            
        if data['date_from'] and data['date_to']:
            date_to = datetime_combine(data['date_to'], datetime.time.max)
            date_from = datetime_combine(data['date_from'], datetime.time.min)
            queryset = queryset.filter(
                date_created__gte=date_from, date_created__lt=date_to)
        elif data['date_from']:
            date_from = datetime_combine(data['date_from'], datetime.time.min)
            queryset = queryset.filter(date_created__gte=date_from)
        elif data['date_to']:
            date_to = datetime_combine(data['date_to'], datetime.time.max)
            queryset = queryset.filter(date_created__lt=date_to)

        if data['vatin']:
            queryset = queryset.filter(
                person__vatin=data['vatin']).distinct()

        if data['status']:
            queryset = queryset.filter(status=data['status'])

        return queryset