class PostFilter(FilterSet):
    # Used for Related filter and Filter.method regression tests
    title = filters.AutoFilter(field_name='title', lookups='__all__')

    publish_date = filters.AutoFilter(lookups='__all__')
    is_published = filters.BooleanFilter(method='filter_is_published')

    author = RelatedFilter(UserFilter,
                           field_name='author',
                           queryset=User.objects.all())
    note = RelatedFilter(NoteFilter,
                         field_name='note',
                         queryset=Note.objects.all())
    tags = RelatedFilter(TagFilter,
                         field_name='tags',
                         queryset=Tag.objects.all())

    class Meta:
        model = Post
        fields = []

    def filter_is_published(self, queryset, field_name, value):
        """
        `is_published` is based on the actual `publish_date`. If the
        publish date is null, then the post is not published.

        This filter method is used to demonstrate annotations.
        """
        # Note: don't modify this without updating test_filtering.AnnotationTests
        return queryset.annotate_is_published() \
                       .filter(**{field_name: value})
class PostFilter(FilterSet):
    # Used for Related filter and Filter.method regression tests
    title = filters.AllLookupsFilter(field_name='title')

    publish_date = filters.AllLookupsFilter()
    is_published = filters.BooleanFilter(field_name='publish_date',
                                         method='filter_is_published')

    note = RelatedFilter(NoteFilter,
                         field_name='note',
                         queryset=Note.objects.all())
    tags = RelatedFilter(TagFilter,
                         field_name='tags',
                         queryset=Tag.objects.all())

    class Meta:
        model = Post
        fields = []

    def filter_is_published(self, qs, name, value):
        """
        `is_published` is based on the actual `date_published`.
        If the publishing date is null, then the post is not published.
        """
        isnull = not value
        lookup_expr = LOOKUP_SEP.join([name, 'isnull'])

        return qs.filter(**{lookup_expr: isnull})
Example #3
0
class ContractFilter(FilterSet, metaclass=MetaFilterSet):

    _token_text = ('agency_id', )
    _fuzzy_text = ('piid', 'agency_name', 'NAICS', 'PSC', 'point_of_contact',
                   'vendor_phone')
    _number = ('id', 'obligated_amount', 'annual_revenue',
               'number_of_employees')
    _date_time = ('date_signed', 'completion_date')

    status = RelatedFilter(ContractStatusFilter)
    pricing_type = RelatedFilter(PricingStructureFilter)

    vendor = RelatedFilter(VendorFilter)
    vendor_location = RelatedFilter(LocationFilter)

    place_of_performance = RelatedFilter(PlaceOfPerformanceFilter)

    psc_naics = CharFilter(field_name='NAICS', method='filter_psc_naics')

    class Meta:
        model = contracts.Contract
        fields = ()

    def filter_psc_naics(self, qs, name, value):
        naics_code = re.sub(r'[^\d]+$', '', value)
        psc_codes = list(
            categories.PSC.objects.filter(
                naics__root_code=naics_code).distinct().values_list('code',
                                                                    flat=True))

        return qs.filter(Q(PSC__in=psc_codes) | Q(NAICS=naics_code))
Example #4
0
class KeywordFilter(FilterSet, metaclass=MetaFilterSet):

    _number = ('id', 'parent__id')
    _fuzzy_text = ('name', 'parent__name', 'calc', 'sin__code')

    naics = RelatedFilter(NaicsFilter)
    psc = RelatedFilter(PscFilter)

    class Meta:
        model = categories.Keyword
        fields = ()
class PageFilter(FilterSet):
    title = filters.CharFilter(field_name='title')
    previous_page = RelatedFilter(PostFilter,
                                  field_name='previous_page',
                                  queryset=Post.objects.all())
    two_pages_back = RelatedFilter(PostFilter,
                                   field_name='previous_page__previous_page',
                                   queryset=Page.objects.all())

    class Meta:
        model = Page
        fields = []
Example #6
0
class PoolFilter(FilterSet, metaclass=MetaFilterSet):

    _token_text = ('id', 'number')
    _fuzzy_text = ('name', 'threshold')

    vehicle = RelatedFilter(VehicleFilter)
    naics = RelatedFilter(NaicsFilter)
    psc = RelatedFilter(PscFilter)
    keywords = RelatedFilter(KeywordFilter)

    class Meta:
        model = categories.Pool
        fields = ()
Example #7
0
class VendorBaseFilter(FilterSet, metaclass=MetaFilterSet):

    _boolean = ('sam_exclusion', )
    _token_text = ('cage', 'sam_status')
    _fuzzy_text = ('name', 'sam_url')
    _number_text = ('duns', )
    _date_time = ('sam_activation_date', 'sam_expiration_date')

    sam_location = RelatedFilter(LocationFilter)
    pools = RelatedFilter(PoolMembershipFilter)

    class Meta:
        model = vendors.Vendor
        fields = ()
Example #8
0
class PoolMembershipFilter(FilterSet, metaclass=MetaFilterSet):

    _fuzzy_text = ('piid', )
    _date_time = ('expiration_8a_date', 'contract_end_date')
    _number = ('id', )

    pool = RelatedFilter(PoolFilter)
    setasides = RelatedFilter(SetAsideFilter)

    zones = RelatedFilter(ZoneFilter)
    contacts = RelatedFilter(ContactFilter)

    class Meta:
        model = vendors.PoolMembership
        fields = ()
Example #9
0
class PoolMembershipFilter(FilterSet, metaclass=MetaFilterSet):

    _fuzzy_text = ('piid', )

    pool = RelatedFilter(PoolFilter)
    setasides = RelatedFilter(SetAsideFilter)

    zones = RelatedFilter(ZoneFilter)

    cms = RelatedFilter(ContractManagerFilter)
    pms = RelatedFilter(ProjectManagerFilter)

    class Meta:
        model = vendors.PoolMembership
        fields = ()
class AFilter(FilterSet):
    title = filters.CharFilter(field_name='title')
    b = RelatedFilter('BFilter', field_name='b', queryset=B.objects.all())

    class Meta:
        model = A
        fields = []
Example #11
0
class CoverFilterWithRelatedMethodFilter(FilterSet):
    comment = filters.CharFilter(field_name='comment')
    post = RelatedFilter(PostFilter, field_name='post', queryset=Post.objects.all())

    class Meta:
        model = Cover
        fields = []
Example #12
0
class NoteFilterWithRelatedAllDifferentFilterName(FilterSet):
    title = filters.CharFilter(field_name='title')
    writer = RelatedFilter(UserFilterWithAll, field_name='author', queryset=User.objects.all())

    class Meta:
        model = Note
        fields = []
class BFilter(FilterSet):
    name = AllLookupsFilter(name='name')
    c = RelatedFilter(CFilter, name='c')

    class Meta:
        model = B
        fields = []
class AFilter(FilterSet):
    title = filters.CharFilter(name='title')
    b = RelatedFilter('tests.testapp.filters.BFilter', name='b')

    class Meta:
        model = A
        fields = []
Example #15
0
class BlogFilter(FilterSet):
    name = AutoFilter(field_name='name', lookups='__all__')
    post = RelatedFilter('PostFilter', queryset=Post.objects.all())

    class Meta:
        model = Blog
        fields = []
Example #16
0
class NoteFilter(FilterSet):
    title = AutoFilter(field_name='title', lookups='__all__')
    author = RelatedFilter(UserFilter, queryset=User.objects.all())

    class Meta:
        model = Note
        fields = []
Example #17
0
class PostFilter(FilterSet):
    # Used for Related filter and MethodFilter tests
    note = RelatedFilter(NoteFilterWithRelatedAll, name='note')
    date_published = filters.AllLookupsFilter()
    is_published = filters.MethodFilter()

    class Meta:
        model = Post

    def filter_is_published(self, name, qs, value):
        """
        `is_published` is based on the actual `date_published`.
        If the publishing date is null, then the post is not published.
        """
        # convert value to boolean
        null = value.lower() != 'true'

        # The lookup name will end with `is_published`, but could be
        # preceded by a related lookup path.
        if LOOKUP_SEP in name:
            rel, _ = name.rsplit(LOOKUP_SEP, 1)
            name = LOOKUP_SEP.join([rel, 'date_published__isnull'])
        else:
            name = 'date_published__isnull'

        return qs.filter(**{name: null})
Example #18
0
class PersonFilter(FilterSet):
    name = AllLookupsFilter(name='name')
    best_friend = RelatedFilter('tests.testapp.filters.PersonFilter',
                                name='best_friend')

    class Meta:
        model = Person
class BFilter(FilterSet):
    name = AllLookupsFilter(field_name='name')
    c = RelatedFilter('CFilter', field_name='c', queryset=C.objects.all())

    class Meta:
        model = B
        fields = []
Example #20
0
class BlogPostFilter(FilterSet):
    title = filters.CharFilter(field_name='title')
    tags = RelatedFilter(TagFilter, field_name='tags', queryset=Tag.objects.all())

    class Meta:
        model = BlogPost
        fields = []
class CFilter(FilterSet):
    title = filters.CharFilter(field_name='title')
    a = RelatedFilter('AFilter', field_name='a', queryset=A.objects.all())

    class Meta:
        model = C
        fields = []
Example #22
0
class PersonFilter(FilterSet):
    name = AllLookupsFilter(field_name='name')
    best_friend = RelatedFilter('tests.testapp.filters.PersonFilter', field_name='best_friend', queryset=Person.objects.all())

    class Meta:
        model = Person
        fields = []
Example #23
0
class NoteFilterWithRelated(FilterSet):
    title = filters.CharFilter(field_name='title')
    author = RelatedFilter(UserFilter, field_name='author', queryset=User.objects.all())

    class Meta:
        model = Note
        fields = []
class CFilter(FilterSet):
    title = filters.CharFilter(name='title')
    a = RelatedFilter(AFilter, name='a')

    class Meta:
        model = C
        fields = []
Example #25
0
class ContractFilter(ContractBaseFilter, metaclass=MetaFilterSet):

    vendor = RelatedFilter(VendorFilter)

    psc_naics = CharFilter(field_name='NAICS', method='filter_psc_naics')

    class Meta:
        model = contracts.Contract
        fields = ()

    def filter_psc_naics(self, qs, name, value):
        naics_code = re.sub(r'[^\d]+$', '', value)

        try:
            naics = categories.Naics.objects.get(code=naics_code)
            sin_codes = list(naics.sin.all().values_list('code', flat=True))
            psc_codes = list(
                categories.PSC.objects.filter(
                    sin__code__in=sin_codes).distinct().values_list('code',
                                                                    flat=True))
            return qs.filter(Q(PSC__in=psc_codes) | Q(NAICS=naics_code))

        except Exception:
            pass

        return qs.filter(NAICS=naics_code)
class CustomerFilter(FilterSet):
    accounts = RelatedFilter('AccountFilter',
                             field_name='account',
                             queryset=Account.objects.all())

    class Meta:
        model = Customer
        fields = ['name', 'ssn', 'dob', 'accounts']
Example #27
0
class ContractBaseFilter(FilterSet, metaclass=MetaFilterSet):

    _fuzzy_text = ('piid', 'base_piid', 'NAICS', 'PSC', 'point_of_contact',
                   'vendor_phone')
    _number = ('id', 'obligated_amount')
    _date_time = ('date_signed', 'completion_date')

    status = RelatedFilter(ContractStatusFilter)
    pricing_type = RelatedFilter(PricingStructureFilter)

    agency = RelatedFilter(AgencyFilter)
    vendor_location = RelatedFilter(LocationFilter)
    place_of_performance = RelatedFilter(PlaceOfPerformanceFilter)

    class Meta:
        model = contracts.Contract
        fields = ()
class AccountFilter(FilterSet):
    customer = RelatedFilter('CustomerFilter',
                             to_field_name='ssn',
                             queryset=Customer.objects.all())

    class Meta:
        model = Account
        fields = ['customer', 'type', 'name']
class NoteFilterWithRelatedDifferentName(FilterSet):
    author = RelatedFilter(UserFilterWithDifferentName,
                           name='author',
                           queryset=User.objects.all())

    class Meta:
        model = Note
        fields = []
class NoteFilterWithRelatedAlias(FilterSet):
    author = RelatedFilter(UserFilterWithAlias,
                           field_name='author',
                           queryset=User.objects.all())

    class Meta:
        model = Note
        fields = []