Esempio n. 1
0
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'],
        }
Esempio n. 2
0
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"],
        }
Esempio n. 3
0
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']
Esempio n. 4
0
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'],
        }
Esempio n. 5
0
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'],
        }
Esempio n. 6
0
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"],
        }
Esempio n. 7
0
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'],
        }
Esempio n. 8
0
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'],
        }
Esempio n. 9
0
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,
        }
Esempio n. 10
0
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,
        }
Esempio n. 11
0
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"],
        }
Esempio n. 12
0
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'],
        }
Esempio n. 13
0
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'],
        }