コード例 #1
0
class ReportFilterClass(filters.FilterSet):
    query = filters.CharFilter(label='Search')
    agency = filters.CharFilter(label='Agency')
    country = filters.CharFilter(label='Country')
    activity = filters.CharFilter(label='Activity')
    activity_type = filters.CharFilter(label='Activity Type')
    flag = filters.CharFilter(label='flag')
    active = filters.BooleanFilter(label='active')
    year = filters.NumberFilter(label='year')

    ordering = OrderingFilter(fields=(('score', 'score'), ('name',
                                                           'name_sort')))
コード例 #2
0
ファイル: filters.py プロジェクト: jxltom/saleor
class ProductFilter(SortedFilterSet):
    sort_by = OrderingFilter(
        label=pgettext_lazy("Product list sorting form", "Sort by"),
        fields=SORT_BY_FIELDS.keys(),
        field_labels=SORT_BY_FIELDS,
    )
    price = RangeFilter(label=pgettext_lazy("Currency amount", "Price"))

    class Meta:
        model = Product
        fields = []

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._merged_attributes = self._get_merged_attributes()
        self.filters.update(self._get_attributes_filters())
        self.filters = OrderedDict(sorted(self.filters.items()))

    def _get_merged_attributes(self):
        q_product_attributes = self._get_product_attributes_lookup()
        q_variant_attributes = self._get_variant_attributes_lookup()
        attributes = (Attribute.objects.all().prefetch_related(
            "translations",
            "values__translations").filter(q_product_attributes
                                           | q_variant_attributes).distinct())

        merged_attributes = MergedAttributes(attributes)
        return merged_attributes

    def _get_product_attributes_lookup(self):
        raise NotImplementedError()

    def _get_variant_attributes_lookup(self):
        raise NotImplementedError()

    def _get_attributes_filters(self):
        filters, attributes = {}, self._merged_attributes.get_attributes()
        for attr_slug in attributes:
            choices = self._merged_attributes.get_choices(attr_slug)

            # Rendering attribute with empty values is unnecessary
            if not choices:
                continue

            filters[attr_slug] = AttributeMultipleChoiceFilter(
                merged_attributes=self._merged_attributes,
                # By default the translated name of the first one in
                # attributes with same slug is used
                label=attributes[attr_slug][0].translated.name,
                widget=CheckboxSelectMultiple,
                choices=choices,
            )
        return filters
コード例 #3
0
ファイル: filters.py プロジェクト: abckristinaa/testversion
class StockLocationFilter(SortedFilterSet):
    sort_by = OrderingFilter(label=pgettext_lazy(
        'Stock location list filter label', 'Sort by'),
                             fields=STOCK_LOCATION_SORT_BY_FIELDS.keys(),
                             field_labels=STOCK_LOCATION_SORT_BY_FIELDS)
    name = CharFilter(label=pgettext_lazy('Stock location list filter label',
                                          'Name'),
                      lookup_expr='icontains')

    class Meta:
        model = StockLocation
        fields = []
コード例 #4
0
class ArticleFilter(FilterSet):
    class Meta:
        model = Article
        fields = ['authors', 'title', 'standfirst', 'body', 'created_at', 'frontpage']

    order_by = OrderingFilter(
        fields=(
            ('created_at', 'created_at'),
            ('title', 'title'),
            ('frontpage', 'frontpage')
        )
    )
コード例 #5
0
ファイル: filters.py プロジェクト: n0pex/django-DefectDojo
class ClosedFindingFilter(DojoFilter):
    title = CharFilter(lookup_expr='icontains')
    mitigated = DateRangeFilter(label="Mitigated Date")
    cwe = MultipleChoiceFilter(choices=[])
    severity = MultipleChoiceFilter(choices=[])
    test__test_type = ModelMultipleChoiceFilter(
        queryset=Test_Type.objects.all())
    test__engagement__product = ModelMultipleChoiceFilter(
        queryset=Product.objects.all(), label="Product")
    test__engagement__product__prod_type = ModelMultipleChoiceFilter(
        queryset=Product_Type.objects.all(), label="Product Type")

    o = OrderingFilter(
        # tuple-mapping retains order
        fields=(
            ('numerical_severity', 'numerical_severity'),
            ('date', 'date'),
            ('mitigated', 'mitigated'),
            ('title', 'title'),
            ('test__engagement__product__name',
             'test__engagement__product__name'),
        ),
        field_labels={
            'numerical_severity': 'Severity',
            'date': 'Date',
            'mitigated': 'Mitigated Date',
            'title': 'Finding Name',
            'test__engagement__product__name': 'Product Name',
        })

    class Meta:
        model = Finding
        exclude = [
            'url', 'description', 'mitigation', 'impact', 'endpoint',
            'references', 'test', 'is_template', 'active', 'verified',
            'out_of_scope', 'false_p', 'duplicate', 'thread_id', 'date',
            'notes', 'numerical_severity', 'reporter', 'endpoints',
            'last_reviewed'
        ]

    def __init__(self, *args, **kwargs):
        super(ClosedFindingFilter, self).__init__(*args, **kwargs)
        cwe = dict()
        cwe = dict([finding.cwe, finding.cwe]
                   for finding in self.queryset.distinct()
                   if finding.cwe > 0 and finding.cwe not in cwe)
        cwe = collections.OrderedDict(sorted(cwe.items()))
        self.form.fields['cwe'].choices = cwe.items()
        sevs = dict()
        sevs = dict([finding.severity, finding.severity]
                    for finding in self.queryset.distinct()
                    if finding.severity not in sevs)
        self.form.fields['severity'].choices = sevs.items()
コード例 #6
0
class ProductFindingFilter(DojoFilter):
    title = CharFilter(lookup_expr='icontains')
    sourcefile = CharFilter(lookup_expr='icontains')
    sourcefilepath = CharFilter(lookup_expr='icontains')
    param = CharFilter(lookup_expr='icontains')
    payload = CharFilter(lookup_expr='icontains')
    date = DateRangeFilter()
    cwe = MultipleChoiceFilter(choices=[])
    severity = MultipleChoiceFilter(choices=[])
    test__test_type = ModelMultipleChoiceFilter(
        queryset=Test_Type.objects.all())

    o = OrderingFilter(
        # tuple-mapping retains order
        fields=(
            ('numerical_severity', 'numerical_severity'),
            ('date', 'date'),
            ('test__engagement__risk_acceptance__created',
             'test__engagement__risk_acceptance__created'),
            ('title', 'title'),
            ('test__engagement__product__name',
             'test__engagement__product__name'),
        ),
        field_labels={
            'numerical_severity': 'Severity',
            'date': 'Finding Date',
            'test__engagement__risk_acceptance__created': 'Acceptance Date',
            'title': 'Finding Name',
            'test__engagement__product__name': 'Product Name',
        }

    )

    class Meta:
        model = Finding
        exclude = ['url', 'description', 'mitigation', 'impact',
                   'endpoint', 'references', 'test', 'is_template',
                   'active', 'verified', 'out_of_scope', 'false_p',
                   'duplicate_list', 'duplicate_finding', 'thread_id', 'mitigated', 'notes',
                   'numerical_severity', 'reporter', 'endpoints',
                   'last_reviewed', 'jira_creation', 'jira_change']

    def __init__(self, *args, **kwargs):
        super(ProductFindingFilter, self).__init__(*args, **kwargs)
        cwe = dict()
        cwe = dict([finding.cwe, finding.cwe]
                   for finding in self.queryset.distinct()
                   if finding.cwe > 0 and finding.cwe not in cwe)
        cwe = collections.OrderedDict(sorted(cwe.items()))
        self.form.fields['cwe'].choices = list(cwe.items())
        self.form.fields['severity'].choices = self.queryset.order_by(
            'numerical_severity'
        ).values_list('severity', 'severity').distinct()
コード例 #7
0
ファイル: filters.py プロジェクト: n0pex/django-DefectDojo
class OpenFindingFilter(DojoFilter):
    title = CharFilter(lookup_expr='icontains')
    date = DateRangeFilter()
    last_reviewed = DateRangeFilter()
    cwe = MultipleChoiceFilter(choices=[])
    severity = MultipleChoiceFilter(choices=[])
    test__test_type = ModelMultipleChoiceFilter(
        queryset=Test_Type.objects.all())
    test__engagement__product = ModelMultipleChoiceFilter(
        queryset=Product.objects.all(), label="Product")

    o = OrderingFilter(
        # tuple-mapping retains order
        fields=(
            ('numerical_severity', 'numerical_severity'),
            ('date', 'date'),
            ('last_reviewed', 'last_reviewed'),
            ('title', 'title'),
            ('test__engagement__product__name',
             'test__engagement__product__name'),
        ), )

    class Meta:
        model = Finding
        exclude = [
            'url', 'description', 'mitigation', 'impact', 'endpoint',
            'references', 'test', 'is_template', 'active', 'verified',
            'out_of_scope', 'false_p', 'duplicate', 'thread_id', 'mitigated',
            'notes', 'numerical_severity', 'reporter', 'last_reviewed'
        ]

    def __init__(self, *args, **kwargs):
        self.user = None
        if 'user' in kwargs:
            self.user = kwargs.pop('user')
        super(OpenFindingFilter, self).__init__(*args, **kwargs)
        cwe = dict()
        cwe = dict([finding.cwe, finding.cwe]
                   for finding in self.queryset.distinct()
                   if finding.cwe > 0 and finding.cwe not in cwe)
        cwe = collections.OrderedDict(sorted(cwe.items()))
        self.form.fields['cwe'].choices = cwe.items()
        sevs = dict()
        sevs = dict([finding.severity, finding.severity]
                    for finding in self.queryset.distinct()
                    if finding.severity not in sevs)
        self.form.fields['severity'].choices = sevs.items()
        if self.user is not None and not self.user.is_staff:
            self.form.fields[
                'test__engagement__product'].queryset = Product.objects.filter(
                    authorized_users__in=[self.user])
            self.form.fields['endpoints'].queryset = Endpoint.objects.filter(
                product__authorized_users__in=[self.user]).distinct()
コード例 #8
0
class MediaFilter(django_filters.FilterSet):
    class Meta:
        model = Media
        fields = {
            'id': ['exact'],
            'create_time': ['exact', 'gte', 'lte'],
            # ---------- Uploader ------------
            'uploader_id': ['exact'],
            'uploader__username': ['exact', 'icontains', 'istartswith'],
        }

    order_by = OrderingFilter(fields=('id', 'order', 'create_time'))
コード例 #9
0
ファイル: filters.py プロジェクト: polyatail/saleor
class CategoryFilter(SortedFilterSet):
    name = CharFilter(
        label=pgettext_lazy('Category list filter label', 'Name'),
        lookup_expr='icontains')
    sort_by = OrderingFilter(
        label=pgettext_lazy('Category list sorting filter label', 'Sort by'),
        fields=SORT_BY_FIELDS.keys(),
        field_labels=SORT_BY_FIELDS)

    class Meta:
        model = Category
        fields = []
コード例 #10
0
ファイル: quick_search.py プロジェクト: allouchmed/osis
class QuickLearningUnitYearFilter(FilterSet):
    academic_year = filters.ModelChoiceFilter(
        queryset=AcademicYear.objects.all(),
        required=False,
        label=_('Ac yr.'),
        empty_label=pgettext_lazy("plural", "All"),
    )
    acronym = filters.CharFilter(
        field_name="acronym",
        lookup_expr="iregex",
        max_length=40,
        required=False,
        label=_('Code'),
    )
    title = filters.CharFilter(
        field_name="full_title",
        lookup_expr="icontains",
        max_length=40,
        label=_('Title'),
    )

    ordering = OrderingFilter(fields=(
        ('academic_year__year', 'academic_year'),
        ('acronym', 'acronym'),
        ('full_title', 'title'),
    ),
                              widget=forms.HiddenInput)

    class Meta:
        model = LearningUnitYear
        fields = [
            "academic_year",
            "acronym",
            "title",
        ]

    def __init__(self, *args, initial=None, **kwargs):
        super().__init__(*args, **kwargs)
        self.queryset = self.get_queryset()
        if initial:
            self.form.fields["academic_year"].initial = initial[
                "academic_year"]

    def get_queryset(self):
        # Need this close so as to return empty query by default when form is unbound
        if not self.data:
            return LearningUnitYear.objects.none()
        queryset = LearningUnitYear.objects_with_container.select_related(
            'academic_year', )
        queryset = LearningUnitYearQuerySet.annotate_full_title_class_method(
            queryset)
        return queryset
コード例 #11
0
ファイル: filters.py プロジェクト: sakkhar/saleor
class UserFilter(SortedFilterSet):
    name_or_email = CharFilter(label=pgettext_lazy(
        'Customer name or email filter', 'Name or email'),
                               method='filter_by_customer')
    location = CharFilter(label=pgettext_lazy('Customer list filter label',
                                              'Location'),
                          method='filter_by_location')
    is_active = ChoiceFilter(label=pgettext_lazy('Customer list filter label',
                                                 'Is active'),
                             choices=IS_ACTIVE_CHOICES,
                             empty_label=pgettext_lazy(
                                 'Filter empty choice label', 'All'),
                             widget=forms.Select)
    sort_by = OrderingFilter(label=pgettext_lazy('Customer list filter label',
                                                 'Sort by'),
                             fields=SORT_BY_FIELDS,
                             field_labels=SORT_BY_FIELDS_LABELS)

    class Meta:
        model = User
        fields = []

    def filter_by_customer(self, queryset, name, value):
        return queryset.filter(
            Q(email__icontains=value)
            | Q(default_billing_address__first_name__icontains=value)
            | Q(default_billing_address__last_name__icontains=value))

    def filter_by_location(self, queryset, name, value):
        q = Q(default_billing_address__city__icontains=value)
        q |= Q(default_billing_address__country__icontains=value)
        country_codes = self.get_mapped_country_codes_from_search(value)
        for code in country_codes:
            q |= Q(default_billing_address__country__icontains=code)
        return queryset.filter(q)

    def get_mapped_country_codes_from_search(self, value):
        country_codes = []
        for code, country in dict(countries).items():
            if value.lower() in country.lower():
                country_codes.append(code)
        return country_codes

    def get_summary_message(self):
        counter = self.qs.count()
        return npgettext(
            'Number of matching records in the dashboard customers list',
            'Found %(counter)d matching customer',
            'Found %(counter)d matching customers',
            number=counter) % {
                'counter': counter
            }
コード例 #12
0
    class Meta:

        model = Article
        fields = "__all__"
        filter_fields = {
            'titre': ['exact', 'icontains', 'istartswith'],
        }
        order_by = OrderingFilter(fields=(
            ('date_add', 'date_add'),
            ('nb_like', 'nb_like'),
        ))
        interfaces = (relay.Node, )
        connection_class = ExtendConnection
コード例 #13
0
ファイル: filters.py プロジェクト: tinnaratA/pmart-horizont
class ProductFilter(DistinctFilterSet):
    sort_by = OrderingFilter(fields=PRODUCT_SORT_BY_FIELDS.keys(),
                             field_labels=PRODUCT_SORT_BY_FIELDS)

    class Meta:
        model = Product
        fields = {
            'name': ['exact', 'icontains'],
            'product_type__name': ['exact'],
            'price': ['exact', 'range', 'lte', 'gte'],
            'is_published': ['exact'],
            'is_featured': ['exact'],
        }
コード例 #14
0
class StaffFilter(UserFilter):
    groups = ModelMultipleChoiceFilter(label=pgettext_lazy(
        'Staff list filter label', 'Groups'),
                                       name='groups',
                                       queryset=Group.objects.all())
    sort_by = OrderingFilter(label=pgettext_lazy('Staff list filter label',
                                                 'Sort by'),
                             fields=SORT_BY_FIELDS,
                             field_labels=SORT_BY_FIELDS_LABELS)

    class Meta:
        model = User
        fields = []
コード例 #15
0
class ProductFilter(FilterSet):
    def __init__(self, *args, **kwargs):
        self.category = kwargs.pop('category')
        super(ProductFilter, self).__init__(*args, **kwargs)
        self.product_attributes, self.variant_attributes = (
            self._get_attributes())
        self.filters.update(self._get_product_attributes_filters())
        self.filters.update(self._get_product_variants_attributes_filters())
        self.filters = OrderedDict(sorted(self.filters.items()))

    sort_by = OrderingFilter(label='Sort by',
                             fields=[(field['value'], field['value'])
                                     for field in SORT_BY_FIELDS])

    class Meta:
        model = Product
        fields = ['price']
        filter_overrides = {PriceField: {'filter_class': RangeFilter}}

    def _get_attributes(self):
        product_attributes = (
            ProductAttribute.objects.all().prefetch_related('values').filter(
                products_class__products__categories=self.category).distinct())
        variant_attributes = (
            ProductAttribute.objects.all().prefetch_related('values').filter(
                product_variants_class__products__categories=self.category).
            distinct())
        return product_attributes, variant_attributes

    def _get_product_attributes_filters(self):
        filters = {}
        for attribute in self.product_attributes:
            filters[attribute.slug] = MultipleChoiceFilter(
                name='attributes__%s' % attribute.pk,
                label=attribute.name,
                widget=CheckboxSelectMultiple,
                choices=self._get_attribute_choices(attribute))
        return filters

    def _get_product_variants_attributes_filters(self):
        filters = {}
        for attribute in self.variant_attributes:
            filters[attribute.slug] = MultipleChoiceFilter(
                name='variants__attributes__%s' % attribute.pk,
                label=attribute.name,
                widget=CheckboxSelectMultiple,
                choices=self._get_attribute_choices(attribute))
        return filters

    def _get_attribute_choices(self, attribute):
        return [(choice.pk, choice.name) for choice in attribute.values.all()]
コード例 #16
0
ファイル: filters.py プロジェクト: tanjibpa/alrawaa
class VoucherFilter(SortedFilterSet):
    name = CharFilter(label=pgettext_lazy('Voucher list name filter label',
                                          'Name'),
                      lookup_expr='icontains')
    type = ChoiceFilter(name='discount_value_type',
                        label=pgettext_lazy(
                            'Sale list is sale type filter label',
                            'Discount type'),
                        choices=DISCOUNT_TYPE_CHOICES,
                        empty_label=pgettext_lazy('Filter empty choice label',
                                                  'All'),
                        widget=forms.Select)
    discount_value = RangeFilter(
        label=pgettext_lazy('Sale list filter label', 'Discount_value'))
    date = DateFromToRangeFilter(label=pgettext_lazy(
        'Order list sorting filter label', 'Period of validity'),
                                 name='created',
                                 widget=DateRangeWidget,
                                 method='filter_by_date_range')
    limit = RangeFilter(label=pgettext_lazy('Voucher list sorting filter',
                                            'Limit'),
                        name='limit')
    sort_by = OrderingFilter(label=pgettext_lazy(
        'Voucher list sorting filter label', 'Sort by'),
                             fields=SORT_BY_FIELDS_LABELS_VOUCHER.keys(),
                             field_labels=SORT_BY_FIELDS_LABELS_VOUCHER)

    class Meta:
        model = Voucher
        fields = []

    def filter_by_date_range(self, queryset, name, value):
        q = Q()
        if value.start:
            q = Q(start_date__gte=value.start)
        if value.stop:
            if value.start:
                q |= Q(end_date__lte=value.stop)
            else:
                q = Q(end_date__lte=value.stop)
        return queryset.filter(q)

    def get_summary_message(self):
        counter = self.qs.count()
        return npgettext(
            'Number of matching records in the dashboard vouchers list',
            'Found %(counter)d matching voucher',
            'Found %(counter)d matching vouchers',
            number=counter) % {
                'counter': counter
            }
コード例 #17
0
class IngredientFilter(FilterSet):
    order_by = OrderingFilter(fields=(
        ('name', 'name'),
        ('notes', 'notes'),
        ('category__name', 'category__name'),
    ))

    class Meta:
        model = Ingredient
        fields = (
            'name',
            'notes',
            'category__name',
        )
コード例 #18
0
ファイル: filters.py プロジェクト: allouchmed/staff-manager
class DepartmentsTemplateTableFilter(SearchFieldFilterSet):
    """
    Filter for Departments filtering and template table column sorting.
    """

    searching_fields = ['id', 'name', 'organization__name']
    ordering = OrderingFilter(fields=(('id', 'id'), ('organization__name',
                                                     'organization__name'),
                                      ('name', 'name')))

    class Meta:
        model = Department
        form = DepartmentsTableFilterFlexForm
        fields = ['organization']
コード例 #19
0
ファイル: filters.py プロジェクト: allouchmed/staff-manager
class CitiesTemplateTableFilter(SearchFieldFilterSet):
    """
    Filter for Cities filtering and template table column sorting.
    """

    searching_fields = ['id', 'name', 'country__name']
    ordering = OrderingFilter(fields=(('id', 'id'), ('country__name',
                                                     'country__name'),
                                      ('name', 'name')))

    class Meta:
        model = City
        form = CitiesTableFilterFlexForm
        fields = ['country']
コード例 #20
0
class UserFilter(FilterSet):
    class Meta:
        model = User
        fields = {
            'created_on': ['exact', 'lte', 'gte'],
            'modified_on': ['exact', 'lte', 'gte'],
            "id": ['exact'],
            'email': ['exact', 'icontains'],
            'first_name': ['exact', 'icontains'],
            'last_name': ['exact', 'icontains'],
        }

    order_by = OrderingFilter(fields=('created_on', 'modified_on', 'email',
                                      'first_name', 'last_name'))
コード例 #21
0
ファイル: filters.py プロジェクト: ayomawdb/security-tools-1
class TestTypeFilter(DojoFilter):
    name = CharFilter(lookup_expr='icontains')

    o = OrderingFilter(
        # tuple-mapping retains order
        fields=(
            ('name', 'name'),
        ),
    )

    class Meta:
        model = Test_Type
        exclude = []
        include = ('name',)
コード例 #22
0
ファイル: filters.py プロジェクト: ayomawdb/security-tools-1
class DevelopmentEnvironmentFilter(DojoFilter):
    name = CharFilter(lookup_expr='icontains')

    o = OrderingFilter(
        # tuple-mapping retains order
        fields=(
            ('name', 'name'),
        ),
    )

    class Meta:
        model = Development_Environment
        exclude = []
        include = ('name',)
コード例 #23
0
class AssetGroupFilter(FilterSet):
    sorted_by = OrderingFilter(choices=(
        ('name', _('Name')),
        ('-name', _('Name (desc)')),
        ('criticity', _('Criticity')),
        ('-criticity', _('Criticity (desc)')),
    ))

    class Meta:
        model = AssetGroup
        fields = {
            'name': ['icontains'],
            'description': ['icontains'],
        }
コード例 #24
0
class StockFilter(FilterSet):
    currency = CharFilter(field_name='currency__code', lookup_expr='icontains')
    owner = CharFilter(field_name='owner__username', lookup_expr='icontains')
    amount = CharFilter(lookup_expr='icontains')
    order_by = OrderingFilter(fields=(
        ('currency__code', 'currency'),
        ('owner__username', 'owner'),
        ('ammount', 'ammount'),
    ))

    @property
    def qs(self):
        # The query context can be found in self.request.
        return super().qs
コード例 #25
0
class OrderFilter(SortedFilterSet):
    id = NumberFilter(label=pgettext_lazy('Order list filter label', 'ID'))
    name_or_email = CharFilter(label=pgettext_lazy('Order list filter label',
                                                   'Customer name or email'),
                               method='filter_by_order_customer')
    created = DateFromToRangeFilter(label=pgettext_lazy(
        'Order list filter label', 'Placed on'),
                                    field_name='created',
                                    widget=DateRangeWidget)
    status = ChoiceFilter(label=pgettext_lazy('Order list filter label',
                                              'Order status'),
                          choices=OrderStatus.CHOICES,
                          empty_label=pgettext_lazy(
                              'Filter empty choice label', 'All'),
                          widget=forms.Select)
    payment_status = ChoiceFilter(
        label=pgettext_lazy('Order list filter label', 'Payment status'),
        field_name='payments__status',
        choices=ChargeStatus.CHOICES,
        empty_label=pgettext_lazy('Filter empty choice label', 'All'),
        widget=forms.Select)
    total_net = RangeFilter(label=pgettext_lazy('Order list filter label',
                                                'Total'),
                            widget=MoneyRangeWidget)
    sort_by = OrderingFilter(label=pgettext_lazy('Order list filter label',
                                                 'Sort by'),
                             fields=SORT_BY_FIELDS,
                             field_labels=SORT_BY_FIELDS_LABELS)

    class Meta:
        model = Order
        fields = []

    def filter_by_order_customer(self, queryset, name, value):
        return queryset.filter(
            Q(user__email__icontains=value)
            | Q(user__first_name__icontains=value)
            | Q(user__last_name__icontains=value)
            | Q(user__default_billing_address__first_name__icontains=value)
            | Q(user__default_billing_address__last_name__icontains=value))

    def get_summary_message(self):
        counter = self.qs.count()
        return npgettext(
            'Number of matching records in the dashboard orders list',
            'Found %(counter)d matching order',
            'Found %(counter)d matching orders',
            number=counter) % {
                'counter': counter
            }
コード例 #26
0
ファイル: filters.py プロジェクト: AkioSky/FishMart
class ProductListFilter(SortedFilterSet):
    sort_by = OrderingFilter(label=pgettext_lazy('Product list sorting form',
                                                 'Sort by'),
                             fields=SORT_BY_FIELDS.keys(),
                             field_labels=SORT_BY_FIELDS)
    price = RangeFilter(label=pgettext_lazy('Currency amount', 'Price'))

    class Meta:
        model = Product
        fields = []

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.product_attributes, self.variant_attributes = (
            self._get_attributes())
        self.filters.update(self._get_product_attributes_filters())
        self.filters.update(self._get_product_variants_attributes_filters())
        self.filters = OrderedDict(sorted(self.filters.items()))

    def _get_attributes(self):
        product_attributes = (Attribute.objects.all().prefetch_related(
            'translations', 'values__translations').distinct())
        variant_attributes = (Attribute.objects.all().prefetch_related(
            'translations', 'values__translations').distinct())
        return product_attributes, variant_attributes

    def _get_product_attributes_filters(self):
        filters = {}
        for attribute in self.product_attributes:
            filters[attribute.slug] = MultipleChoiceFilter(
                field_name='attributes__%s' % attribute.pk,
                label=attribute.translated.name,
                widget=CheckboxSelectMultiple,
                choices=self._get_attribute_choices(attribute))
        return filters

    def _get_product_variants_attributes_filters(self):
        filters = {}
        for attribute in self.variant_attributes:
            filters[attribute.slug] = MultipleChoiceFilter(
                field_name='variants__attributes__%s' % attribute.pk,
                label=attribute.translated.name,
                widget=CheckboxSelectMultiple,
                choices=self._get_attribute_choices(attribute))
        return filters

    def _get_attribute_choices(self, attribute):
        return [(choice.pk, choice.translated.name)
                for choice in attribute.values.all()]
コード例 #27
0
class ProductFilterSet(FilterSet):
    genre = CharFilter(name='genre__slug')
    artist = CharFilter(name='artist__slug')
    medium_type = CharFilter(name='medium_type__name')
    min_price = NumberFilter(name='price', lookup_expr='gte')
    max_price = NumberFilter(name='price', lookup_expr='lte')
    label = CharFilter(name='label__slug')
    ordering = OrderingFilter(fields=(('price', 'price'), ('-price',
                                                           '-price')))
    tags = TagsFilter(name='tags__name')

    class Meta:
        model = Product
        fields = ('genre', 'artist', 'medium_type', 'min_price', 'max_price',
                  'label', 'ordering', 'tags')
コード例 #28
0
class PublicBilbyJobFilter(FilterSet):
    class Meta:
        model = BilbyJob
        fields = '__all__'

    order_by = OrderingFilter(
        fields=(
            ('last_updated', 'last_updated'),
            ('name', 'name'),
        )
    )

    @property
    def qs(self):
        return BilbyJob.public_bilby_job_filter(super(PublicBilbyJobFilter, self).qs, self)
コード例 #29
0
ファイル: filters.py プロジェクト: rajeshanjara/saleor
class GroupFilter(SortedFilterSet):
    name = CharFilter(label=pgettext_lazy('Group list filter label', 'Name'),
                      lookup_expr='icontains')
    permissions = ModelMultipleChoiceFilter(label=pgettext_lazy(
        'Group list filter label', 'Permissions'),
                                            name='permissions',
                                            queryset=get_permissions())
    sort_by = OrderingFilter(label=pgettext_lazy('Group list filter label',
                                                 'Sort by'),
                             fields=SORT_BY_FIELDS.keys(),
                             field_labels=SORT_BY_FIELDS)

    class Meta:
        model = Group
        fields = []
コード例 #30
0
class TimetableFilter(FilterSet):

    order_by = OrderingFilter(
        fields=[('id', 'id'), ('name', 'name'), (
            'cycle_length',
            'cycle_length'), ('ref_cycle_length', 'ref_cycle_length'),
                ('ref_cycle_date',
                 'ref_cycle_date'), ('inactive_weekdays', 'inactive_weekdays'),
                ('is_active', 'is_active'), (
                    'date_created',
                    'date_created'), ('date_modified', 'date_modified')])

    class Meta:
        fields = {'name': ['icontains']}
        model = Timetable