Exemplo n.º 1
0
class TasksFilter(filters.FilterSet):
    id = filters.NumberFilter(name='id', lookup_type='exact')
    parent_task = filters.NumberFilter(name='parent_task', lookup_type='exact')
    type = filters.CharFilter(name='type', lookup_type='icontains')
    status = filters.CharFilter(name='status', lookup_type='icontains')
    manager_comment = filters.CharFilter(name='manager_comment',
                                         lookup_type='icontains')
    is_demo = filters.BooleanFilter(name='is_demo', lookup_type='exact')
    is_active = filters.BooleanFilter(name='is_active', lookup_type='exact')
    created_by = filters.NumberFilter(name='created_by', lookup_type='exact')

    project = filters.NumberFilter(name='project', lookup_type='exact')
    passage = filters.NumberFilter(name='passage', lookup_type='exact')
    annotator = filters.NumberFilter(name='annotator', lookup_type='exact')

    class Meta:
        model = Tasks
        fields = {
            'id',
            'parent_task',
            'type',
            'status',
            'project',
            'passage',
            'annotator',
            'manager_comment',
            'is_demo',
            'created_by',
            'is_active',
        }
Exemplo n.º 2
0
class TeamMemberFilter(filters.FilterSet):
    user_id = filters.CharFilter(name='user_id')
    username = filters.CharFilter(name='username')
    is_partner = filters.BooleanFilter(name='is_partner')
    is_associate = filters.BooleanFilter(name='is_associate')
    email = filters.CharFilter(name='email')
    phone = filters.CharFilter(name='phone')
    first_name = filters.CharFilter(name='first_name')
    last_name = filters.CharFilter(name='last_name')
    bio = filters.CharFilter(name='bio')
    title = filters.CharFilter(name='title')

    class Meta:
        model = TeamMember
        fields = [
            'id',
            'user_id',
            'username',
            'is_partner',
            'is_associate',
            'email',
            'phone',
            'first_name',
            'last_name',
            'bio',
            'title',
        ]
Exemplo n.º 3
0
class AbsenceCategoryFilter(filters.FilterSet):
    name = filters.AllLookupsFilter()

    created_at = filters.DateFilter()
    created__gte = filters.DateFilter(name='created_at', lookup_expr='gte')
    created__lte = filters.DateFilter(name='created_at', lookup_expr='lte')
    created__gt = filters.DateFilter(name='created_at', lookup_expr='gt')
    created__lt = filters.DateFilter(name='created_at', lookup_expr='lt')

    billable = filters.BooleanFilter()
    active = filters.BooleanFilter()

    class Meta:
        model = AbsenceCategory
Exemplo n.º 4
0
class ClientFilter(UserProfileFilter):
    bid_statistics = filters.RelatedFilter(UserBidStatisticsFilter, name="bid_statistics", queryset=UserBidStatistics.objects.all())

    is_bidding = filters.BooleanFilter(name="bidlist", method="filter_is_bidding")
    is_in_panel = filters.BooleanFilter(name="bidlist", method="filter_is_in_panel")
    is_on_post = filters.BooleanFilter(name="bidlist", method="filter_is_on_post")
    is_bidding_no_handshake = filters.BooleanFilter(name="bidlist", method="filter_is_bidding_no_handshake")

    def filter_is_bidding(self, queryset, name, value):
        value = bool(value)
        if value:
            return queryset.exclude(bidlist=None)
        else:
            return queryset.filter(bidlist=None)

    def filter_is_in_panel(self, queryset, name, value):
        value = bool(value)
        if value:
            return queryset.filter(bidlist__status=Bid.Status.in_panel)
        else:
            return queryset.exclude(bidlist__status=Bid.Status.in_panel)

    def filter_is_on_post(self, queryset, name, value):
        value = bool(value)
        if value:
            return queryset.exclude(assignments__current_for_position=None)
        else:
            return queryset.filter(assignments__current_for_position=None)

    def filter_is_bidding_no_handshake(self, queryset, name, value):
        value = bool(value)
        if value:
            return queryset.exclude(bidlist=None).filter(bidlist__handshake_offered_date=None).distinct()
        else:
            return queryset.exclude(bidlist=None).exclude(bidlist__handshake_offered_date=None).distinct()

    # Full text search across multiple fields
    q = filters.CharFilter(name="user", method=full_text_search(
        fields=[
            "user__first_name",
            "user__last_name",
            "user__username",
            "skills__code",
            "skills__description",
            "skills__cone__name",
            "language_qualifications__language__short_description",
            "primary_nationality__name",
            "secondary_nationality__name"
        ]
    ))
Exemplo n.º 5
0
class OrganizationFilter(filters.FilterSet):
    bureau_organization = filters.RelatedFilter(
        'talentmap_api.organization.filters.OrganizationFilter',
        name='bureau_organization',
        queryset=Organization.objects.all())
    parent_organization = filters.RelatedFilter(
        'talentmap_api.organization.filters.OrganizationFilter',
        name='parent_organization',
        queryset=Organization.objects.all())
    location = filters.RelatedFilter(
        'talentmap_api.organization.filters.LocationFilter',
        name='location',
        queryset=Location.objects.all())

    # Name here must be a valid field, but it is ignored when overriden by the method parameter
    is_available = filters.BooleanFilter(
        name="bureau_positions",
        method=multi_field_filter(
            fields=["bureau_positions", "organization_positions"],
            lookup_expr="isnull",
            exclude=True))

    class Meta:
        model = Organization
        fields = {
            "code": ALL_TEXT_LOOKUPS,
            "long_description": ALL_TEXT_LOOKUPS,
            "short_description": ALL_TEXT_LOOKUPS,
            "is_bureau": ['exact'],
            "is_regional": ['exact'],
            "bureau_organization": FOREIGN_KEY_LOOKUPS,
            "parent_organization": FOREIGN_KEY_LOOKUPS,
            "location": FOREIGN_KEY_LOOKUPS
        }
Exemplo n.º 6
0
class TagFilter(filters.FilterSet):
    keyword = filters.CharFilter(label=_('Keyword'),
                                 name='keyword',
                                 method='filter_keyword')
    name = filters.CharFilter(lookup_expr='icontains')

    is_active = filters.BooleanFilter(label=_('Is Active'),
                                      name='is_active',
                                      method='filter_is_actvie')

    class Meta:
        model = models.Tag
        exclude = []

    def filter_is_actvie(self, queryset, name, value):
        ''' True(value=1), False(value=0)'''
        q = Q(slug='') | Q(name='') | Q(mytaggit_taggeditem_items__isnull=True)
        if value == 1:
            return queryset.exclude(q)
        elif value == 0:
            return queryset.filter(q)
        return queryset

    def filter_keyword(self, queryset, name, value):
        print("filter_keyword", name, value)
        # q = Q(slug='') | Q(name='') | Q(mytaggit_taggeditem_items__isnull=True)
        return value and queryset.filter(
            Q(name__icontains=value) | Q(slug__icontains=value)) or queryset
Exemplo n.º 7
0
class MessagingSettingsFilter(filters.FilterSet):
    user_id = filters.CharFilter(name='user_id')
    duplicate_private = filters.BooleanFilter(name='duplicate_private')

    class Meta:
        model = MessagingSettings
        fields = ['id', 'duplicate_private', 'user_id']
Exemplo n.º 8
0
class NotificationFilter(filters.FilterSet):
    class Meta:
        model = Notification
        fields = {
            'type': [
                'in',
                'exact',
            ],
            'title': [
                'contains',
            ],
            'content': [
                'contains',
            ],
            'related_article': [
                'in',
                'exact',
            ],
            'related_comment': [
                'in',
                'exact',
            ],
        }

    is_read = filters.BooleanFilter(
        name='is_read',
        label='조회 여부',
        method='get_is_read',
    )

    @staticmethod
    def get_is_read(queryset, name, value):
        return queryset.filter(notification_read_log_set__is_read=value, )
Exemplo n.º 9
0
class NotificationFilter(filters.FilterSet):

    unread = filters.BooleanFilter(field_name='unread')

    class Meta:
        model = Notification
        fields = ['unread']
Exemplo n.º 10
0
class GradeFilter(filters.FilterSet):
    is_available = filters.BooleanFilter(name="positions",
                                         lookup_expr="isnull",
                                         exclude=True)

    class Meta:
        model = Grade
        fields = {"code": ALL_TEXT_LOOKUPS}
Exemplo n.º 11
0
class SourcesFilter(filters.FilterSet):
    id = filters.NumberFilter(name='id', lookup_type='exact')
    text = filters.CharFilter(name='text', lookup_type='icontains')
    name = filters.CharFilter(name='name', lookup_type='icontains')
    is_default = filters.BooleanFilter(name='is_default', lookup_type='exact')
    is_active = filters.BooleanFilter(name='is_active', lookup_type='exact')
    created_by = filters.NumberFilter(name='created_by', lookup_type='exact')
    source = filters.NumberFilter(name='source', lookup_type='exact')

    class Meta:
        model = Sources
        fields = {
            'id',
            'text',
            'name',
            'created_by',
            'is_active',
        }
Exemplo n.º 12
0
class CategoriesFilter(filters.FilterSet):
    id = filters.NumberFilter(name='id', lookup_type='exact')
    name = filters.CharFilter(name='name', lookup_type='icontains')
    description = filters.CharFilter(name='description', lookup_type='icontains')
    tooltip = filters.CharFilter(name='tooltip', lookup_type='icontains')
    abbreviation = filters.CharFilter(name='abbreviation', lookup_type='exact')
    is_default = filters.BooleanFilter(name='is_default', lookup_type='exact')
    is_active = filters.BooleanFilter(name='is_active', lookup_type='exact')
    created_by = filters.NumberFilter(name='created_by', lookup_type='exact')
    class Meta:
        model = Categories
        fields = {
            'id',
            'name',
            'description',
            'tooltip',
            'abbreviation',
            'is_default',
            'created_by',
            'is_active',
        }
Exemplo n.º 13
0
class TourOfDutyFilter(filters.FilterSet):
    is_available = filters.BooleanFilter(
        name="posts__positions", method=negate_boolean_filter("isnull"))

    class Meta:
        model = TourOfDuty
        fields = {
            "code": ALL_TEXT_LOOKUPS,
            "long_description": ALL_TEXT_LOOKUPS,
            "short_description": ALL_TEXT_LOOKUPS,
            "months": INTEGER_LOOKUPS
        }
Exemplo n.º 14
0
class EntityFilter(CollectionFilter):
    """Filter the Entity endpoint."""

    collections = filters.ModelChoiceFilter(queryset=Collection.objects.all())
    descriptor_completed = filters.BooleanFilter()
    tags = TagsFilter()

    class Meta(CollectionFilter.Meta):
        """Filter configuration."""

        model = Entity
        fields = BaseResolweFilter.Meta.fields + ['collections', 'descriptor_completed', 'tags']
Exemplo n.º 15
0
class LayersFilter(filters.FilterSet):
    id = filters.NumberFilter(name='id', lookup_type='exact')
    parent_layer_id = filters.NumberFilter(name='parent_layer_id', lookup_type='exact')
    name = filters.CharFilter(name='name', lookup_type='icontains')
    type = filters.CharFilter(name='type', lookup_type='icontains')
    description = filters.CharFilter(name='description', lookup_type='icontains')
    tooltip = filters.CharFilter(name='tooltip', lookup_type='icontains')
    is_default = filters.BooleanFilter(name='is_default', lookup_type='exact')
    is_active = filters.BooleanFilter(name='is_active', lookup_type='exact')
    created_by = filters.NumberFilter(name='created_by', lookup_type='exact')
    class Meta:
        model = Layers
        fields = {
            'id',
            'parent_layer_id',
            'name',
            'type',
            'description',
            'tooltip',
            'is_default',
            'created_by',
            'is_active',
        }
Exemplo n.º 16
0
class LanguageFilter(filters.FilterSet):
    # Convenience filter of "name" which will perform a contains lookup on the description
    name = filters.CharFilter(name="long_description", lookup_expr="contains")

    is_available = filters.BooleanFilter(
        name="qualifications__positions",
        method=negate_boolean_filter("isnull"))

    class Meta:
        model = Language
        fields = {
            "code": ALL_TEXT_LOOKUPS,
            "long_description": ALL_TEXT_LOOKUPS,
            "short_description": ALL_TEXT_LOOKUPS
        }
Exemplo n.º 17
0
class ProcessFilter(BaseResolweFilter):
    """Filter the Process endpoint."""

    category = filters.CharFilter(name='category', lookup_expr='startswith')
    type = filters.CharFilter(name='type', lookup_expr='startswith')
    scheduling_class = filters.AllLookupsFilter()
    is_active = filters.BooleanFilter()

    class Meta(BaseResolweFilter.Meta):
        """Filter configuration."""

        model = Process
        fields = BaseResolweFilter.Meta.fields + [
            'category', 'type', 'scheduling_class', 'is_active'
        ]
Exemplo n.º 18
0
class PackageFilter(filters.FilterSet):
    id = filters.CharFilter(name='id')
    title = filters.CharFilter(name='title')
    fees = filters.CharFilter(name='fees')
    price = filters.CharFilter(name='price')
    is_available = filters.BooleanFilter(name='is_available')
    description = filters.CharFilter(name='description')
    state = filters.CharFilter(name='state')
    package_type = filters.CharFilter(name='package_type')

    class Meta:
        model = Package
        fields = ['id', 'title', 'fees', 'price', 
                  'is_available', 'description', 
                  'state', 'package_type', 'notes']
Exemplo n.º 19
0
class CourseFilter(filters.FilterSet):
    STATUS_CHOICES = [
        ('noarchiving', '不包含已归档'),
    ]
    STATUS_CHOICES.extend(list(Courseware.STATUS_CHOICES))
    status = filters.ChoiceFilter(choices=STATUS_CHOICES, method='filter_status')
    recommend = filters.BooleanFilter(field_name='recommend')

    def filter_status(self, queryset, name, value):
        if value == 'noarchiving':
            return queryset.exclude(status='已归档')
        return queryset

    class Meta:
        model = Courseware
        fields = ['status', 'recommend']
Exemplo n.º 20
0
class SkillFilter(filters.FilterSet):
    is_available = filters.BooleanFilter(name="positions",
                                         lookup_expr="isnull",
                                         exclude=True)
    cone = filters.RelatedFilter(
        'talentmap_api.position.filters.SkillConeFilter',
        name='cone',
        queryset=SkillCone.objects.all())

    class Meta:
        model = Skill
        fields = {
            "code": ALL_TEXT_LOOKUPS,
            "description": ALL_TEXT_LOOKUPS,
            "cone": FOREIGN_KEY_LOOKUPS
        }
Exemplo n.º 21
0
class PostFilter(filters.FilterSet):
    subs_only = filters.BooleanFilter(method='subs_only_filter')

    class Meta:
        model = Post
        fields = ['tags']

    def subs_only_filter(self, queryset, name, value):
        if not self.request.user:
            return queryset
        subscription_users = self.request.user.subscription_users.all()
        query = None
        for user in subscription_users:
            if query == None:
                query = Q(author=user)
            else:
                query = Q(author=user) | query
        return queryset.filter(query)
Exemplo n.º 22
0
class UsersFilter(filters.FilterSet):
    id = filters.NumberFilter(name='id', lookup_type='exact')
    first_name = filters.CharFilter(name='first_name', lookup_type='icontains')
    last_name = filters.CharFilter(name='last_name', lookup_type='icontains')
    email = filters.CharFilter(name='email', lookup_type='icontains')
    organization = filters.CharFilter(name='organization',
                                      lookup_type='icontains')
    affiliation = filters.CharFilter(name='affiliation',
                                     lookup_type='icontains')
    role = filters.CharFilter(name='role__name', lookup_type='exact')
    is_active = filters.BooleanFilter(name='is_active', lookup_type='exact')
    created_by = filters.NumberFilter(name='created_by', lookup_type='exact')

    class Meta:
        model = Users
        fields = {
            'id', 'first_name', 'last_name', 'email', 'organization',
            'affiliation', 'role__name', 'is_active', 'created_by'
        }
Exemplo n.º 23
0
class UnitFilter(filters.FilterSet):

    type = filters.RelatedFilter(UnitTypeFilter, field_name='type', queryset=models.UnitType.objects.all())
    site = filters.RelatedFilter(SiteFilter, field_name='site', queryset=models.Site.objects.all())
    date_acceptance_min = MinDateFilter(field_name="date_acceptance")
    date_acceptance_max = MaxDateFilter(field_name="date_acceptance")
    install_date_min = MinDateFilter(field_name="install_date")
    install_date_max = MaxDateFilter(field_name="install_date")
    active = filters.BooleanFilter()

    class Meta:
        model = models.Unit
        fields = {
            "number": ['exact', 'in'],
            "name": ['exact', 'icontains', 'contains', 'in'],
            "serial_number": ['exact', 'icontains', 'contains', 'in'],
            "location": ['exact', 'icontains', 'contains', 'in'],
            "install_date": ['exact'],
            "date_acceptance": ['exact'],
        }
Exemplo n.º 24
0
class InitiativeFilter(filters.FilterSet):
    name = filters.AllLookupsFilter(field_name='name')
    isnull = filters.BooleanFilter(field_name='pk', lookup_expr='isnull')

    geographic_scope = filters.RelatedFilter(
        'api.filters.locations.RegionFilter',
        queryset=Country.objects.all(),
        field_name='geographic_scope')

    principal_agent = filters.RelatedFilter(
        'api.filters.facts.OrganizationFilter',
        queryset=Organization.objects.all(),
        field_name='principal_agent')

    class Meta:
        model = Initiative
        fields = {
            'founding_year': '__all__',
            'founding_month': '__all__',
            'founding_day': '__all__',
        }
Exemplo n.º 25
0
class CaseFilter(filters.FilterSet):
    """Filter cases on the "expired" field."""

    expired = filters.BooleanFilter(method="filter_expired",
                                    label=gettext("Udgået"))
    case_worker = filters.RelatedFilter(
        UserForCaseFilter,
        field_name="case_worker",
        label=gettext("Sagsbehandler"),
        queryset=User.objects.all(),
    )

    class Meta:
        model = Case
        fields = "__all__"

    def filter_expired(self, queryset, name, value):
        """Filter out cases according to value."""
        if value:
            return queryset.expired()
        else:
            return queryset.ongoing()
Exemplo n.º 26
0
class PostFilter(filters.FilterSet):
    tour_of_duty = filters.RelatedFilter(TourOfDutyFilter,
                                         name='tour_of_duty',
                                         queryset=TourOfDuty.objects.all())
    location = filters.RelatedFilter(LocationFilter,
                                     name='location',
                                     queryset=Location.objects.all())

    is_available = filters.BooleanFilter(name="positions",
                                         lookup_expr="isnull",
                                         exclude=True)

    # Full text search across multiple fields
    q = filters.CharFilter(name="position_number",
                           method=full_text_search(fields=[
                               "rest_relaxation_point",
                               "location__code",
                               "location__country__name",
                               "location__country__code",
                               "location__city",
                               "location__state",
                           ]))

    class Meta:
        model = Post
        fields = {
            "cost_of_living_adjustment": INTEGER_LOOKUPS,
            "differential_rate": INTEGER_LOOKUPS,
            "danger_pay": INTEGER_LOOKUPS,
            "rest_relaxation_point": ALL_TEXT_LOOKUPS,
            "has_consumable_allowance": ["exact"],
            "has_service_needs_differential": ["exact"],
            "tour_of_duty": FOREIGN_KEY_LOOKUPS,
            "location": FOREIGN_KEY_LOOKUPS,
            "obc_id": ALL_TEXT_LOOKUPS,
        }
Exemplo n.º 27
0
class ProficiencyFilter(filters.FilterSet):
    at_least = filters.CharFilter(name="code", method="filter_at_least")
    at_most = filters.CharFilter(name="code", method="filter_at_most")

    is_available = filters.BooleanFilter(
        name="reading_qualifications",
        method=multi_field_filter(
            fields=["reading_qualifications", "spoken_qualifications"],
            lookup_expr="isnull",
            exclude=True))

    def filter_at_most(self, queryset, name, value):
        '''
        Evaluates if a proficiency is of at most a certain level
        F > X > P > 0 > 0+ . . . 5
        '''
        value = value.replace("plus", "+")
        index = Proficiency.RANKING.index(value) + 1
        valid_ranks = Proficiency.RANKING[:index]
        lookup = LOOKUP_SEP.join([name, "in"])
        return queryset.filter(Q(**{lookup: valid_ranks}))

    def filter_at_least(self, queryset, name, value):
        '''
        Evaluates if a proficiency is of at least a certain level
        F > X > P > 0 > 0+ . . . 5
        '''
        value = value.replace("plus", "+")
        index = Proficiency.RANKING.index(value)
        valid_ranks = Proficiency.RANKING[index:]
        lookup = LOOKUP_SEP.join([name, "in"])
        return queryset.filter(Q(**{lookup: valid_ranks}))

    class Meta:
        model = Proficiency
        fields = {"code": ALL_TEXT_LOOKUPS, "description": ALL_TEXT_LOOKUPS}
Exemplo n.º 28
0
class AthleteFilter(filters.FilterSet):
    session = filters.NumberFilter(name='split__timingsession', distinct=True)
    primary_team = filters.BooleanFilter(name='team__primary_team',
                                         distinct=True)
    team_name = filters.CharFilter(name='team__name')
    min_age = filters.MethodFilter()
    max_age = filters.MethodFilter()
    registered_to_session = filters.NumberFilter(name='timingsession',
                                                 distinct=True)

    class Meta:
        model = Athlete
        fields = ('session', 'gender', 'tfrrs_id', 'primary_team', 'team',
                  'team_name', 'min_age', 'max_age', 'registered_to_session')

    def filter_min_age(self, queryset, value):
        """Minimum age."""
        try:
            age = int(value)
        except ValueError:
            return queryset.none()
        athlete_ids = ([
            athlete.id for athlete in queryset if athlete.age() >= age
        ])
        return queryset.filter(pk__in=athlete_ids)

    def filter_max_age(self, queryset, value):
        """Maximum age."""
        try:
            age = int(value)
        except ValueError:
            return queryset.none()
        athlete_ids = ([
            athlete.id for athlete in queryset if athlete.age() <= age
        ])
        return queryset.filter(pk__in=athlete_ids)
Exemplo n.º 29
0
class QualificationFilter(filters.FilterSet):
    language = filters.RelatedFilter(LanguageFilter,
                                     name='language',
                                     queryset=Language.objects.all())
    reading_proficiency = filters.RelatedFilter(
        ProficiencyFilter,
        name='reading_proficiency',
        queryset=Proficiency.objects.all())
    spoken_proficiency = filters.RelatedFilter(
        ProficiencyFilter,
        name='spoken_proficiency',
        queryset=Proficiency.objects.all())

    is_available = filters.BooleanFilter(name="positions",
                                         lookup_expr="isnull",
                                         exclude=True)

    class Meta:
        model = Qualification
        fields = {
            "language": FOREIGN_KEY_LOOKUPS,
            "reading_proficiency": FOREIGN_KEY_LOOKUPS,
            "spoken_proficiency": FOREIGN_KEY_LOOKUPS
        }
Exemplo n.º 30
0
class ДокументFilter(filters.FilterSet):

    disqualification = filters.BooleanFilter(name='СвЮЛ__СведДолжнФЛ__СвДискв',
                                             lookup_expr='isnull')
    codeEduMethod = filters.CharFilter(
        name='СвЮЛ__СвОбрЮЛ__СпОбрЮЛ__КодСпОбрЮЛ')
    region = filters.CharFilter(name='СвЮЛ__СвАдресЮЛ__АдресРФ__КодРегион')
    search = filters.CharFilter(method='complex_search_filter')
    fio = filters.CharFilter(method='complex_fio_filter')
    reg_start_date = filters.DateFilter(name='СвЮЛ__ДатаОГРН',
                                        lookup_expr='gte')
    reg_end_date = filters.DateFilter(name='СвЮЛ__ДатаОГРН', lookup_expr='lte')
    state = filters.CharFilter(name='СвЮЛ__СвСтатус__Св_Статус__КодСтатусЮЛ')
    isactive = filters.BooleanFilter(method='is_active_filter')

    isAddrFalsity = filters.BooleanFilter(method='check_addr_falsity')
    isAddrChange = filters.BooleanFilter(method='check_addr_сhange')
    isemail = filters.BooleanFilter(method='check_email_filter')
    email = filters.CharFilter(name='СвЮЛ__СвАдрЭлПочты__E_mail',
                               lookup_expr='icontains')
    index = filters.CharFilter(name='СвЮЛ__СвАдресЮЛ__АдресРФ__Индекс',
                               lookup_expr='icontains')
    codeKLADR = filters.CharFilter(
        name='СвЮЛ__СвАдресЮЛ__АдресРФ__КодАдрКладр', lookup_expr='icontains')
    area = filters.CharFilter(
        name='СвЮЛ__СвАдресЮЛ__АдресРФ__Район__НаимРайон',
        lookup_expr='icontains')
    city = filters.CharFilter(
        name='СвЮЛ__СвАдресЮЛ__АдресРФ__Город__НаимГород',
        lookup_expr='icontains')
    locality = filters.CharFilter(
        name='СвЮЛ__СвАдресЮЛ__АдресРФ__НаселПункт__НаимНаселПункт',
        lookup_expr='icontains')
    street = filters.CharFilter(
        name='СвЮЛ__СвАдресЮЛ__АдресРФ__Улица__НаимУлица',
        lookup_expr='icontains')
    regNum = filters.CharFilter(name='СвЮЛ__СвОбрЮЛ__РегНом',
                                lookup_expr='icontains')
    startregDate = filters.DateFilter(name='СвЮЛ__СвОбрЮЛ__ДатаРег',
                                      lookup_expr='gte')
    endregDate = filters.DateFilter(name='СвЮЛ__СвОбрЮЛ__ДатаРег',
                                    lookup_expr='lte')
    isChartCapital = filters.BooleanFilter(method='check_isChartCapital')
    nameCapital = filters.CharFilter(name='СвЮЛ__СвУстКап__НаимВидКап',
                                     lookup_expr='icontains')
    summCap = filters.CharFilter(name='СвЮЛ__СвУстКап__СумКап',
                                 lookup_expr='lte')
    isSvUprOrg = filters.BooleanFilter(method='check_isSvUprOrg')
    nameUprOrg = filters.CharFilter(method='complex_UprOrg_filter')
    isSvWithoutAtt = filters.BooleanFilter(method='check_isSvWithoutAtt')
    fioWA = filters.CharFilter(method='complex_fioWA_filter')
    isFounder = filters.BooleanFilter(method='check_isFounder')
    isFRus = filters.BooleanFilter(method='check_isFRus')
    isFFl = filters.BooleanFilter(method='check_isFFl')
    isFGOS = filters.BooleanFilter(method='check_isFGOS')
    isFIn = filters.BooleanFilter(method='check_isFIn')

    okved = filters.CharFilter(method='okved_filter')
    okvedtxt = filters.CharFilter(method='okved_filter')

    numberL = filters.CharFilter(name='СвЮЛ__СвЛицензия__НомЛиц',
                                 lookup_expr='icontains',
                                 distinct=True)
    startLicense = filters.DateFilter(name='СвЮЛ__СвЛицензия__ДатаНачЛиц',
                                      lookup_expr='gte',
                                      distinct=True)
    endLicense = filters.DateFilter(name='СвЮЛ__СвЛицензия__ДатаОкончЛиц',
                                    lookup_expr='lte',
                                    distinct=True)

    nameL = filters.CharFilter(method='license_filter')

    grn = filters.CharFilter(name='СвЮЛ__СвЗапЕГРЮЛ__ГРН',
                             lookup_expr='icontains',
                             distinct=True)
    startRecord = filters.DateFilter(name='СвЮЛ__СвЗапЕГРЮЛ__ДатаЗап',
                                     lookup_expr='gte',
                                     distinct=True)
    endRecord = filters.DateFilter(name='СвЮЛ__СвЗапЕГРЮЛ__ДатаЗап',
                                   lookup_expr='lte',
                                   distinct=True)
    declarer = filters.CharFilter(method='complex_declarer_filter')
    documents = filters.CharFilter(
        name='СвЮЛ__СвЗапЕГРЮЛ__СведПредДок__НаимДок',
        lookup_expr='icontains',
        distinct=True)

    class Meta:
        model = Документ
        fields = {
            'id',
            'ИдДок',
            'СвЮЛ',
        }

    def complex_search_filter(self, qs, name, value):
        #print(qs.count())
        if value.find(' ') == -1:
            qs_ = qs.filter(
                Q(СвЮЛ__ОГРН__icontains=value) | Q(СвЮЛ__ИНН__icontains=value)
                | Q(СвЮЛ__СвНаимЮЛ__НаимЮЛСокр__icontains=value)
                | Q(СвЮЛ__СвНаимЮЛ__НаимЮЛПолн__icontains=value)).distinct()
        else:
            qs_ = qs.filter(СвЮЛ__СвНаимЮЛ__search_vector=SearchQuery(
                value, config='russian'))

        # qs2 = qs.filter(СвЮЛ__ИНН__icontains=value)
        #print(qs_.count())

        return qs_

    def complex_UprOrg_filter(self, qs, name, value):
        # print(qs.count())
        if value.find(' ') == -1:
            qs_ = qs.filter(
                Q(СвЮЛ__СвУпрОрг__НаимИННЮЛ__ОГРН__icontains=value)
                | Q(СвЮЛ__СвУпрОрг__НаимИННЮЛ__ИНН__icontains=value)
                | Q(СвЮЛ__СвУпрОрг__НаимИННЮЛ__НаимЮЛПолн__icontains=value)
            ).distinct()
        else:
            qs_ = qs.filter(СвЮЛ__СвУпрОрг__search_vector=SearchQuery(
                value, config='russian'))

        # qs2 = qs.filter(СвЮЛ__ИНН__icontains=value)
        # print(qs_.count())

        return qs_

    def complex_fio_filter(self, qs, name, value):
        #print(qs.count(), name, value)
        qs1 = qs.filter(
            Q(СвЮЛ__СвУчредит__УчрФЛ__СвФЛ__search_vector=SearchQuery(
                value, config='russian'))
            | Q(СвЮЛ__СвУчредит__УчрФЛ__СвФЛ__ИННФЛ__icontains=value)
            | Q(СвЮЛ__СвУчредит__УчрФЛ__СвДовУпрФЛ__СвФЛ__search_vector=
                SearchQuery(value, config='russian')) |
            Q(СвЮЛ__СвУчредит__УчрФЛ__СвДовУпрФЛ__СвФЛ__ИННФЛ__icontains=value)
        ).distinct()
        #qs2 = qs.filter(

        #qs_ = qs1.union(qs2).all()
        #print(qs1.count())
        #print(qs2.count())
        #print(qs_.count())

        #Q(СвЮЛ__СвУчредит__УчрФЛ__СвДовУпрФЛ__СвФЛ__search_vector=SearchQuery(value, config='russian')) |
        #Q(СвЮЛ__СвУчредит__УчрФЛ__ЛицоУпрНасл__СвФЛ__search_vector=SearchQuery(value, config='russian')) |
        #Q(СвЮЛ__СвУчредит__УчрРФСМО__СвФЛОсущПр__СвФЛ__search_vector=SearchQuery(value, config='russian')) |
        #Q(СвЮЛ__СвКФХПредш__СвФЛ__search_vector=SearchQuery(value, config='russian')) |
        #Q(СвЮЛ__СвКФХПреем__СвФЛ__search_vector=SearchQuery(value, config='russian')))

        #print(len(qs_))

        return qs1

    def complex_fioWA_filter(self, qs, name, value):
        # print(qs.count(), name, value)
        #qs1 = qs.filter(СвЮЛ__СведДолжнФЛ__СвФЛ__ИННФЛ__icontains=value)

        qs1 = qs.filter(
            Q(СвЮЛ__СведДолжнФЛ__СвФЛ__search_vector=SearchQuery(
                value, config='russian'))
            | Q(СвЮЛ__СведДолжнФЛ__СвФЛ__ИННФЛ__icontains=value)).distinct()

        return qs1

    def complex_declarer_filter(self, qs, name, value):
        # print(qs.count(), name, value)
        # qs1 = qs.filter(СвЮЛ__СведДолжнФЛ__СвФЛ__ИННФЛ__icontains=value)

        qs1 = qs.filter(
            Q(СвЮЛ__СвЗапЕГРЮЛ__СвЗФЛ__СвФЛ__СвФИОИНН__search_vector=
              SearchQuery(value, config='russian'))
            | Q(СвЮЛ__СвЗапЕГРЮЛ__СвЗФЛ__СвФЛ__СвФИОИНН__ИННФЛ__icontains=value
                )).distinct()

        return qs1

    def okved_filter(self, qs, name, value):
        # qs1 = qs.filter(СвЮЛ__СведДолжнФЛ__СвФЛ__ИННФЛ__icontains=value)

        qs1 = qs.filter(
            Q(СвЮЛ__СвОКВЭД__СвОКВЭДОсн__КодОКВЭД__exact=value)
            | Q(СвЮЛ__СвОКВЭД__СвОКВЭДДоп__КодОКВЭД__exact=value)
            | Q(СвЮЛ__СвОКВЭД__СвОКВЭДОсн__search_vector=SearchQuery(
                value, config='russian'))
            | Q(СвЮЛ__СвОКВЭД__СвОКВЭДДоп__search_vector=SearchQuery(
                value, config='russian'))).distinct()

        #Q(СвЮЛ__СвОКВЭД__СвОКВЭДОсн__КодОКВЭД__search_vector=SearchQuery(value, config='russian')) |

        return qs1

    def license_filter(self, qs, name, value):
        qs1 = qs.filter(СвЮЛ__СвЛицензия__search_vector=SearchQuery(
            value, config='russian')).distinct()

        return qs1

    def check_addr_сhange(self, qs, name, value):
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(
                СвЮЛ__СвАдресЮЛ__СвРешИзмМН__isnull=False).distinct()

        return qs_

    def check_addr_falsity(self, qs, name, value):
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(
                СвЮЛ__СвАдресЮЛ__СвНедАдресЮЛ__isnull=False).distinct()

        return qs_

    def check_email_filter(self, qs, name, value):
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(СвЮЛ__СвАдрЭлПочты__isnull=False).distinct()

        return qs_

    def check_isChartCapital(self, qs, name, value):
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(СвЮЛ__СвУстКап__isnull=False).distinct()

        return qs_

    def check_isSvUprOrg(self, qs, name, value):
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(СвЮЛ__СвУпрОрг__isnull=False).distinct()

        return qs_

    def check_isSvWithoutAtt(self, qs, name, value):
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(СвЮЛ__СведДолжнФЛ__isnull=False).distinct()

        return qs_

    def check_isFounder(self, qs, name, value):
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(СвЮЛ__СвУчредит__isnull=False).distinct()

        return qs_

    def check_isFRus(self, qs, name, value):
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(СвЮЛ__СвУчредит__УчрЮЛРос__isnull=False).distinct()

        return qs_

    def check_isFFl(self, qs, name, value):
        # print(name, value)
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(СвЮЛ__СвУчредит__УчрФЛ__isnull=False).distinct()

        return qs_

    def check_isFGOS(self, qs, name, value):
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(СвЮЛ__СвУчредит__УчрРФСМО__isnull=False).distinct()

        return qs_

    def check_isFIn(self, qs, name, value):
        if value is False:
            qs_ = qs
        else:
            qs_ = qs.filter(СвЮЛ__СвУчредит__УчрЮЛИн__isnull=False).distinct()

        return qs_

    def is_active_filter(self, qs, name, value):
        if value is False:
            qs_ = qs.filter(СвЮЛ__СвПрекрЮЛ__isnull=False).distinct()
        else:
            qs_ = qs.filter(СвЮЛ__СвПрекрЮЛ__isnull=True).distinct()

        return qs_