Ejemplo n.º 1
0
class PageFilter(filters.FilterSet):
    nature = filters.MultipleChoiceFilter(choices=NATURE_CHOICES)
    progress = filters.MultipleChoiceFilter(choices=PROGRESS_CHOICES)

    class Meta:
        model = Page
        fields = ["nature", "progress"]
Ejemplo n.º 2
0
class MonsterFilter(filters.FilterSet):
    name = filters.CharFilter(method='filter_name')
    element = filters.MultipleChoiceFilter(choices=Monster.ELEMENT_CHOICES)
    archetype = filters.MultipleChoiceFilter(choices=Monster.TYPE_CHOICES)
    leader_skill_attribute = filters.MultipleChoiceFilter(
        name='leader_skill__attribute', choices=LeaderSkill.ATTRIBUTE_CHOICES)
    leader_skill_area = filters.MultipleChoiceFilter(
        name='leader_skill__area', choices=LeaderSkill.AREA_CHOICES)

    class Meta:
        model = Monster
        fields = {
            'com2us_id': ['exact'],
            'family_id': ['exact'],
            'base_stars': ['lte', 'gte'],
            'obtainable': ['exact'],
            'is_awakened': ['exact'],
            'fusion_food': ['exact'],
        }

    def filter_name(self, queryset, name, value):
        if value:
            return queryset.filter(name__istartswith=value)
        else:
            return queryset
Ejemplo n.º 3
0
class MonsterFilter(filters.FilterSet):
    name = filters.CharFilter(method='filter_name')
    element = filters.MultipleChoiceFilter(choices=Monster.ELEMENT_CHOICES)
    archetype = filters.MultipleChoiceFilter(choices=Monster.TYPE_CHOICES)
    leader_skill_attribute = filters.MultipleChoiceFilter(field_name='leader_skill__attribute', choices=LeaderSkill.ATTRIBUTE_CHOICES)
    leader_skill_area = filters.MultipleChoiceFilter(field_name='leader_skill__area', choices=LeaderSkill.AREA_CHOICES)
    order_by = filters.OrderingFilter(fields=[
        'name', 'element', 'base_stars', 'archetype', 'com2us_id', 'family_id',
        'raw_hp', 'raw_attack', 'raw_defense',
        'base_hp', 'base_attack', 'base_defense',
        'max_lvl_hp', 'max_lvl_attack', 'max_lvl_defense',
        'speed', 'crit_rate', 'crit_damage', 'resistance', 'accuracy',
    ])

    class Meta:
        model = Monster
        fields = {
            'id': ['in'],
            'com2us_id': ['exact'],
            'family_id': ['exact'],
            'base_stars': ['lte', 'gte'],
            'obtainable': ['exact'],
            'is_awakened': ['exact'],
            'fusion_food': ['exact'],
            'homunculus': ['exact'],
        }

    def filter_name(self, queryset, name, value):
        if value:
            return queryset.filter(name__istartswith=value)
        else:
            return queryset
Ejemplo n.º 4
0
class CoursePageFilter(filters.FilterSet):
    lang_code = filters.MultipleChoiceFilter(name='lang_code', \
            lookup_expr='exact', choices=settings.LANGUAGES, \
            widget=forms.CheckboxSelectMultiple, initial='en', \
            label=_('Language'))
    keywords = filters.ModelMultipleChoiceFilter(
        name='multilang_keywords',
        queryset=MultilangKeyword.objects.all(),
        widget=forms.CheckboxSelectMultiple,
        label=_('Keywords'))
    level = filters.MultipleChoiceFilter(name='level', \
            lookup_expr='exact', choices=LEVELS, \
            widget=forms.CheckboxSelectMultiple, \
            label=_('Level'))
    delivery_method = filters.MultipleChoiceFilter(name='delivery_format', \
            lookup_expr='exact', choices=CoursePage.DELIVERY_FORMAT, \
            widget=forms.CheckboxSelectMultiple, \
            label=_('Delivery Method'))
    o = filters.OrderingFilter(choices=(('title', _('Title')), ),
                               fields={
                                   'title': 'title',
                               },
                               initial='title',
                               help_text='')

    class Meta:
        model = CoursePage
        fields = {}
Ejemplo n.º 5
0
class InfoFilters(filters.FilterSet):
    phone = filters.NumberFilter(field_name='house_info__phone',
                                 lookup_expr='iexact')
    id = filters.NumberFilter(field_name='house_info__house_id',
                              lookup_expr='iexact')
    offer_type = filters.NumberFilter(field_name='offer_type')
    date = filters.NumberFilter(field_name='parsing_time__days',
                                lookup_expr='lte')
    min_price = filters.NumberFilter(field_name="price", lookup_expr='gte')
    max_price = filters.NumberFilter(field_name="price", lookup_expr='lte')
    num_of_rooms = filters.MultipleChoiceFilter(
        choices=CHOICES,
        field_name='house_info__num_of_rooms',
        lookup_expr='icontains',
    )
    description = filters.CharFilter(field_name='data',
                                     lookup_expr='icontains')
    street = filters.CharFilter(field_name='address', lookup_expr='icontains')
    type_house = filters.MultipleChoiceFilter(
        choices=CHOICES_TYPE,
        field_name='type',
        lookup_expr='icontains',
    )
    max_floor = filters.NumberFilter(field_name='house_info__floor',
                                     lookup_expr='lte')
    min_floor = filters.NumberFilter(field_name='house_info__floor',
                                     lookup_expr='gte')
    max_floor_count = filters.NumberFilter(
        field_name='house_info__floor_count', lookup_expr='lte')
    min_floor_count = filters.NumberFilter(
        field_name='house_info__floor_count', lookup_expr='gte')
    min_area = filters.NumberFilter(field_name='house_info__total_area',
                                    lookup_expr='gte')
    max_area = filters.NumberFilter(field_name='house_info__total_area',
                                    lookup_expr='lte')
    min_kitchen_area = filters.NumberFilter(
        field_name='house_info__kitchen_area', lookup_expr='gte')
    max_kitchen_area = filters.NumberFilter(
        field_name='house_info__kitchen_area', lookup_expr='lte')
    min_living_area = filters.NumberFilter(
        field_name='house_info__living_area', lookup_expr='gte')
    max_living_area = filters.NumberFilter(
        field_name='house_info__living_area', lookup_expr='lte')
    min_land_area = filters.NumberFilter(field_name='house_info__land_area',
                                         lookup_expr='gte')
    max_land_area = filters.NumberFilter(field_name='house_info__land_area',
                                         lookup_expr='lte')

    class Meta:
        model = HouseModel
        fields = [
            'min_price', 'street', 'max_price', 'num_of_rooms', 'max_floor',
            'min_floor', 'min_area', 'max_area', 'max_floor_count',
            'min_floor_count', 'id', 'phone', 'type_house', 'min_kitchen_area',
            'max_kitchen_area', 'min_living_area', 'max_living_area',
            'min_land_area', 'max_land_area', 'offer_type', 'date',
            'description'
        ]
Ejemplo n.º 6
0
class DriverStopsFilter(filters.FilterSet):
    agency = filters.ModelChoiceFilter(
        queryset=models.Agency.objects.no_cache().all(),
        label="Agency",
        method="filter_agency",
        required=True,
    )
    stop_date = filters.DateFromToRangeFilter(label="Stop date",
                                              method="filter_stop_date")
    gender = filters.MultipleChoiceFilter(choices=models.GENDER_CHOICES)
    race = filters.MultipleChoiceFilter(choices=models.RACE_CHOICES)
    ethnicity = filters.MultipleChoiceFilter(choices=models.ETHNICITY_CHOICES)
    stop_officer_id = filters.CharFilter(label="Officer ID",
                                         method="filter_officer")
    stop_purpose = filters.MultipleChoiceFilter(label="Stop purpose",
                                                choices=models.PURPOSE_CHOICES,
                                                method="filter_stop_purpose")
    stop_action = filters.MultipleChoiceFilter(label="Stop action",
                                               choices=models.ACTION_CHOICES,
                                               method="filter_stop_action")

    def filter_agency(self, queryset, name, value):
        return queryset.filter(stop__agency_id=value)

    def filter_stop_date(self, queryset, name, value):
        start_date = value.start
        end_date = value.stop
        query = Q()
        if start_date:
            query &= Q(stop__date__gte=start_date)
        if end_date:
            query &= Q(stop__date__lte=end_date)
        return queryset.filter(query)

    def filter_officer(self, queryset, name, value):
        return queryset.filter(stop__officer_id=value)

    def filter_stop_purpose(self, queryset, name, value):
        return queryset.filter(stop__purpose__in=value)

    def filter_stop_action(self, queryset, name, value):
        return queryset.filter(stop__action__in=value)

    class Meta:
        model = models.Person
        fields = (
            "agency",
            "stop_date",
            "age",
            "gender",
            "race",
            "ethnicity",
            "stop_officer_id",
            "stop_purpose",
            "stop_action",
        )
Ejemplo n.º 7
0
class StoreInventoryFilter(django_filters.FilterSet):
    broadSizeCategory = filters.MultipleChoiceFilter(
        label='',
        choices=SIZE_CHOICES,
        widget=forms.CheckboxSelectMultiple(attrs={
            'onclick': 'this.form.submit()',
            'class': 'hide'
        }))
    strSpecial = filters.MultipleChoiceFilter(
        method='str_special_filter',
        label='',
        choices=SPECIALS_CHOICES,
        widget=forms.CheckboxSelectMultiple(
            attrs={'onclick': 'this.form.submit()'}))
    # strSpecial = filters.MultipleChoiceFilter(label='', choices=SPECIALS_CHOICES, widget=forms.CheckboxSelectMultiple(attrs={'onclick':'this.form.submit()'}), exclude=True)
    strUnitType = filters.MultipleChoiceFilter(
        label='',
        choices=CC_CHOICES,
        widget=forms.CheckboxSelectMultiple(
            attrs={'onclick': 'this.form.submit()'}))
    ftruckrental = filters.MultipleChoiceFilter(
        method='truck_rental_filter',
        label='',
        choices=FTR_CHOICES,
        widget=forms.CheckboxSelectMultiple(
            attrs={'onclick': 'this.form.submit()'}))

    class Meta:
        model = StoreInventory
        fields = [
            'broadSizeCategory', 'strSpecial', 'strUnitType', 'dblTtlAvail'
        ]

    def str_special_filter(self, queryset, name, value):
        return queryset.filter(
            Q(strSpecial__exact='W') | Q(strSpecial__exact='X'))

    def truck_rental_filter(self, queryset, name, value):
        return queryset.filter(
            Q(intprop__ftruckrental__exact='-1')
            | Q(intprop__ftruckrentalss__exact='-1'))

    @property
    def dstnct(self):
        test = super().qs

        return test.values('intprop__storeid').order_by().annotate(
            Count('intprop'),
            Min('dblcurrentrate'),
            Max('strSpecial'),
            address=F('intprop__address'),
            city=F('intprop__city'),
            st=F('intprop__st'),
            phone=F('intprop__phone'),
            postalcode=F('intprop__postalcode'),
            storenum=F('intprop__storeid')).exclude(dblTtlAvail__exact=0)
Ejemplo n.º 8
0
class EventFilterSet(filters.FilterSet):

    category = filters.MultipleChoiceFilter(
        method='filter_category',
        label='Category',
        choices=settings.EVENT_TYPE_CHOICES,
    )
    follow_type = filters.MultipleChoiceFilter(
        method='filter_follow_type',
        label='Follow Type',
        choices=settings.EVENT_FOLLOW_MODE_CHOICES,
    )

    languages = filters.CharFilter(
        method='filter_languages',
    )

    location = filters.CharFilter(
        method='filter_location',
    )

    class Meta:
        model = Event
        fields = [
            'category',
            'follow_type',
            'languages',
            'location'
        ]

    def filter_category(self, queryset, name, value):
        query = Q()
        for query_value in value:
            query |= Q(category__code=query_value)
        return queryset.filter(query)

    def filter_follow_type(self, queryset, name, value):
        query = Q()
        for query_value in value:
            query |= Q(follow_type__contains=query_value)
        return queryset.filter(query)

    def filter_languages(self, queryset, name, value):
        query = Q()
        for language in value.split(','):
            query |= Q(languages__contains=[language])
        return queryset.filter(query)

    def filter_location(self, queryset, name, value):
        query = Q()
        for location in value.split(','):
            query |= Q(location__icontains=location)

        return queryset.filter(query)
Ejemplo n.º 9
0
class PerformanceMetricsFilter(FilterSet):
    date_from = filters.DateFilter('date',
                                   label='date from (YYYY-MM-DD)',
                                   lookup_expr='gte')
    date_to = filters.DateFilter('date',
                                 label='date to (YYYY-MM-DD)',
                                 lookup_expr='lte')
    metrics = filters.MultipleChoiceFilter(label='metrics',
                                           choices=METRICS_CHOICES,
                                           method='filter_metrics')
    group_by = filters.MultipleChoiceFilter(label='group by',
                                            choices=GROUPING_CHOICES,
                                            method='group_data')

    class Meta:
        model = PerformanceMetric
        fields = (
            'date_from',
            'date_to',
            'group_by',
            'metrics',
        )

    def filter_metrics(self, queryset, name, value):
        if not value:
            return queryset

        # Create list of metrics to include from 'value' argument
        metrics_to_include = []
        for i in value:
            metrics_to_include.append(METRICS_CHOICES[int(i)][-1])

        if hasattr(self, 'columns_to_group'):
            return queryset.values(*self.columns_to_group, *metrics_to_include)
        else:
            return queryset.values(*metrics_to_include)

    def group_data(self, queryset, name, value):
        if not value:
            return queryset

        # Create list of columns to include from 'value' argument
        self.columns_to_group = []
        for i in value:
            self.columns_to_group.append(GROUPING_CHOICES[int(i)][-1])

        grouped_data = queryset.order_by().values(*self.columns_to_group).distinct() \
            .annotate(impressions=Sum('impressions')) \
            .annotate(clicks=Sum('clicks')) \
            .annotate(installs=Sum('installs')) \
            .annotate(spend=Sum('spend')) \
            .annotate(revenue=Sum('revenue'))

        return grouped_data
Ejemplo n.º 10
0
class EventFilterSet(filters.FilterSet):
    # Filtering by country and importance level
    importance = filters.MultipleChoiceFilter(field_name="importance",
                                              label="filter by importance",
                                              choices=[(i, i)
                                                       for i in range(1, 4)])
    country = filters.MultipleChoiceFilter(field_name="country",
                                           label="filter by country",
                                           choices=Countries())

    class Meta:
        model = Event
        fields = ["importance", "country"]
Ejemplo n.º 11
0
class PatientTransferFilter(filters.FilterSet):
    icmr_id = filters.CharFilter(
        field_name="from_patient_facility__patient__icmr_id",
        lookup_expr="istartswith")
    govt_id = filters.CharFilter(
        field_name="from_patient_facility__patient__govt_id",
        lookup_expr="istartswith")
    patient_name = filters.CharFilter(
        field_name="from_patient_facility__patient__name",
        lookup_expr="istartswith")
    gender = filters.MultipleChoiceFilter(
        field_name="from_patient_facility__patient__gender",
        choices=common_constants.GENDER_CHOICES,
    )
    year = filters.RangeFilter(
        field_name="from_patient_facility__patient__year", lookup_expr="range")
    month = filters.RangeFilter(
        field_name="from_patient_facility__patient__month",
        lookup_expr="range")
    from_facility = filters.filters.ModelMultipleChoiceFilter(
        field_name="from_patient_facility__facility",
        queryset=facility_models.Facility.objects.all())
    to_facility = filters.filters.ModelMultipleChoiceFilter(
        field_name="to_facility",
        queryset=facility_models.Facility.objects.all())
    phone_number = filters.CharFilter(
        field_name="from_patient_facility__patient__phone_number",
        lookup_expr="istartswith")
    requested_at = CustomDateTimeFromToRangeFilter(field_name="created_at")
    status_updated_at = CustomDateTimeFromToRangeFilter(
        field_name="status_updated_at")
    status = filters.MultipleChoiceFilter(
        field_name="status", choices=patient_constants.TRANSFER_STATUS_CHOICES)

    class Meta:
        model = patients_models.PatientTransfer
        fields = (
            "gender",
            "year",
            "month",
            "from_facility",
            "to_facility",
            "requested_at",
            "status_updated_at",
            "status",
            "icmr_id",
            "govt_id",
            "patient_name",
            "phone_number",
        )
Ejemplo n.º 12
0
class SetFilter(filters.FilterSet):
    set_id = filters.CharFilter(
        field_name='id',
        lookup_expr='iexact',
        distinct=True)
    labeler = filters.CharFilter(
        field_name='spls__labeler',
        lookup_expr='icontains',
        distinct=True)
    package_ndc = filters.CharFilter(
        field_name='spls__products__packages__code',
        lookup_expr='icontains',
        distinct=True)
    product_ndc = filters.CharFilter(
        field_name='spls__products__code',
        lookup_expr='icontains',
        distinct=True)
    product_name = filters.CharFilter(
        field_name='spls__products__name',
        lookup_expr='icontains',
        distinct=True)
    inactive_ingredient_name = filters.CharFilter(
        field_name='spls__products__inactive_ingredients__name',
        lookup_expr='icontains',
        distinct=True)
    inactive_ingredient_unii = filters.CharFilter(
        field_name='spls__products__inactive_ingredients__unii',
        lookup_expr='icontains',
        distinct=True)
    schedule = filters.MultipleChoiceFilter(
        field_name='spls__products__schedule',
        choices=SCHEDULE_CHOICES,
        distinct=True)
    rxcui = filters.CharFilter(
        field_name='rxnorms__rxcui',
        lookup_expr='iexact',
        distinct=True)
    rxstring = filters.CharFilter(
        field_name='rxnorms__rxstring',
        lookup_expr='icontains',
        distinct=True)
    rxtty = filters.MultipleChoiceFilter(
        field_name='rxnorms__rxtty',
        choices=TTY_CHOICES,
        distinct=True)

    class Meta:
        model = Set
        fields = []
Ejemplo n.º 13
0
class FrameFilter(django_filters.FilterSet):
    start = django_filters.DateTimeFilter(field_name='DATE_OBS', lookup_expr='gte')
    end = django_filters.DateTimeFilter(field_name='DATE_OBS', lookup_expr='lte')
    dayobs = django_filters.DateFilter(field_name='DAY_OBS', lookup_expr='iexact')
    basename = django_filters.CharFilter(field_name='basename', lookup_expr='icontains')
    OBJECT = django_filters.CharFilter(field_name='OBJECT', lookup_expr='icontains')
    public = django_filters.BooleanFilter(field_name='public', method='public_filter')
    EXPTIME = django_filters.NumberFilter(field_name='EXPTIME', lookup_expr='gte')
    covers = django_filters.CharFilter(method='covers_filter')
    exclude_OBSTYPE = django_filters.MultipleChoiceFilter(
        field_name='OBSTYPE',
        choices=Frame.OBSERVATION_TYPES,
        label='Exclude Obstypes',
        exclude=True
    )
    intersects = django_filters.CharFilter(method='intersects_filter')

    def covers_filter(self, queryset, name, value):
        geo = GEOSGeometry(value)
        return queryset.filter(area__covers=geo)

    def intersects_filter(self, queryset, name, value):
        geo = GEOSGeometry(value)
        return queryset.filter(area__intersects=geo)

    def public_filter(self, queryset, name, value):
        if not value:
            return queryset.exclude(L1PUBDAT__lt=timezone.now())
        return queryset

    class Meta:
        model = Frame
        fields = ['DATE_OBS', 'DAY_OBS', 'PROPID', 'OBSTYPE', 'INSTRUME',
                  'RLEVEL', 'SITEID', 'TELID', 'FILTER', 'L1PUBDAT',
                  'BLKUID', 'REQNUM']
Ejemplo n.º 14
0
class JournalFilter(filters.FilterSet):
    status = filters.MultipleChoiceFilter(choices=JournalStatus.choices)
    orgs = CharListFilter(name='organization__key', lookup_expr='in')

    class Meta:
        model = Journal
        fields = ('orgs', 'status',)
Ejemplo n.º 15
0
class DietaEspecialFilter(filters.FilterSet):
    aluno = filters.CharFilter(field_name='aluno__uuid', lookup_expr='iexact')
    nome_aluno = filters.CharFilter(field_name='aluno__nome',
                                    lookup_expr='icontains')
    nome_completo_aluno = filters.CharFilter(field_name='aluno__nome',
                                             lookup_expr='iexact')
    codigo_eol_aluno = filters.CharFilter(field_name='aluno__codigo_eol',
                                          lookup_expr='iexact')
    escola = filters.CharFilter(field_name='rastro_escola__uuid',
                                lookup_expr='iexact')
    dre = filters.CharFilter(
        field_name='rastro_escola__diretoria_regional__uuid',
        lookup_expr='iexact')
    cpf_responsavel = filters.CharFilter(field_name='aluno__responsaveis__cpf',
                                         lookup_expr='iexact')
    ativo = filters.BooleanFilter(field_name='ativo')
    tipo_solicitacao = filters.CharFilter(field_name='tipo_solicitacao',
                                          lookup_expr='iexact')
    data_inicial = filters.DateFilter(field_name='criado_em',
                                      lookup_expr='date__gte')
    data_final = filters.DateFilter(field_name='criado_em',
                                    lookup_expr='date__lte')
    classificacao = filters.ModelMultipleChoiceFilter(
        field_name='classificacao__id',
        to_field_name='id',
        queryset=ClassificacaoDieta.objects.all())
    status = filters.MultipleChoiceFilter(
        choices=[(str(state), state)
                 for state in DietaEspecialWorkflow.states])
Ejemplo n.º 16
0
class GuiaFilter(filters.FilterSet):
    codigo_unidade = filters.CharFilter(
        field_name='codigo_unidade',
        lookup_expr='exact',
    )
    nome_unidade = filters.CharFilter(
        field_name='nome_unidade',
        lookup_expr='icontains',
    )
    numero_guia = filters.CharFilter(
        field_name='numero_guia',
        lookup_expr='exact',
    )
    numero_requisicao = filters.CharFilter(
        field_name='solicitacao__numero_solicitacao',
        lookup_expr='exact',
    )
    data_inicial = filters.DateFilter(
        field_name='data_entrega',
        lookup_expr='gte',
    )
    data_final = filters.DateFilter(
        field_name='data_entrega',
        lookup_expr='lte',
    )
    status = filters.MultipleChoiceFilter(
        field_name='status',
        choices=[(str(state), state) for state in GuiaRemessaWorkFlow.states],
    )
Ejemplo n.º 17
0
class StayReservationFilter(FilterDefaultValuesMixin, filters.FilterSet):
    # defaults = {'status': ['booked', 'confirmed']}
    document_number = filters.NumberFilter('id')
    reserved_from__gte = filters.DateFilter('reserved_from', 'gte')
    reserved_to__lte = filters.DateFilter('reserved_to', 'lte')
    reservation_number = filters.CharFilter('reservation_number', 'icontains')
    contact_name = filters.CharFilter('contact_name', 'icontains')
    contact_number = filters.CharFilter('contact_number', 'icontains')
    contact_email = filters.CharFilter('contact_email', 'icontains')
    status = filters.MultipleChoiceFilter('status',
                                          choices=Reservation.STATUS.choices)
    activities_ids = filters.CharFilter(method='activities_filter')

    def activities_filter(self, queryset, name, value):
        value = re.split(r'\s*,\s*', value) if isinstance(value,
                                                          str) else value
        return queryset.filter(activities__id__in=value)

    class Meta:
        model = StayReservation
        fields = [
            'document_number', 'reserved_from', 'reserved_from__gte',
            'tent_id', 'price', 'reserved_to', 'reserved_to__lte',
            'stay_type_id', 'status', 'reservation_number', 'contact_name',
            'contact_number', 'contact_email', 'company_id', 'guests_count',
            'created_at', 'reservation_type', 'activities_ids'
        ]
Ejemplo n.º 18
0
class EventFilter(filters.FilterSet):
    start_after = filters.DateFilter(name='start', lookup_expr='gte')
    start_before = filters.DateFilter(name='start', lookup_expr='lte')
    end_after = filters.DateFilter(name='end', lookup_expr='gte')
    end_before = filters.DateFilter(name='end', lookup_expr='lte')
    TAG_CHOICES = Tag.objects.all().values_list('name', 'name')
    tag = filters.MultipleChoiceFilter(
        choices=TAG_CHOICES,
        name='tags',
        method=filter_tag_by_name,
    )

    class Meta:
        model = Event
        fields = (
            'completed',
            'tag',
            'start',
            'start_before',
            'start_after',
            'end',
            'end_before',
            'end_after',
        )
        order_by = ('-slug', 'slug', 'start', '-start', 'end', '-end')
Ejemplo n.º 19
0
class FoodReservationFilter(FilterDefaultValuesMixin, filters.FilterSet):
    # defaults = {'status': ['booked', 'confirmed']}
    document_number = filters.NumberFilter('id')
    reservation_date__lte = filters.DateFilter('reservation_date', 'lte')
    reservation_date__gte = filters.DateFilter('reservation_date', 'gte')
    reservation_number = filters.CharFilter('reservation_number', 'icontains')
    contact_name = filters.CharFilter('contact_name', 'icontains')
    contact_number = filters.CharFilter('contact_number', 'icontains')
    contact_email = filters.CharFilter('contact_email', 'icontains')
    company = filters.CharFilter('company__name', 'icontains')
    status = filters.MultipleChoiceFilter('status',
                                          choices=Reservation.STATUS.choices)
    food_ids = filters.CharFilter(method='food_filter')

    def food_filter(self, qs, name, value):
        value = re.split(r'\s*,\s*', value) if isinstance(value,
                                                          str) else value
        return qs.filter(food__id__in=value)

    class Meta:
        model = FoodReservation
        fields = [
            'document_number', 'reservation_date', 'reservation_date__gte',
            'reservation_date__lte', 'status', 'reservation_number',
            'contact_name', 'contact_number', 'contact_email', 'company',
            'company_id', 'meal_type_id', 'food_ids', 'reservation_type',
            'created_at', 'guests_count', 'price'
        ]
class AssignmentTypeFilter(filters.FilterSet):
    # single filter
    # topics = filters.CharFilter(lookup_expr='icontains')

    # multiple choice filter
    TOPIC_LIST = (
        ('device', 'device'),
        ('essential', 'essential'),
        ('common', 'common'),
        ('concept', 'concept'),
        ('person', 'person'),
        ('event', 'event'),
        ('text', 'text'),
    )

    # multiple choice filter
    topics = filters.MultipleChoiceFilter(
        field_name="topics",
        lookup_expr='contains',
        conjoined=True,  # uses AND instead of OR
        choices=TOPIC_LIST)

    # assign model and field terms
    class Meta:
        model = AssignmentTypes
        fields = ('title', 'verb', 'topics')
Ejemplo n.º 21
0
class SubmissionsFilter(filters.FilterSet):
    round = RoundLabFilter(queryset=RoundsAndLabs.objects.all())
    status = filters.MultipleChoiceFilter(choices=PHASES)
    active = filters.BooleanFilter(method='filter_active', label='Active')
    submit_date = filters.DateFromToRangeFilter(field_name='submit_time',
                                                label='Submit date')
    fund = filters.ModelMultipleChoiceFilter(
        field_name='page',
        label='fund',
        queryset=Page.objects.type(FundType) | Page.objects.type(LabType))

    class Meta:
        model = ApplicationSubmission
        fields = (
            'status',
            'round',
            'active',
            'submit_date',
            'fund',
        )

    def filter_active(self, qs, name, value):
        if value is None:
            return qs

        if value:
            return qs.active()
        else:
            return qs.inactive()
Ejemplo n.º 22
0
class ProdutoFilter(filters.FilterSet):
    uuid = filters.CharFilter(field_name='homologacoes__uuid',
                              lookup_expr='iexact')
    nome_produto = filters.CharFilter(field_name='nome__unaccent',
                                      lookup_expr='icontains')
    data_inicial = filters.DateFilter(field_name='homologacoes__criado_em',
                                      lookup_expr='date__gte')
    data_final = filters.DateFilter(field_name='homologacoes__criado_em',
                                    lookup_expr='date__lte')
    nome_marca = filters.CharFilter(field_name='marca__nome__unaccent',
                                    lookup_expr='icontains')
    nome_fabricante = filters.CharFilter(
        field_name='fabricante__nome__unaccent', lookup_expr='icontains')
    nome_terceirizada = filters.CharFilter(
        field_name='homologacoes__rastro_terceirizada__nome_fantasia',
        lookup_expr='icontains')
    aditivos = filters.CharFilter(field_name='aditivos',
                                  method='filtra_aditivos')

    status = filters.MultipleChoiceFilter(
        field_name='homologacoes__status',
        choices=[(str(state), state)
                 for state in HomologacaoProdutoWorkflow.states])

    class Meta:
        model = Produto
        fields = [
            'nome_produto', 'nome_marca', 'nome_fabricante',
            'nome_terceirizada', 'data_inicial', 'data_final',
            'tem_aditivos_alergenicos', 'eh_para_alunos_com_dieta'
        ]

    def filtra_aditivos(self, qs, name, value):
        filtro = cria_filtro_aditivos(value)
        return qs.filter(filtro)
Ejemplo n.º 23
0
class RunFilter(filters.FilterSet):
    """
    Provides useful filtering options for the
    :class:`~django_analyses.models.run.Run` model.
    """

    analysis = filters.ModelMultipleChoiceFilter(
        "analysis_version__analysis",
        queryset=ANALYSES_WITH_RUNS,
    )
    analysis_version = filters.ModelMultipleChoiceFilter(
        "analysis_version", queryset=ANALYSIS_VERSIONS_WITH_RUNS)
    status = filters.MultipleChoiceFilter(choices=RunStatus.choices())
    start_time = filters.DateTimeFromToRangeFilter()
    end_time = filters.DateTimeFromToRangeFilter()
    if Subject:
        subject = filters.NumberFilter(method="get_subject_runs",
                                       label="By subject ID:",
                                       required=False)

    class Meta:
        model = Run
        fields = ("id", )

    def get_subject_runs(self, queryset: QuerySet, name: str,
                         pk: int) -> QuerySet:
        try:
            subject = Subject.objects.get(id=pk)
        except Subject.DoesNotExist:
            pass
        else:
            return subject.query_run_set()
Ejemplo n.º 24
0
class SolicitacaoFilter(filters.FilterSet):

    uuid = filters.CharFilter(
        field_name='uuid',
        lookup_expr='exact',
    )
    numero_requisicao = filters.CharFilter(
        field_name='numero_solicitacao',
        lookup_expr='exact',
    )
    nome_distribuidor = filters.CharFilter(
        field_name='distribuidor__nome_fantasia',
        lookup_expr='icontains',
    )
    data_inicial = filters.DateFilter(
        field_name='guias__data_entrega',
        lookup_expr='gte',
    )
    data_final = filters.DateFilter(
        field_name='guias__data_entrega',
        lookup_expr='lte',
    )
    numero_guia = filters.CharFilter(
        field_name='guias__numero_guia',
        lookup_expr='exact',
    )
    codigo_unidade = filters.CharFilter(
        field_name='guias__codigo_unidade',
        lookup_expr='exact',
    )
    nome_unidade = filters.CharFilter(
        field_name='guias__nome_unidade__unaccent',
        lookup_expr='icontains',
    )
    nome_produto = filters.CharFilter(
        field_name='guias__alimentos__nome_alimento__unaccent',
        lookup_expr='icontains',
    )
    status = filters.MultipleChoiceFilter(
        field_name='status',
        choices=[(str(state), state)
                 for state in SolicitacaoRemessaWorkFlow.states],
    )
    status_guia = filters.MultipleChoiceFilter(
        field_name='guias__status',
        choices=[(str(state), state) for state in GuiaRemessaWorkFlow.states],
    )
Ejemplo n.º 25
0
class ChangeFilter(filters.FilterSet):
    timestamp = filters.IsoDateTimeFromToRangeFilter()
    action = filters.MultipleChoiceFilter(choices=Change.ACTION_CHOICES)
    user = filters.CharFilter(field_name="user__username")

    class Meta:
        model = Change
        fields = ["action", "user", "timestamp"]
Ejemplo n.º 26
0
class ActivityLogFilters(filters.FilterSet):
    status = filters.MultipleChoiceFilter(
        choices=models.ActivityLogModel.STATUS_CHOICES)
    student = StudentFilter(queryset=StudentModel.objects.all())

    class Meta:
        model = models.ActivityLogModel
        fields = ["activity", "grand_set", "group", "status", "student"]
Ejemplo n.º 27
0
class HobbyEventFilter(filters.FilterSet):
    category = HierarchyModelMultipleChoiceFilter(
        field_name='hobby__categories', queryset=HobbyCategory.objects.all(),
        label=_('HobbyCategory id'),
    )
    ordering = NearestOrderingFilter(
        fields=(
            # (field name, param name)
            ('distance_to_point', 'nearest'),
        ),
        field_labels={
            'distance_to_point': _('Nearest'),
        },
        label=_('Ordering. Choices: `nearest`')
    )
    near_latitude = dummy_filter(filters.NumberFilter(label=_('Near latitude. This field is required when `nearest` ordering is used.')))
    near_longitude = dummy_filter(filters.NumberFilter(label=_('Near longitude. This field is required when `nearest` ordering is used.')))
    hobby = filters.ModelChoiceFilter(field_name='hobby', queryset=Hobby.objects.all(), label=_('Hobby id'))
    start_date_from = filters.DateFilter(field_name='start_date', lookup_expr='gte',
                                         label=_(f'Return results starting from given date (inclusive).'
                                                 f' Use ISO 8601 date format, eg. "2020-01-30".'))
    start_date_to = filters.DateFilter(field_name='start_date', lookup_expr='lte',
                                       label=_(f'Return results with starting date up to given date (inclusive).'
                                               f' Use ISO 8601 date format, eg. "2020-01-30".'))
    start_time_from = filters.TimeFilter(field_name='start_time', lookup_expr='gte',
                                         label=_(f'Return results with starting time from given time (inclusive)'
                                                 f' Eg. "19:00".'))
    start_time_to = filters.TimeFilter(field_name='start_time', lookup_expr='lte',
                                       label=_(f'Return results with starting time up to given time (inclusive)'
                                               f' Eg. "21:00".'))
    start_weekday = filters.MultipleChoiceFilter(choices=HobbyEvent.DAY_OF_WEEK_CHOICES,
                                                 label=_(f'Return results with starting date in given weekday.'
                                                         f' Enter a number from 1 to 7. Use ISO 8601 weekdays:'
                                                         f' 1=Monday, 7=Sunday.'))
    exclude_past_events = filters.BooleanFilter(method='filter_past_events', label=_('Show upcoming only'))
    price_type = filters.CharFilter(method='filter_price_type', label=_('Filter HobbyEvents by price type'))

    class Meta:
        model = HobbyEvent
        fields = ['category', 'hobby', 'start_date_from', 'start_date_to',
                  'start_time_from', 'start_time_to', 'start_weekday']

    def filter_past_events(self, queryset, name, value):
        is_filtering_requested = value
        date_is_before_today = Q(end_date__lt=datetime.date.today())
        date_is_today_but_time_is_in_past = Q(end_date=datetime.date.today()) & Q(end_time__lt=datetime.datetime.now().time())
        if is_filtering_requested:
            return queryset.exclude(date_is_before_today | date_is_today_but_time_is_in_past)
        else:
            return queryset

    def filter_price_type(self, queryset, name, value):
        value_in_price_type_choices = any(value == price_type for price_type, label in Hobby.PRICE_TYPE_CHOICES)
        if value_in_price_type_choices:
            queryset = queryset.filter(hobby__price_type=value)
        return queryset
Ejemplo n.º 28
0
class UserFilter(filters.FilterSet):
    position = filters.MultipleChoiceFilter(
        choices=models.Profile.USER_TYPES,
        field_name='profile__position',
        label='Position'
    )

    class Meta:
        model = User
        fields = ['username', 'position']
Ejemplo n.º 29
0
class ProgramFilter(FilterSetMixin, filters.FilterSet):
    marketable = filters.BooleanFilter(method='filter_marketable')
    status = filters.MultipleChoiceFilter(choices=ProgramStatus.choices)
    type = filters.CharFilter(field_name='type__translations__name_t', lookup_expr='iexact')
    types = CharListFilter(field_name='type__slug', lookup_expr='in')
    uuids = UUIDListFilter()

    class Meta:
        model = Program
        fields = ('hidden', 'marketable', 'marketing_slug', 'status', 'type', 'types',)
Ejemplo n.º 30
0
class LabelingTaskFilterSet(filters.FilterSet):
  name = filters.CharFilter(field_name='name', lookup_expr='icontains')
  labeler = filters.CharFilter(field_name='labeler_name', lookup_expr='icontains', label='Labeler name contains')
  dataset = filters.CharFilter(field_name='dataset', lookup_expr='icontains', label='Dataset path contains')
  status = filters.MultipleChoiceFilter(
    field_name='status',
    choices=LabelingTask.STATUSES,
  )

  class Meta:
    model = LabelingTask
    fields = ('name', 'dataset', 'labeler', 'status')