class UserFilter(FilterSet): date_joined = filters.AllLookupsFilter(name='date_joined') username = filters.AllLookupsFilter(name='username') class Meta: model = User fields = ('date_joined', 'username', 'first_name', 'last_name')
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})
class RegionFilter(GeoFilterSet, FilterSet): slug = filters.AllLookupsFilter(name='slug') geom = filters.AllLookupsFilter(name='geom') settings = filters.RelatedFilter(RegionSettingsFilter, name='regionsettings') class Meta: model = Region fields = ('slug', )
class MapFilter(GeoFilterSet, FilterSet): points = filters.AllLookupsFilter(name='points') lines = filters.AllLookupsFilter(name='lines') polys = filters.AllLookupsFilter(name='polys') page = filters.RelatedFilter(PageFilter, name='page') region = filters.RelatedFilter(RegionFilter, name='region') length = filters.AllLookupsFilter(name='length') class Meta: model = MapData
class RedirectFilter(GeoFilterSet, FilterSet): source = filters.AllLookupsFilter(name='source') destination = filters.RelatedFilter(PageFilter, name='destination') region = filters.RelatedFilter(RegionFilter, name='region') class Meta: model = Redirect
class FileFilter(GeoFilterSet, FilterSet): slug = filters.AllLookupsFilter(name='slug') region = filters.RelatedFilter(RegionFilter, name='region') class Meta: model = PageFile fields = ('name', 'slug')
class NoteFilterWithRelatedAll(DRFFilterSet): title = filters.AllLookupsFilter() author = filters.RelatedFilter(UserFilterWithAll) class Meta: model = Note fields = []
class BlogPostOverrideFilter(FilterSet): declared_publish_date__isnull = filters.NumberFilter(field_name='publish_date', lookup_expr='isnull') all_declared_publish_date = filters.AllLookupsFilter(field_name='publish_date') class Meta: model = BlogPost fields = {'publish_date': '__all__', }
class F(FilterSet): id = filters.AllLookupsFilter() id__in = f class Meta: model = Note fields = []
class NoteFilterWithRelatedAll(DRFFilterSet): title = filters.AllLookupsFilter() author = filters.RelatedFilter(UserFilterWithAll, queryset=User.objects.all()) class Meta: model = Note fields = []
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})
class UserFilter(FilterSet): username = filters.CharFilter(name='username') email = filters.CharFilter(name='email') last_login = filters.AllLookupsFilter() is_active = filters.BooleanFilter(name='is_active') class Meta: model = User
class PostFilter(FilterSet): # Used for Related filter and Filter.method regression tests note = RelatedFilter(NoteFilterWithRelatedAll, name='note') date_published = filters.AllLookupsFilter() is_published = filters.BooleanFilter(name='date_published', method='filter_is_published') class Meta: model = Post 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})
class RegionSettingsFilter(GeoFilterSet, FilterSet): region_center = filters.AllLookupsFilter(name='region_center') class Meta: model = RegionSettings fields = ('default_language', )
class F(FilterSet): id = filters.AllLookupsFilter() class Meta: model = Note
class F(FilterSet): author = filters.AllLookupsFilter(field_name='author__last_name') class Meta: model = Note fields = []
class Mixin(FilterSet): title = filters.AllLookupsFilter()
class UserFilterWithAll(DRFFilterSet): username = filters.AllLookupsFilter() class Meta: model = User fields = []
class HistoricalMapFilter(HistoricalFilter, MapFilter): polys = filters.AllLookupsFilter(name='polys') class Meta: model = MapData.versions.model
class F(FilterSet): field = filters.AllLookupsFilter()
class HistoricalFilter(FilterSet): history_date = filters.AllLookupsFilter(name='history_date') history_type = filters.AllLookupsFilter(name='history_type') history_user = filters.RelatedFilter(UserFilter, name='history_user') history_user_ip = filters.AllLookupsFilter(name='history_user_ip')