class OpinionFilter(FilterSet): # Cannot to reference to opinions_cited here, due to it being a self join, # which is not supported (possibly for good reasons?) cluster = filters.RelatedFilter('cl.search.filters.OpinionClusterFilter', queryset=OpinionCluster.objects.all()) author = filters.RelatedFilter( 'cl.people_db.filters.PersonFilter', queryset=Person.objects.all(), ) joined_by = filters.RelatedFilter( 'cl.people_db.filters.PersonFilter', queryset=Person.objects.all(), ) type = filters.MultipleChoiceFilter(choices=Opinion.OPINION_TYPES) class Meta: model = Opinion fields = { 'id': INTEGER_LOOKUPS, 'date_modified': DATETIME_LOOKUPS, 'date_created': DATETIME_LOOKUPS, 'sha1': ['exact'], 'extracted_by_ocr': ['exact'], 'per_curiam': ['exact'], }
class OpinionClusterFilter(FilterSet): docket = filters.RelatedFilter(DocketFilter, queryset=Docket.objects.all()) panel = filters.RelatedFilter( "cl.people_db.filters.PersonFilter", queryset=Person.objects.all() ) non_participating_judges = filters.RelatedFilter( "cl.people_db.filters.PersonFilter", queryset=Person.objects.all() ) sub_opinions = filters.RelatedFilter( OpinionFilter, queryset=Opinion.objects.all() ) source = filters.MultipleChoiceFilter(choices=SOURCES) citations = filters.RelatedFilter( CitationFilter, queryset=Citation.objects.all() ) class Meta: model = OpinionCluster fields = { "id": ["exact"], "date_created": DATETIME_LOOKUPS, "date_modified": DATETIME_LOOKUPS, "date_filed": DATE_LOOKUPS, "scdb_id": ["exact"], "scdb_decision_direction": ["exact"], "scdb_votes_majority": INTEGER_LOOKUPS, "scdb_votes_minority": INTEGER_LOOKUPS, "citation_count": INTEGER_LOOKUPS, "precedential_status": ["exact"], "date_blocked": DATE_LOOKUPS, "blocked": ["exact"], }
class SocialFeedPostFilterSet(df_filters.FilterSet): # is_tweet = df_filters.BooleanFilter() # is_facebook_post = df_filters.BooleanFilter() # is_instagram_post = df_filters.BooleanFilter() social_media_type = df_filters.MultipleChoiceFilter( choices=SOCIAL_FEED_POSTS_CHOICES) class Meta: model = SocialFeedPost fields = ['social_media_type']
class PersonFilter(filters.FilterSet): # filter_overrides = default_filter_overrides educations = filters.RelatedFilter(EducationFilter, name='educations') political_affiliations = filters.RelatedFilter( PoliticalAffiliationFilter, name='political_affiliations') sources = filters.RelatedFilter(SourceFilter, name='sources') aba_ratings = filters.RelatedFilter(ABARatingFilter, name='aba_ratings') positions = filters.RelatedFilter(PositionFilter, name='positions') opinion_clusters_participating_judges = filters.RelatedFilter( 'cl.search.filters.OpinionClusterFilter', 'opinion_clusters_participating_judges', ) opinion_clusters_non_participating_judges = filters.RelatedFilter( 'cl.search.filters.OpinionClusterFilter', 'opinion_clusters_non_participating_judges', ) opinions_written = filters.RelatedFilter( 'cl.search.filters.OpinionFilter', name='opinions_written', ) opinions_joined = filters.RelatedFilter( 'cl.search.filters.OpinionFilter', name='opinions_joined', ) race = filters.MultipleChoiceFilter( choices=Race.RACES, action=lambda queryset, value: queryset.filter(race__race__in=value) ) class Meta: model = Person fields = { 'id': ['exact'], 'date_created': DATETIME_LOOKUPS, 'date_modified': DATETIME_LOOKUPS, 'date_dob': DATE_LOOKUPS, 'date_dod': DATE_LOOKUPS, 'name_first': BASIC_TEXT_LOOKUPS, 'name_middle': BASIC_TEXT_LOOKUPS, 'name_last': BASIC_TEXT_LOOKUPS, 'name_suffix': BASIC_TEXT_LOOKUPS, 'is_alias_of': ['exact'], 'fjc_id': ['exact'], 'ftm_eid': ['exact'], 'dob_city': BASIC_TEXT_LOOKUPS, 'dob_state': BASIC_TEXT_LOOKUPS, 'dod_city': BASIC_TEXT_LOOKUPS, 'dod_state': BASIC_TEXT_LOOKUPS, 'gender': ['exact'], }
class OpinionClusterFilter(FilterSet): docket = filters.RelatedFilter( DocketFilter, queryset=Docket.objects.all(), ) panel = filters.RelatedFilter( 'cl.people_db.filters.PersonFilter', queryset=Person.objects.all(), ) non_participating_judges = filters.RelatedFilter( 'cl.people_db.filters.PersonFilter', queryset=Person.objects.all(), ) sub_opinions = filters.RelatedFilter( OpinionFilter, queryset=Opinion.objects.all(), ) source = filters.MultipleChoiceFilter(choices=SOURCES) citations = filters.RelatedFilter( CitationFilter, queryset=Citation.objects.all(), ) class Meta: model = OpinionCluster fields = { 'id': ['exact'], 'date_created': DATETIME_LOOKUPS, 'date_modified': DATETIME_LOOKUPS, 'date_filed': DATE_LOOKUPS, 'federal_cite_one': ['exact'], 'federal_cite_two': ['exact'], 'federal_cite_three': ['exact'], 'state_cite_one': ['exact'], 'state_cite_two': ['exact'], 'state_cite_three': ['exact'], 'state_cite_regional': ['exact'], 'specialty_cite_one': ['exact'], 'scotus_early_cite': ['exact'], 'lexis_cite': ['exact'], 'westlaw_cite': ['exact'], 'neutral_cite': ['exact'], 'scdb_id': ['exact'], 'scdb_decision_direction': ['exact'], 'scdb_votes_majority': INTEGER_LOOKUPS, 'scdb_votes_minority': INTEGER_LOOKUPS, 'citation_count': INTEGER_LOOKUPS, 'precedential_status': ['exact'], 'date_blocked': DATE_LOOKUPS, 'blocked': ['exact'], }
class AudioFilter(FilterSet): docket = filters.RelatedFilter(DocketFilter, queryset=Docket.objects.all()) source = filters.MultipleChoiceFilter(choices=SOURCES) class Meta: model = Audio fields = { "id": ["exact"], "date_modified": DATETIME_LOOKUPS, "date_created": DATETIME_LOOKUPS, "sha1": ["exact"], "blocked": ["exact"], "date_blocked": DATE_LOOKUPS, "processing_complete": ["exact"], }
class AudioFilter(filters.FilterSet): docket = filters.RelatedFilter(DocketFilter, name='docket') source = filters.MultipleChoiceFilter(choices=SOURCES, ) class Meta: model = Audio fields = { 'id': ['exact'], 'date_modified': DATETIME_LOOKUPS, 'date_created': DATETIME_LOOKUPS, 'sha1': ['exact'], 'blocked': ['exact'], 'date_blocked': DATE_LOOKUPS, 'processing_complete': ['exact'], }
class AudioFilter(FilterSet): docket = filters.RelatedFilter(DocketFilter, queryset=Docket.objects.all()) source = filters.MultipleChoiceFilter(choices=SOURCES) class Meta: model = Audio fields = { 'id': ['exact'], 'date_modified': DATETIME_LOOKUPS, 'date_created': DATETIME_LOOKUPS, 'sha1': ['exact'], 'blocked': ['exact'], 'date_blocked': DATE_LOOKUPS, 'processing_complete': ['exact'], }
class CourtFilter(FilterSet): dockets = filters.RelatedFilter('cl.search.filters.DocketFilter') jurisdiction = filters.MultipleChoiceFilter(choices=JURISDICTIONS) class Meta: model = Court fields = { 'id': ['exact'], 'date_modified': DATETIME_LOOKUPS, 'in_use': ['exact'], 'has_opinion_scraper': ['exact'], 'has_oral_argument_scraper': ['exact'], 'position': INTEGER_LOOKUPS, 'start_date': DATE_LOOKUPS, 'end_date': DATE_LOOKUPS, }
class CourtFilter(FilterSet): dockets = filters.RelatedFilter( "cl.search.filters.DocketFilter", queryset=Docket.objects.all() ) jurisdiction = filters.MultipleChoiceFilter(choices=Court.JURISDICTIONS) class Meta: model = Court fields = { "id": ["exact"], "date_modified": DATETIME_LOOKUPS, "in_use": ["exact"], "has_opinion_scraper": ["exact"], "has_oral_argument_scraper": ["exact"], "position": INTEGER_LOOKUPS, "start_date": DATE_LOOKUPS, "end_date": DATE_LOOKUPS, }
class PersonFilter(FilterSet): educations = filters.RelatedFilter( EducationFilter, queryset=Education.objects.all(), ) political_affiliations = filters.RelatedFilter( PoliticalAffiliationFilter, queryset=PoliticalAffiliation.objects.all(), ) sources = filters.RelatedFilter( SourceFilter, queryset=Source.objects.all(), ) aba_ratings = filters.RelatedFilter( ABARatingFilter, queryset=ABARating.objects.all(), ) positions = filters.RelatedFilter( PositionFilter, queryset=Position.objects.all(), ) opinion_clusters_participating_judges = filters.RelatedFilter( "cl.search.filters.OpinionClusterFilter", "opinion_clusters_participating_judges", queryset=OpinionCluster.objects.all(), ) opinion_clusters_non_participating_judges = filters.RelatedFilter( "cl.search.filters.OpinionClusterFilter", "opinion_clusters_non_participating_judges", queryset=OpinionCluster.objects.all(), ) opinions_written = filters.RelatedFilter( "cl.search.filters.OpinionFilter", queryset=Opinion.objects.all(), ) opinions_joined = filters.RelatedFilter( "cl.search.filters.OpinionFilter", queryset=Opinion.objects.all(), ) race = filters.MultipleChoiceFilter(choices=Race.RACES, method="filter_race") def filter_race(self, queryset, name, value): return queryset.filter(race__race__in=value) class Meta: model = Person fields = { "id": ["exact"], "date_created": DATETIME_LOOKUPS, "date_modified": DATETIME_LOOKUPS, "date_dob": DATE_LOOKUPS, "date_dod": DATE_LOOKUPS, "name_first": BASIC_TEXT_LOOKUPS, "name_middle": BASIC_TEXT_LOOKUPS, "name_last": BASIC_TEXT_LOOKUPS, "name_suffix": BASIC_TEXT_LOOKUPS, "is_alias_of": ["exact"], "fjc_id": ["exact"], "ftm_eid": ["exact"], "dob_city": BASIC_TEXT_LOOKUPS, "dob_state": BASIC_TEXT_LOOKUPS, "dod_city": BASIC_TEXT_LOOKUPS, "dod_state": BASIC_TEXT_LOOKUPS, "gender": ["exact"], }
class ProjectFilter(filters.FilterSet): name = filters.AllLookupsFilter(field_name='name') status = filters.MultipleChoiceFilter(choices=ProjectStatus.STATUSES) country = filters.RelatedFilter( 'api.filters.locations.CountryFilter', queryset=Country.objects.all(), field_name='countries', ) curated_project_collections = filters.ModelMultipleChoiceFilter( queryset=CuratedProjectCollection.objects.all(), field_name='curatedprojectcollection') countries = filters.ModelMultipleChoiceFilter( queryset=Country.objects.all(), field_name='countries') geo__identifier = filters.CharFilter(field_name='geo__identifier') region = filters.RelatedFilter('api.filters.locations.RegionFilter', queryset=Region.objects.all(), field_name='regions') regions = filters.ModelMultipleChoiceFilter(queryset=Region.objects.all(), field_name='regions') initiatives = filters.RelatedFilter(InitiativeFilter, queryset=Initiative.objects.all(), field_name='initiatives') initiatives__count = filters.CharFilter() initiatives__count__gt = filters.CharFilter( method='filter_initiatives__count__gt') initiatives__count__gte = filters.CharFilter( method='filter_initiatives__count__gte') initiatives__count__lt = filters.CharFilter( method='filter_initiatives__count__lt') initiatives__count__lte = filters.CharFilter( method='filter_initiatives__count__lte') infrastructure_type = filters.ModelMultipleChoiceFilter( queryset=InfrastructureType.objects.all()) funding = filters.RelatedFilter(ProjectFundingFilter, queryset=ProjectFunding.objects.all(), field_name='funding', distinct=True) contractors = filters.RelatedFilter('api.filters.facts.OrganizationFilter', queryset=Organization.objects.all(), field_name='contractors') consultants = filters.RelatedFilter('api.filters.facts.OrganizationFilter', queryset=Organization.objects.all(), field_name='consultants') implementers = filters.RelatedFilter( 'api.filters.facts.OrganizationFilter', queryset=Organization.objects.all(), field_name='implementers') operators = filters.RelatedFilter('api.filters.facts.OrganizationFilter', queryset=Organization.objects.all(), field_name='operators') fieldbook_id = filters.CharFilter( field_name='extra_data__dictionary__project_id', lookup_expr='exact', distinct=True) total_cost_currency = filters.ChoiceFilter(choices=CURRENCY_CHOICES) def _filter_initiatives_count(self, queryset, value, filter_expression): if value: lookup = {filter_expression: value} return queryset.annotate( num_initiatives=Count('initiatives')).filter(**lookup) return queryset def filter_initiatives__count(self, queryset, name, value): return self._filter_initiatives_count(queryset, value, 'num_initiatives') def filter_initiatives__count__gt(self, queryset, name, value): return self._filter_initiatives_count(queryset, value, 'num_initiatives__gt') def filter_initiatives__count__gte(self, queryset, name, value): return self._filter_initiatives_count(queryset, value, 'num_initiatives__gte') def filter_initiatives__count__lt(self, queryset, name, value): return self._filter_initiatives_count(queryset, value, 'num_initiatives__lt') def filter_initiatives__count__lte(self, queryset, name, value): return self._filter_initiatives_count(queryset, value, 'num_initiatives__lte') total_cost_amount = filters.CharFilter() total_cost_amount__gt = filters.CharFilter( method='filter_total_cost_amount__gt') total_cost_amount__gte = filters.CharFilter( method='filter_total_cost_amount__gte') total_cost_amount__lt = filters.CharFilter( method='filter_total_cost_amount__lt') total_cost_amount__lte = filters.CharFilter( method='filter_total_cost_amount__lte') def __filter__total_cost_amount(self, queryset, name, value, modifier=None): currency_field = 'currency' amount_field = name.replace('total_cost_amount', 'total_cost') currency_field = name.replace('total_cost_amount', 'total_cost_currency__iexact') if modifier: currency_field = currency_field.replace(modifier, '').rstrip('_') value = value.strip() value_list = value.split(' ') if len(value_list) == 2: lookup = { amount_field: value_list[0], currency_field: value_list[1] } return queryset.filter(**lookup) return queryset.none() def filter_total_cost_amount(self, queryset, name, value): return self.__filter__total_cost_amount(queryset, name, value) def filter_total_cost_amount__gt(self, queryset, name, value): return self.__filter__total_cost_amount(queryset, name, value, modifier='gt') def filter_total_cost_amount__gte(self, queryset, name, value): return self.__filter__total_cost_amount(queryset, name, value, modifier='gte') def filter_total_cost_amount__lt(self, queryset, name, value): return self.__filter__total_cost_amount(queryset, name, value, modifier='lt') def filter_total_cost_amount__lte(self, queryset, name, value): return self.__filter__total_cost_amount(queryset, name, value, modifier='lte') class Meta: model = Project fields = { 'total_cost': ['isnull', 'exact', 'gt', 'lt', 'gte', 'lte'], 'planned_completion_year': ['isnull', 'exact', 'gt', 'lt', 'gte', 'lte'], 'planned_completion_month': ['isnull', 'exact', 'gt', 'lt', 'gte', 'lte'], 'planned_completion_day': ['isnull', 'exact', 'gt', 'lt', 'gte', 'lte'], 'start_year': ['isnull', 'exact', 'gt', 'lt', 'gte', 'lte'], 'start_month': ['isnull', 'exact', 'gt', 'lt', 'gte', 'lte'], 'start_day': ['isnull', 'exact', 'gt', 'lt', 'gte', 'lte'], 'commencement_year': ['isnull', 'exact', 'gt', 'lt', 'gte', 'lte'], 'commencement_month': ['isnull', 'exact', 'gt', 'lt', 'gte', 'lte'], 'commencement_day': ['isnull', 'exact', 'gt', 'lt', 'gte', 'lte'], }
class PersonFilter(FilterSet): educations = filters.RelatedFilter( EducationFilter, queryset=Education.objects.all(), ) political_affiliations = filters.RelatedFilter( PoliticalAffiliationFilter, queryset=PoliticalAffiliation.objects.all(), ) sources = filters.RelatedFilter( SourceFilter, queryset=Source.objects.all(), ) aba_ratings = filters.RelatedFilter( ABARatingFilter, queryset=ABARating.objects.all(), ) positions = filters.RelatedFilter( PositionFilter, queryset=Position.objects.all(), ) opinion_clusters_participating_judges = filters.RelatedFilter( 'cl.search.filters.OpinionClusterFilter', 'opinion_clusters_participating_judges', queryset=OpinionCluster.objects.all(), ) opinion_clusters_non_participating_judges = filters.RelatedFilter( 'cl.search.filters.OpinionClusterFilter', 'opinion_clusters_non_participating_judges', queryset=OpinionCluster.objects.all(), ) opinions_written = filters.RelatedFilter( 'cl.search.filters.OpinionFilter', queryset=Opinion.objects.all(), ) opinions_joined = filters.RelatedFilter( 'cl.search.filters.OpinionFilter', queryset=Opinion.objects.all(), ) race = filters.MultipleChoiceFilter( choices=Race.RACES, method='filter_race', ) def filter_race(self, queryset, name, value): return queryset.filter(race__race__in=value) class Meta: model = Person fields = { 'id': ['exact'], 'date_created': DATETIME_LOOKUPS, 'date_modified': DATETIME_LOOKUPS, 'date_dob': DATE_LOOKUPS, 'date_dod': DATE_LOOKUPS, 'name_first': BASIC_TEXT_LOOKUPS, 'name_middle': BASIC_TEXT_LOOKUPS, 'name_last': BASIC_TEXT_LOOKUPS, 'name_suffix': BASIC_TEXT_LOOKUPS, 'is_alias_of': ['exact'], 'fjc_id': ['exact'], 'ftm_eid': ['exact'], 'dob_city': BASIC_TEXT_LOOKUPS, 'dob_state': BASIC_TEXT_LOOKUPS, 'dod_city': BASIC_TEXT_LOOKUPS, 'dod_state': BASIC_TEXT_LOOKUPS, 'gender': ['exact'], }