Example #1
0
class WxUserFilter(filters.FilterSet):
    nickname = filters.CharFilter(field_name='nickname',
                                  lookup_expr='icontains')
    province = filters.CharFilter(field_name='province',
                                  lookup_expr='icontains')
    city = filters.CharFilter(field_name='city', lookup_expr='icontains')
    date_joined = filters.DateFromToRangeFilter(field_name='date_joined')
    rebate_right = filters.CharFilter(method='rebate_right_filter')
    bonus_right = filters.CharFilter(method='bonus_right_filter')
    level = filters.CharFilter(field_name='level__level__title',
                               lookup_expr='icontains')

    def rebate_right_filter(self, queryset, name, value):
        if value == 'true':
            return queryset.filter(rebate_right='true')
        elif value == 'false':
            return queryset.filter(rebate_right__in=['false', 'null'])
        return queryset

    def bonus_right_filter(self, queryset, name, value):
        print(value)
        if value == 'true':
            return queryset.filter(bonus_right='true')
        elif value == 'false':
            return queryset.filter(bonus_right__in=['false', 'null'])
        return queryset

    class Meta:
        model = WxUser
        fields = {
            'nickname': [],
            'province': [],
            'city': [],
            'date_joined': [],
            'testers': ['exact'],
            'upload_perm': ['exact'],
            'rebate_right': ['exact'],
            'bonus_right': ['exact'],
            'level': ['exact'],
        }
Example #2
0
class InstructorsOverTimeFilter(AMYFilterSet):
    badges = filters.ModelMultipleChoiceFilter(
        queryset=Badge.objects.instructor_badges(),
        label='Badges',
    )
    country = filters.MultipleChoiceFilter(
        choices=list(Countries()),
        widget=Select2MultipleWidget,
        help_text="Instructor's country",
    )
    date = filters.DateFromToRangeFilter(
        label='Date range (from - to)',
        help_text="Filters on award's date",
        widget=filter_widgets.RangeWidget(attrs={"class": "dateinput"}),
    )

    class Meta:
        model = Person
        fields = [
            'badges',
            'country',
        ]
Example #3
0
class TransactionGroupFilter(filters.FilterSet):
    """
    date_before, date_after, money_min, money_max等をクエリパラメータに指定して検索する
    max, min(以上・以下)どちらか片方だけでもOK / dateは一致検索もできる
    """
    def get_hashed_pdf_url(self, queryset, name, value):
        filename = value.split('.')[0]
        return queryset.filter(
            # containsとすることで、pdf名に被りがあっても、両方とも検索にヒットする
            pdf__contains=hashlib.sha256(filename.encode()).hexdigest())

    # (注意)django-filter==2.0から、引数にはnameではなく、field_nameを使う。
    date = filters.DateFromToRangeFilter(field_name='date')
    createdOn = filters.DateFilter(field_name='createdOn')
    slipNum = filters.NumberFilter(field_name='slipNum')
    department = filters.CharFilter(field_name='department')
    currency = filters.CharFilter(field_name='currency')
    pdf = filters.CharFilter(field_name='pdf', method='get_hashed_pdf_url')

    class Meta:
        model = TransactionGroup
        fields = ['date', 'pdf', 'slipNum']
Example #4
0
class PtGroupFilter(filters.FilterSet):
    user = filters.CharFilter(field_name='user__nickname',
                              lookup_expr='icontains')
    ptgroup_no = filters.CharFilter(field_name='ptgroup_no',
                                    lookup_expr='icontains')
    partake = filters.CharFilter(field_name='partake__nickname',
                                 lookup_expr='icontains')
    add_time = filters.DateFromToRangeFilter(field_name='add_time')
    goods_name = filters.CharFilter(field_name='goods_name',
                                    lookup_expr='icontains')

    class Meta:
        model = PtGroup
        fields = {
            'user': [],
            'ptgroup_no': [],
            'ptgoods': ['exact'],
            'goods_name': [],
            'status': ['exact'],
            'add_time': [],
            'partake': [],
            'shop': ['exact'],
        }
Example #5
0
class ItemsFilter(filters.FilterSet):
    order_sn = filters.CharFilter(label='订单号', field_name='order__order_sn', lookup_expr='contains')
    user = filters.CharFilter(label='用户', field_name='order__user__nickname', lookup_expr='contains')
    goods_name = filters.CharFilter(label='商品名', field_name='goods_backup__goods_name', lookup_expr='contains')
    gtype_name = filters.CharFilter(label='规格名', field_name='goods_backup__gtype_name', lookup_expr='contains')
    add_time = filters.DateFromToRangeFilter(label='创建时间', field_name='order__add_time')
    order__shop = filters.NumberFilter(label='所属店铺', method='order_shop__filter')

    def order_shop__filter(self, queryset, name, value):
        return queryset.filter(Q(order__shop__id=value)|Q(order__entrust_shop__id=value))

    class Meta:
        model = Items
        fields = {
            'order_sn': [],
            'user': [],
            'send_type': ['exact'],
            'order__shop': ['exact'],
            'order__model_type': ['exact'],
            'goods_name': [],
            'gtype_name': [],
            'add_time': [],
        }
Example #6
0
class WorkshopsOverTimeFilter(AMYFilterSet):
    tags = filters.ModelMultipleChoiceFilter(
        queryset=Tag.objects.all(),
        label='Events with at least one of the following tags:',
        widget=widgets.SelectMultiple(attrs=dict(size=13)),
    )
    country = filters.MultipleChoiceFilter(
        choices=list(Countries()),
        widget=Select2MultipleWidget,
    )
    start = filters.DateFromToRangeFilter(
        label='Date range (from - to)',
        help_text="Filters only on the 'Event.start' field",
        widget=filter_widgets.RangeWidget(attrs={"class": "dateinput"}),
    )

    class Meta:
        model = Event
        fields = [
            'tags',
            'country',
            'start',
        ]
Example #7
0
class GoodsFilter(filters.FilterSet):
    name = filters.CharFilter(field_name='name', lookup_expr='contains')
    search = django_filters.CharFilter(label='搜索', method='search_filter')
    date_time = filters.DateFromToRangeFilter(field_name='add_time')
    status = filters.ChoiceFilter(label='商品状态',
                                  method='status_filter',
                                  choices=(('is_sell', '在售'), ('preview',
                                                               '预览'),
                                           ('not_enough', '库存不足'), ('not_sell',
                                                                    '下架')))

    def search_filter(self, queryset, name, value):
        return queryset.filter(
            Q(name__icontains=value) | Q(category__name__icontains=value)
            | Q(goods_brief__icontains=value))

    def status_filter(self, queryset, name, value):
        status = list(Goods.status_dict.keys())[list(
            Goods.status_dict.values()).index(value)]
        return queryset.filter(status=status)

    class Meta:
        model = Goods
        fields = {
            'name': [],
            'category': ['exact'],
            'shop': ['exact'],
            'status': ['exact'],
            'search': ['exact'],
            'date_time': [],
            'is_template': ['exact'],
            'model_type': ['exact'],
            'groupbuy': ['exact'],
            'recommendation': ['exact'],
            'fictitious': ['exact'],
        }
Example #8
0
class UserFilterSet(filters.FilterSet):
    first_name = filters.CharFilter(field_name="first_name",
                                    lookup_expr="icontains")
    last_name = filters.CharFilter(field_name="last_name",
                                   lookup_expr="icontains")
    username = filters.CharFilter(field_name="username",
                                  lookup_expr="icontains")
    phone_number = filters.CharFilter(field_name="phone_number",
                                      lookup_expr="icontains")
    last_login = filters.DateFromToRangeFilter(field_name="last_login")

    def get_user_type(
        self,
        queryset,
        field_name,
        value,
    ):
        if value:
            if value in INVERSE_USER_TYPE:
                return queryset.filter(user_type=INVERSE_USER_TYPE[value])
        return queryset

    user_type = filters.CharFilter(method="get_user_type",
                                   field_name="user_type")
Example #9
0
    class SaleFilter(filters.FilterSet):
        date = filters.DateFromToRangeFilter()

        class Meta:
            model = Sale
            fields = ['rama', 'date', 'seller']
Example #10
0
class SaleFilter(filters.FilterSet):
    date = filters.DateFromToRangeFilter()

    class Meta:
        model = Sale
        fields = '__all__'
Example #11
0
class TransactionFilter(filters.FilterSet):
    updated_at = filters.DateFromToRangeFilter()

    class Meta:
        model = Transaction
        fields = ['updated_at']
Example #12
0
class PatientFilter(filters.FilterSet):
    name = filters.CharFilter(field_name="name", lookup_expr="istartswith")
    icmr = filters.CharFilter(field_name="icmr_id", lookup_expr="istartswith")
    govt = filters.CharFilter(field_name="govt_id", lookup_expr="istartswith")
    gender = filters.MultipleChoiceFilter(
        field_name="gender", choices=common_constants.GENDER_CHOICES)
    year = filters.RangeFilter(field_name="year", lookup_expr="range")
    month = filters.RangeFilter(field_name="month", lookup_expr="range")
    contact = filters.CharFilter(field_name="phone_number",
                                 lookup_expr="istartswith")
    address = filters.CharFilter(field_name="address",
                                 lookup_expr="istartswith")
    district = filters.MultipleChoiceFilter(
        field_name="district",
        choices=accounts_models.District.objects.all().values_list(
            "id", "name"),
    )
    cluster_group = filters.MultipleChoiceFilter(
        field_name="cluster_group",
        choices=patients_models.PatientGroup.objects.all().values_list(
            "id", "name"),
    )
    covid_status = filters.MultipleChoiceFilter(
        field_name="covid_status",
        choices=patients_models.CovidStatus.objects.all().values_list(
            "id", "name"),
    )
    clinical_status = filters.MultipleChoiceFilter(
        field_name="clinical_status",
        choices=patients_models.ClinicalStatus.objects.all().values_list(
            "id", "name"),
    )
    clinical_status_updated_at = filters.DateFromToRangeFilter(
        field_name="clinical_status_updated_at")
    facility = filters.ModelMultipleChoiceFilter(
        field_name="patientfacility__facility",
        queryset=facility_models.Facility.objects.all())
    portea_called_at = filters.DateFromToRangeFilter(
        field_name="portea_called_at")
    portea_able_to_connect = filters.BooleanFilter(
        field_name="portea_able_to_connect")
    facility_district = filters.ModelMultipleChoiceFilter(
        field_name="patientfacility__facility__district",
        queryset=accounts_models.District.objects.all())
    facility_type = filters.ModelMultipleChoiceFilter(
        field_name="patientfacility__facility__facility_type",
        queryset=facility_models.FacilityType.objects.all())
    ownership_type = filters.ModelMultipleChoiceFilter(
        field_name="patientfacility__facility__owned_by",
        queryset=commons_models.OwnershipType.objects.all())
    patient_status = filters.MultipleChoiceFilter(
        field_name="patient_status",
        choices=patient_constants.PATIENT_STATUS_CHOICES,
    )

    def filter_queryset(self, queryset):
        qs = super().filter_queryset(queryset)
        # TODO Move below annotate to view
        return qs.annotate(
            facility_status=F("patientfacility__patient_status__name"),
            facility=F("patientfacility__facility__name"),
            facility_type=F("patientfacility__facility__facility_type__name"),
            ownership_type=F("patientfacility__facility__owned_by__name"),
            facility_district=F("patientfacility__facility__district__name"),
        )

    def filter_patient_status(self, queryset, name, value):
        if value:
            return queryset.filter(
                Q(current_facility__patient_status__name=value)
                | Q(patient_status=value))
        return queryset

    class Meta:
        model = patients_models.Patient
        fields = (
            "name",
            "icmr",
            "govt",
            "gender",
            "year",
            "month",
            "contact",
            "address",
            "district",
            "cluster_group",
            "covid_status",
            "patient_status",
            "clinical_status",
            "clinical_status_updated_at",
            "portea_called_at",
            "portea_able_to_connect",
            "facility",
            "facility_district",
            "facility_type",
            "ownership_type",
        )
Example #13
0
class LeaderboardFilter(filters.FilterSet):
    posted = filters.DateFromToRangeFilter(field_name='date')
Example #14
0
class HistoricalCompanyRelatedFilterSet(filters.FilterSet):
    history_date = filters.DateFromToRangeFilter()
Example #15
0
class PatientFilterSet(filters.FilterSet):
    source = filters.ChoiceFilter(choices=PatientRegistration.SourceChoices)
    disease_status = CareChoiceFilter(choice_dict=DISEASE_STATUS_DICT)
    facility = filters.UUIDFilter(field_name="facility__external_id")
    phone_number = filters.CharFilter(field_name="phone_number")
    allow_transfer = filters.BooleanFilter(field_name="allow_transfer")
    name = filters.CharFilter(field_name="name", lookup_expr="icontains")
    ip_no = filters.CharFilter(field_name="last_consultation__ip_no",
                               lookup_expr="icontains")
    gender = filters.NumberFilter(field_name="gender")
    age = filters.NumberFilter(field_name="age")
    age_min = filters.NumberFilter(field_name="age", lookup_expr="gt")
    age_max = filters.NumberFilter(field_name="age", lookup_expr="lt")
    category = filters.ChoiceFilter(field_name="last_consultation__category",
                                    choices=CATEGORY_CHOICES)
    created_date = filters.DateFromToRangeFilter(field_name="created_date")
    modified_date = filters.DateFromToRangeFilter(field_name="modified_date")
    srf_id = filters.CharFilter(field_name="srf_id")
    is_declared_positive = filters.BooleanFilter(
        field_name="is_declared_positive")
    date_declared_positive = filters.DateFromToRangeFilter(
        field_name="date_declared_positive")
    date_of_result = filters.DateFromToRangeFilter(field_name="date_of_result")
    last_vaccinated_date = filters.DateFromToRangeFilter(
        field_name="last_vaccinated_date")
    # Location Based Filtering
    district = filters.NumberFilter(field_name="district__id")
    district_name = filters.CharFilter(field_name="district__name",
                                       lookup_expr="icontains")
    local_body = filters.NumberFilter(field_name="local_body__id")
    local_body_name = filters.CharFilter(field_name="local_body__name",
                                         lookup_expr="icontains")
    division = filters.NumberFilter(field_name="district__division__id")
    division_name = filters.CharFilter(field_name="district__division__name",
                                       lookup_expr="icontains")
    state = filters.NumberFilter(field_name="state__id")
    state_name = filters.CharFilter(field_name="state__name",
                                    lookup_expr="icontains")
    # Consultation Fields
    is_kasp = filters.BooleanFilter(field_name="last_consultation__is_kasp")
    last_consultation_kasp_enabled_date = filters.DateFromToRangeFilter(
        field_name="last_consultation__kasp_enabled_date")
    last_consultation_admission_date = filters.DateFromToRangeFilter(
        field_name="last_consultation__admission_date")
    last_consultation_discharge_date = filters.DateFromToRangeFilter(
        field_name="last_consultation__discharge_date")
    last_consultation_symptoms_onset_date = filters.DateFromToRangeFilter(
        field_name="last_consultation__symptoms_onset_date")
    last_consultation_admitted_to_list = MultiSelectFilter(
        field_name="last_consultation__admitted_to")
    last_consultation_admitted_to = filters.NumberFilter(
        field_name="last_consultation__admitted_to")
    last_consultation_assigned_to = filters.NumberFilter(
        field_name="last_consultation__assigned_to")
    last_consultation_is_telemedicine = filters.BooleanFilter(
        field_name="last_consultation__is_telemedicine")

    # Vaccination Filters
    covin_id = filters.CharFilter(field_name="covin_id")
    is_vaccinated = filters.BooleanFilter(field_name="is_vaccinated")
    number_of_doses = filters.NumberFilter(field_name="number_of_doses")
    # Permission Filters
    assigned_to = filters.NumberFilter(field_name="assigned_to")
class OrderFilter(filters.FilterSet):
    status = filters.CharFilter(lookup_expr='exact')
    summary = filters.RangeFilter()
    created_at = filters.DateFromToRangeFilter(lookup_expr='exact')
    updated_at = filters.DateFromToRangeFilter(lookup_expr='exact')
Example #17
0
class WellListFilter(AnyOrAllFilterSet):
    well = filters.CharFilter(method='filter_well_tag_or_plate',
                              label='Well tag or identification plate number')
    street_address_or_city = filters.CharFilter(
        method='filter_street_address_or_city', label='Street address or city')
    owner_full_name = filters.CharFilter(lookup_expr='icontains')
    legal = filters.CharFilter(
        method='filter_combined_legal',
        label='Legal lot, District legal lot, Legal plan or Legal PID')
    date_of_work = filters.DateFromToRangeFilter(method='filter_date_of_work',
                                                 label='Date of work')
    well_depth = filters.RangeFilter(method='filter_well_depth',
                                     label='Well depth (finished or total)')
    filter_pack_range = filters.RangeFilter(method='filter_filter_pack_range',
                                            label='Filter pack from/to range')
    liner_range = filters.RangeFilter(method='filter_liner_range',
                                      label='Liner range')

    # Don't require a choice (i.e. select box) for aquifer
    aquifer = filters.NumberFilter()

    street_address = filters.CharFilter(lookup_expr='icontains')
    city = filters.CharFilter(lookup_expr='icontains')
    well_location_description = filters.CharFilter(lookup_expr='icontains')
    construction_start_date = filters.DateFromToRangeFilter()
    construction_end_date = filters.DateFromToRangeFilter(
        label='Construction End Date')
    alteration_start_date = filters.DateFromToRangeFilter()
    alteration_end_date = filters.DateFromToRangeFilter(
        label='Alteration End Date')
    decommission_start_date = filters.DateFromToRangeFilter()
    decommission_end_date = filters.DateFromToRangeFilter()
    well_identification_plate_attached = filters.CharFilter(
        lookup_expr='icontains')
    water_supply_system_name = filters.CharFilter(lookup_expr='icontains')
    water_supply_system_well_name = filters.CharFilter(lookup_expr='icontains')
    driller_name = filters.CharFilter(lookup_expr='icontains')
    drilling_methods = filters.ModelChoiceFilter(
        queryset=DrillingMethodCode.objects.all())
    consultant_name = filters.CharFilter(lookup_expr='icontains')
    consultant_company = filters.CharFilter(lookup_expr='icontains')
    ground_elevation = filters.RangeFilter()
    surface_seal_length = filters.RangeFilter()
    surface_seal_thickness = filters.RangeFilter()
    surface_seal_depth = filters.RangeFilter()
    backfill_type = filters.CharFilter(lookup_expr='icontains')
    backfill_depth = filters.RangeFilter()
    liner_diameter = filters.RangeFilter()
    liner_thickness = filters.RangeFilter()
    liner_from = filters.RangeFilter()
    liner_to = filters.RangeFilter()
    other_screen_material = filters.CharFilter(lookup_expr='icontains')
    other_screen_bottom = filters.CharFilter(lookup_expr='icontains')
    screen_information = filters.CharFilter(lookup_expr='icontains')
    filter_pack_from = filters.RangeFilter()
    filter_pack_to = filters.RangeFilter()
    filter_pack_thickness = filters.RangeFilter()
    development_methods = filters.ModelChoiceFilter(
        queryset=DevelopmentMethodCode.objects.all())
    development_hours = filters.RangeFilter()
    development_notes = filters.CharFilter(lookup_expr='icontains')
    yield_estimation_rate = filters.RangeFilter()
    yield_estimation_duration = filters.RangeFilter()
    static_level_before_test = filters.RangeFilter()
    drawdown = filters.RangeFilter()
    hydro_fracturing_yield_increase = filters.RangeFilter()
    recommended_pump_depth = filters.RangeFilter()
    recommended_pump_rate = filters.RangeFilter()
    water_quality_characteristics = filters.ModelChoiceFilter(
        queryset=WaterQualityCharacteristic.objects.all())
    water_quality_colour = filters.CharFilter(lookup_expr='icontains')
    water_quality_odour = filters.CharFilter(lookup_expr='icontains')
    well_yield = filters.RangeFilter()
    observation_well_number = filters.CharFilter(lookup_expr='icontains')
    observation_well_number_has_value = filters.BooleanFilter(
        field_name='observation_well_number',
        method='filter_has_value',
        label='Any value for observation well number')
    utm_northing = filters.RangeFilter()
    utm_easting = filters.RangeFilter()
    decommission_reason = filters.CharFilter(lookup_expr='icontains')
    decommission_sealant_material = filters.CharFilter(lookup_expr='icontains')
    decommission_backfill_material = filters.CharFilter(
        lookup_expr='icontains')
    decommission_details = filters.CharFilter(lookup_expr='icontains')
    aquifer_vulnerability_index = filters.RangeFilter()
    storativity = filters.RangeFilter()
    transmissivity = filters.RangeFilter()
    hydraulic_conductivity = filters.CharFilter(lookup_expr='icontains')
    specific_storage = filters.CharFilter(lookup_expr='icontains')
    specific_yield = filters.RangeFilter()
    testing_method = filters.CharFilter(lookup_expr='icontains')
    testing_duration = filters.RangeFilter()
    analytic_solution_type = filters.RangeFilter()
    boundary_effect = filters.RangeFilter()
    final_casing_stick_up = filters.RangeFilter()
    bedrock_depth = filters.RangeFilter()
    static_water_level = filters.RangeFilter()
    artesian_flow = filters.RangeFilter()
    artesian_flow_has_value = filters.BooleanFilter(
        field_name='artesian_flow',
        method='filter_has_value',
        label='Any value for artesian flow')
    artesian_pressure = filters.RangeFilter()
    artesian_pressure_has_value = filters.BooleanFilter(
        field_name='artesian_pressure',
        method='filter_has_value',
        label='Any value for artesian pressure')
    well_cap_type = filters.CharFilter(lookup_expr='icontains')
    comments = filters.CharFilter(lookup_expr='icontains')
    ems_has_value = filters.BooleanFilter(field_name='ems',
                                          method='filter_has_value',
                                          label='Any value for EMS id')

    class Meta:
        model = Well
        fields = [
            'alteration_end_date',
            'alteration_start_date',
            'alternative_specs_submitted',
            'analytic_solution_type',
            'aquifer',
            'aquifer_lithology',
            'aquifer_vulnerability_index',
            'artesian_flow',
            'artesian_pressure',
            'backfill_depth',
            'backfill_type',
            'bcgs_id',
            'bedrock_depth',
            'boundary_effect',
            'city',
            'comments',
            'company_of_person_responsible',
            'construction_end_date',
            'construction_start_date',
            'coordinate_acquisition_code',
            'date_of_work',
            'decommission_backfill_material',
            'decommission_details',
            'decommission_end_date',
            'decommission_method',
            'decommission_reason',
            'decommission_sealant_material',
            'decommission_start_date',
            'development_hours',
            'development_methods',
            'development_notes',
            'diameter',
            'drawdown',
            'driller_name',
            'drilling_company',
            'drilling_methods',
            'ems',
            'filter_pack_from',
            'filter_pack_material',
            'filter_pack_material_size',
            'filter_pack_thickness',
            'filter_pack_to',
            'final_casing_stick_up',
            'finished_well_depth',
            'ground_elevation',
            'ground_elevation_method',
            'hydraulic_conductivity',
            'hydro_fracturing_performed',
            'hydro_fracturing_yield_increase',
            'id_plate_attached_by',
            'identification_plate_number',
            'intended_water_use',
            'land_district',
            'legal',
            'legal_block',
            'legal_district_lot',
            'legal_lot',
            'legal_pid',
            'legal_plan',
            'legal_range',
            'legal_section',
            'legal_township',
            'licenced_status',
            'liner_diameter',
            'liner_from',
            'liner_material',
            'liner_thickness',
            'liner_to',
            'observation_well_number',
            'observation_well_status',
            'other_screen_bottom',
            'other_screen_material',
            'owner_full_name',
            'person_responsible',
            'recommended_pump_depth',
            'recommended_pump_rate',
            'screen_bottom',
            'screen_information',
            'screen_intake_method',
            'screen_material',
            'screen_opening',
            'screen_type',
            'specific_storage',
            'specific_yield',
            'static_level_before_test',
            'static_water_level',
            'storativity',
            'street_address',
            'street_address_or_city',
            'surface_seal_depth',
            'surface_seal_length',
            'surface_seal_material',
            'surface_seal_method',
            'surface_seal_thickness',
            'testing_duration',
            'testing_method',
            'total_depth_drilled',
            'transmissivity',
            'utm_easting',
            'utm_northing',
            'utm_zone_code',
            'water_quality_characteristics',
            'water_quality_colour',
            'water_quality_odour',
            'water_supply_system_name',
            'water_supply_system_well_name',
            'well',
            'well_cap_type',
            'well_class',
            'well_depth',
            'well_disinfected',
            'well_identification_plate_attached',
            'well_location_description',
            'well_orientation',
            'well_status',
            'well_subclass',
            'well_tag_number',
            'well_yield',
            'well_yield_unit',
            'yield_estimation_duration',
            'yield_estimation_method',
            'yield_estimation_rate',
        ]

    def filter_well_tag_or_plate(self, queryset, name, value):
        return queryset.filter(
            Q(well_tag_number=value) | Q(identification_plate_number=value))

    def filter_street_address_or_city(self, queryset, name, value):
        return queryset.filter(
            Q(street_address__icontains=value) | Q(city__icontains=value))

    def filter_combined_legal(self, queryset, name, value):
        lookups = (Q(legal_lot=value) | Q(legal_plan=value)
                   | Q(legal_district_lot=value))
        # Check if we have a positive integer before querying the
        # legal_pid field.
        try:
            int_value = int(value)
        except (TypeError, ValueError):
            pass
        else:
            if int_value >= 0:
                lookups = lookups | Q(legal_pid=int_value)

        return queryset.filter(lookups)

    def filter_date_of_work(self, queryset, name, value):
        if value.start is not None and value.stop is not None:
            range_dates = (value.start.date(), value.stop.date())
            queryset = queryset.filter(
                Q(construction_start_date__range=range_dates)
                | Q(construction_end_date__range=range_dates)
                | Q(alteration_start_date__range=range_dates)
                | Q(alteration_end_date__range=range_dates)
                | Q(decommission_start_date__range=range_dates)
                | Q(decommission_end_date__range=range_dates))
        elif value.start is not None:
            after_date = value.start.date()
            queryset = queryset.filter(
                Q(construction_start_date__gte=after_date)
                | Q(construction_end_date__gte=after_date)
                | Q(alteration_start_date__gte=after_date)
                | Q(alteration_end_date__gte=after_date)
                | Q(decommission_start_date__gte=after_date)
                | Q(decommission_end_date__gte=after_date))
        elif value.stop is not None:
            before_date = value.stop.date()
            queryset = queryset.filter(
                Q(construction_start_date__lte=before_date)
                | Q(construction_end_date__lte=before_date)
                | Q(alteration_start_date__lte=before_date)
                | Q(alteration_end_date__lte=before_date)
                | Q(decommission_start_date__lte=before_date)
                | Q(decommission_end_date__lte=before_date))

        return queryset

    def filter_well_depth(self, queryset, name, value):
        if value.start is not None and value.stop is not None:
            queryset = queryset.filter(
                Q(finished_well_depth__range=(value.start, value.stop))
                | Q(total_depth_drilled__range=(value.start, value.stop)))
        elif value.start is not None:
            queryset = queryset.filter(
                Q(finished_well_depth__gte=value.start)
                | Q(total_depth_drilled__gte=value.start))
        elif value.stop is not None:
            queryset = queryset.filter(
                Q(finished_well_depth__lte=value.stop)
                | Q(total_depth_drilled__lte=value.stop))

        return queryset

    def filter_filter_pack_range(self, queryset, name, value):
        if value.start is not None and value.stop is not None:
            queryset = queryset.filter(
                Q(filter_pack_from__range=(value.start, value.stop))
                | Q(filter_pack_to__range=(value.start, value.stop)))
        elif value.start is not None:
            queryset = queryset.filter(
                Q(filter_pack_from__gte=value.start)
                | Q(filter_pack_to__gte=value.start))
        elif value.stop is not None:
            queryset = queryset.filter(
                Q(filter_pack_from__lte=value.stop)
                | Q(filter_pack_to__lte=value.stop))

        return queryset

    def filter_liner_range(self, queryset, name, value):
        if value.start is not None and value.stop is not None:
            queryset = queryset.filter(
                Q(liner_from__range=(value.start, value.stop))
                | Q(liner_to__range=(value.start, value.stop)))
        elif value.start is not None:
            queryset = queryset.filter(
                Q(liner_from__gte=value.start) | Q(liner_to__gte=value.start))
        elif value.stop is not None:
            queryset = queryset.filter(
                Q(liner_from__lte=value.stop) | Q(liner_to__lte=value.stop))

        return queryset

    def filter_has_value(self, queryset, name, value):
        if value:
            lookup = '__'.join([name, 'isnull'])
            return queryset.filter(**{lookup: False})

        return queryset
Example #18
0
class BaseFilter(filters.FilterSet):
    create_time = filters.DateFromToRangeFilter(field_name='create_time')
    update_time = filters.DateFromToRangeFilter(field_name='update_time')
Example #19
0
class EmployeeFilter(filters.FilterSet):
    max_date = filters.DateFromToRangeFilter(field_name='occurrences__in_time')

    class Meta:
        model = Employee
        fields = ['name', 'max_date']
Example #20
0
class SpecimenFilter(PropertyFilterSet):
    """
    標本情報のフィルタセット
    """
    date_identified = filters.DateFromToRangeFilter()
    date_last_modified = filters.DateFromToRangeFilter()
    collection_code = filters.NumberFilter(lookup_expr='exact')
    collection_code_range = filters.RangeFilter(field_name='collection_code')
    kingdom = PropertyCharFilter(field_name='kingdom', lookup_expr='icontains')
    phylum = PropertyCharFilter(field_name='phylum', lookup_expr='icontains')
    class_name = PropertyCharFilter(field_name='class_name',
                                    lookup_expr='icontains')
    order = PropertyCharFilter(field_name='order', lookup_expr='icontains')
    suborder = PropertyCharFilter(field_name='suborder',
                                  lookup_expr='icontains')
    family = PropertyCharFilter(field_name='family', lookup_expr='icontains')
    subfamily = PropertyCharFilter(field_name='subfamily',
                                   lookup_expr='icontains')
    tribe = PropertyCharFilter(field_name='tribe', lookup_expr='icontains')
    subtribe = PropertyCharFilter(field_name='subtribe',
                                  lookup_expr='icontains')
    genus = PropertyCharFilter(field_name='genus', lookup_expr='icontains')
    subgenus = PropertyCharFilter(field_name='subgenus',
                                  lookup_expr='icontains')
    species = PropertyCharFilter(field_name='species', lookup_expr='icontains')
    subspecies = PropertyCharFilter(field_name='subspecies',
                                    lookup_expr='icontains')
    scientific_name_author = PropertyCharFilter(
        field_name='scientific_name_author', lookup_expr='icontains')
    name_publishedin_year = PropertyRangeFilter(
        field_name='name_publishedin_year', lookup_expr='range')
    actual_dist_year = PropertyRangeFilter(field_name='actual_dist_year',
                                           lookup_expr='range')
    japanese_name = PropertyCharFilter(field_name='japanese_name',
                                       lookup_expr='icontains')
    change_genus_brackets = PropertyBooleanFilter(
        field_name='change_genus_brackets')
    unknown_author_brackets = PropertyBooleanFilter(
        field_name='unknown_author_brackets')
    unknown_name_publishedin_year_brackets = PropertyBooleanFilter(
        field_name='unknown_name_publishedin_year_brackets')

    class Meta:
        model = Specimen
        fields = [
            'default_taxon_info__kingdom', 'default_taxon_info__phylum',
            'default_taxon_info__class_name', 'default_taxon_info__order',
            'default_taxon_info__suborder', 'default_taxon_info__family',
            'default_taxon_info__subfamily', 'default_taxon_info__tribe',
            'default_taxon_info__subtribe', 'default_taxon_info__genus',
            'default_taxon_info__subgenus', 'default_taxon_info__species',
            'default_taxon_info__subspecies',
            'default_taxon_info__scientific_name_author',
            'default_taxon_info__name_publishedin_year',
            'default_taxon_info__actual_dist_year',
            'default_taxon_info__change_genus_brackets',
            'default_taxon_info__unknown_author_brackets',
            'default_taxon_info__unknown_name_publishedin_year_brackets',
            'default_taxon_info__japanese_name',
            'default_taxon_info__distribution', 'default_taxon_info__note',
            'custom_taxon_info__kingdom', 'custom_taxon_info__phylum',
            'custom_taxon_info__class_name', 'custom_taxon_info__order',
            'custom_taxon_info__suborder', 'custom_taxon_info__family',
            'custom_taxon_info__subfamily', 'custom_taxon_info__tribe',
            'custom_taxon_info__subtribe', 'custom_taxon_info__genus',
            'custom_taxon_info__subgenus', 'custom_taxon_info__species',
            'custom_taxon_info__subspecies',
            'custom_taxon_info__scientific_name_author',
            'custom_taxon_info__name_publishedin_year',
            'custom_taxon_info__actual_dist_year',
            'custom_taxon_info__change_genus_brackets',
            'custom_taxon_info__unknown_author_brackets',
            'custom_taxon_info__unknown_name_publishedin_year_brackets',
            'custom_taxon_info__japanese_name',
            'custom_taxon_info__distribution', 'custom_taxon_info__note',
            'collect_point_info__contient', 'collect_point_info__island_group',
            'collect_point_info__island', 'collect_point_info__country',
            'collect_point_info__state_provice', 'collect_point_info__county',
            'collect_point_info__municipality',
            'collect_point_info__verbatim_locality',
            'collect_point_info__japanese_place_name',
            'collect_point_info__japanese_place_name_detail',
            'collect_point_info__coordinate_precision',
            'collect_point_info__minimum_elevation',
            'collect_point_info__maximum_elevation',
            'collect_point_info__minimum_depth',
            'collect_point_info__maximum_depth', 'collect_point_info__note',
            'tour__title', 'collection_settings_info__collection_name',
            'collection_settings_info__institution_code', 'collection_code',
            'identified_by', 'date_identified', 'collecter', 'year', 'month',
            'day', 'sex', 'preparation_type', 'disposition',
            'sampling_protocol', 'sampling_effort', 'lifestage',
            'establishment_means', 'rights', 'note', 'kingdom', 'phylum',
            'class_name', 'order', 'suborder', 'family', 'subfamily', 'tribe',
            'subtribe', 'genus', 'subgenus', 'species', 'subspecies',
            'scientific_name_author', 'name_publishedin_year',
            'actual_dist_year', 'allow_kojin_shuzo', 'published_kojin_shuzo',
            'japanese_name', 'change_genus_brackets',
            'unknown_author_brackets',
            'unknown_name_publishedin_year_brackets', 'date_last_modified'
        ]
        property_fields = [
            ('collect_point_info__longitude', PropertyRangeFilter, ['range']),
            ('collect_point_info__latitude', PropertyRangeFilter, ['range']),
        ]
        filter_overrides = {
            models.CharField: {
                'filter_class': filters.CharFilter,
                'extra': lambda f: {
                    'lookup_expr': 'icontains',
                },
            },
            models.TextField: {
                'filter_class': filters.CharFilter,
                'extra': lambda f: {
                    'lookup_expr': 'icontains',
                },
            },
            models.IntegerField: {
                'filter_class': filters.RangeFilter,
            },
            models.FloatField: {
                'filter_class': filters.RangeFilter,
            },
            models.DateField: {
                'filter_class': filters.DateFromToRangeFilter,
            },
            models.DateTimeField: {
                'filter_class': filters.DateFromToRangeFilter,
            },
            models.BooleanField: {
                'filter_class': filters.BooleanFilter,
            }
        }
Example #21
0
class RequirementFilter(filters.FilterSet):
    REQ_STATUS = (
        ('open', 'Open'),
        ('cancelled', 'Cancelled'),
        ('fulfilled', 'Fulfilled'),
        ('unverified', 'Unverified'),
        ('lapsed', 'Lapsed'),
    )

    id = filters.NumberFilter(name="id", label="ID", lookup_expr="exact")
    id_range = filters.RangeFilter(name="id", label="ID Between")

    client = filters.CharFilter(name="client__name__username", label=" Client", lookup_expr='icontains')

    client_null = filters.BooleanFilter(name="client", label="Is Client Null", lookup_expr="isnull")

    from_shipment_date = filters.DateFilter(field_name="from_shipment_date", label="from_shipment_date")
    from_shipment_date_between = filters.DateFromToRangeFilter(field_name="from_shipment_date",
                                                               label="from_shipment_date Between")
    from_shipment_date_null = filters.BooleanFilter(field_name="from_shipment_date", label="Is from_shipment_date Null",
                                                    lookup_expr="isnull")

    to_shipment_date = filters.DateFilter(field_name="to_shipment_date", label="to_shipment_date")
    to_shipment_date_between = filters.DateFromToRangeFilter(field_name="to_shipment_date",
                                                             label="to_shipment_date Between")
    to_shipment_date_null = filters.BooleanFilter(field_name="to_shipment_date", label="Is to_shipment_date Null",
                                                  lookup_expr="isnull")

    from_city = filters.CharFilter(field_name="from_city__name", label="From City", lookup_expr="icontains")
    from_city_null = filters.BooleanFilter(field_name="from_city", label="Is From City Null",
                                           lookup_expr="isnull")

    to_city = filters.CharFilter(field_name="to_city__name", label="to_city", lookup_expr="icontains")
    to_city_null = filters.BooleanFilter(field_name="to_city", label="Is to_city Null", lookup_expr="isnull")

    aaho_office = filters.CharFilter(name="aaho_office__branch_name", label="Aaho Office", lookup_expr='icontains')
    aaho_office_id = filters.NumberFilter(name="aaho_office__id", label="Aaho Office ID", lookup_expr='exact')
    aaho_office_null = filters.BooleanFilter(name="aaho_office", label="Is Aaho Office Null", lookup_expr="isnull")

    tonnage = filters.NumberFilter(field_name="tonnage", label="tonnage")
    tonnage_range = filters.NumericRangeFilter(field_name="tonnage", label="tonnage_Range")
    tonnage_null = filters.BooleanFilter(field_name="tonnage", label="Is tonnage Null", lookup_expr="isnull")

    no_of_vehicles = filters.NumberFilter(field_name="no_of_vehicles", label="no_of_vehicles")
    no_of_vehicles_range = filters.NumericRangeFilter(field_name="no_of_vehicles", label="no_of_vehicles_Range")
    no_of_vehicles_null = filters.BooleanFilter(field_name="no_of_vehicles", label="Is no_of_vehicles Null",
                                                lookup_expr="isnull")

    rate = filters.NumberFilter(field_name="rate", label="rate")
    rate_range = filters.NumericRangeFilter(field_name="rate", label="rate_Range")
    rate_null = filters.BooleanFilter(field_name="rate", label="Is rate Null", lookup_expr="isnull")

    material = filters.CharFilter(name="material", label="Material", lookup_expr='icontains')
    material_null = filters.BooleanFilter(name="material", label="Is Material Null",
                                          lookup_expr="isnull")

    type_of_vehicle = filters.CharFilter(name="type_of_vehicle__vehicle_type", label="Vehicle Type",
                                         lookup_expr='icontains')
    type_of_vehicle_null = filters.BooleanFilter(name="type_of_vehicle", label="Is Vehicle Type Null",
                                                 lookup_expr="isnull")

    status = filters.ChoiceFilter(name="req_status", label="Req Status", choices=REQ_STATUS)
    req_status_null = filters.BooleanFilter(name="req_status", label="Is Req Status Null", lookup_expr="isnull")

    created_by = filters.CharFilter(name="created_by__username", label="Created By name", lookup_expr="icontains")
    created_by_null = filters.BooleanFilter(name="created_by", label="Is Created By Null", lookup_expr="isnull")
    created_on = filters.IsoDateTimeFilter(name="created_on", label="Created on")
    created_between = filters.DateTimeFromToRangeFilter(field_name="created_on", label="Created Between")

    class Meta:
        model = Requirement
        fields = []
Example #22
0
    class ExpensesFilter(filters.FilterSet):
        created_at = filters.DateFromToRangeFilter()

        class Meta:
            model = CashRecord
            fields = ['created_at', 'rama']
Example #23
0
    class ShiftFilter(filters.FilterSet):
        date = filters.DateFromToRangeFilter()

        class Meta:
            model = Shift
            fields = ['rama', 'date']
Example #24
0
class OrderDateFilter(filters.FilterSet):
    order_date = filters.DateFromToRangeFilter()

    class Meta:
        model = NewOrder
        fields = ['order_date']
Example #25
0
class PepFilterSet(filters.FilterSet):
    fullname = filters.CharFilter(
        lookup_expr='search',
        help_text=
        'Filter by full name "last name first name middle name" in Ukrainian.',
    )
    fullname_transcriptions_eng = filters.CharFilter(
        lookup_expr='search',
        help_text='Filter by full name in English transcription.',
    )
    name_search = filters.CharFilter(
        label=_('Options for writing full name'),
        method='filter_name_search',
        help_text=
        'Search by name in fields fullname and fullname_transcriptions_eng.',
    )
    updated_at = filters.DateFromToRangeFilter(
        help_text=
        'You can use key "updated_at_before" to select objects before the specified date and '
        '"updated_at_after" key to select objects after the specified date. '
        'Date must be in YYYY-MM-DD format.', )
    updated_at_date = filters.DateFilter(
        field_name='updated_at',
        lookup_expr='date',
        help_text='You can filter updates for a specific date, '
        'such as February 25, 2020 - updated_at_date = 2020-02-25',
    )
    is_pep = filters.BooleanFilter(
        widget=ValidatedBooleanWidget,
        help_text=
        'Boolean type. Can be true or false. True - person is politically exposed person,'
        ' false - person is not politically exposed person.',
    )
    is_dead = filters.BooleanFilter(
        widget=ValidatedBooleanWidget,
        help_text=
        'Boolean type. Can be true or false. True - person is dead, false - person is alive.',
    )
    pep_type = filters.ChoiceFilter(
        choices=Pep.TYPES,
        help_text=
        'Filter by type of pep. Can be national politically exposed  person '
        '(pep_type=national PEP), foreign politically exposed person (pep_type='
        'foreign PEP), having political functions in international organization '
        '(pep_type=PEP with political functions in international organization), '
        'associated person (pep_type=associated person with PEP), family member '
        '(pep_type=member of PEP`s family).',
    )
    related_company = filters.CharFilter(
        label=_("Associated company`s number (provide a number)"),
        method='filter_related_company',
        help_text='Filter by related company (provide EDRPOU number).',
    )
    last_job_title = filters.CharFilter(
        lookup_expr='icontains',
        help_text='Filter by title of the last job in Ukrainian.',
    )
    last_employer = filters.CharFilter(
        lookup_expr='icontains',
        help_text='Filter by last employer in Ukrainian.',
    )

    date_of_birth = filters.CharFilter(
        lookup_expr='icontains',
        help_text='Filter by date_of_birth, string contains type. '
        'Examples: date_of_birth=1964, date_of_birth=1964-02, '
        'date_of_birth=1964-02-06',
    )

    o = filters.OrderingFilter(
        fields=(
            ('fullname', 'fullname'),
            ('is_pep', 'is_pep'),
            ('pep_type', 'pep_type'),
            ('last_job_title', 'last_job_title'),
            ('last_employer', 'last_employer'),
        ),
        help_text=
        'Sort by fields: fullname, is_pep, pep_type, last_job_title, last_employer.'
    )

    def filter_name_search(self, queryset, name, value):
        return queryset.filter(
            Q(fullname__search=value)
            | Q(fullname_transcriptions_eng__search=value))

    def filter_related_company(self, queryset, value, company_number):
        peps_id = CompanyLinkWithPep.objects.filter(
            company__edrpou=company_number).values_list('pep_id', flat=True)
        return queryset.filter(id__in=peps_id)

    class Meta:
        model = Pep
        fields = {}
class AdvertisementFilter(filters.FilterSet):
    """Фильтры для объявлений."""

    # TODO: задайте требуемые фильтры
    created_at = filters.DateFromToRangeFilter()
    creator = filters.NumberFilter(lookup_expr='exact')
Example #27
0
class OrderFilterSet(filters.FilterSet):
    id = filters.ModelMultipleChoiceFilter(field_name='id',
                                           to_field_name='id',
                                           queryset=Order.objects.all())
    name = filters.CharFilter(lookup_expr='icontains')
    created_at = filters.DateFromToRangeFilter()
Example #28
0
class DocumentFilter(filters.FilterSet):
    directory = filters.ModelChoiceFilter(
        queryset=(
            CollectionDirectory.objects.all()
            .select_related('collection')
        ),
        null_label='',
        null_value=NULL_VALUE,
        method='filter_directory',
    )
    collection = filters.ModelChoiceFilter(
        queryset=DocumentCollection.objects.all(),
        method='filter_collection',
    )
    portal = filters.ModelChoiceFilter(
        queryset=DocumentPortal.objects.filter(public=True),
        to_field_name='pk',
        method='filter_portal',
    )
    ids = filters.CharFilter(
        method='filter_ids'
    )
    created_at = filters.DateFromToRangeFilter(
        method='filter_created_at',
    )

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        request = kwargs.get('request')
        if request is None:
            request = self.view.request
        self.request = request

    def filter_ids(self, qs, name, value):
        try:
            ids = [
                int(x) for x in value.split(',') if x
            ]
        except ValueError:
            ids = None
        if ids:
            qs = qs.filter(id__in=ids)
        return qs

    def filter_directory(self, qs, name, directory):
        if NULL_VALUE == directory:
            return qs.filter(
                filingcabinet_collectiondocument__directory__isnull=True
            )
        if not directory.collection.can_read(self.request):
            return qs.none()
        return qs.filter(
            filingcabinet_collectiondocument__directory=directory
        ).order_by(
            'filingcabinet_collectiondocument__order'
        )

    def filter_collection(self, qs, name, collection):
        if not collection.can_read(self.request):
            return qs.none()

        qs = qs.filter(
            filingcabinet_collectiondocument__collection=collection
        ).order_by(
            'filingcabinet_collectiondocument__order'
        )
        data_filters = collection.settings.get('filters', [])
        qs = self.apply_data_filters(qs, data_filters)
        return qs

    def filter_portal(self, qs, name, portal):
        qs = qs.filter(portal=portal)
        qs = self.apply_data_filters(qs, portal.settings.get('filters', []))
        return qs

    def apply_data_filters(self, qs, filters):
        for filt in filters:
            if not filt['key'].startswith('data.'):
                continue
            val = self.request.GET.get(filt['key'])
            if not val:
                continue
            data_type = filt.get('datatype')
            if data_type:
                try:
                    if data_type == 'int':
                        val = int(val)
                except ValueError:
                    continue
            filt_key = filt['key'].replace('.', '__')
            qs = qs.filter(**{filt_key: val})
        return qs

    def filter_created_at(self, qs, name, value):
        range_kwargs = {}
        if value.start is not None:
            range_kwargs['gte'] = value.start
        if value.stop is not None:
            range_kwargs['lte'] = value.stop

        for comp, val in range_kwargs.items():
            qs = qs.filter(
                Q(**{
                    'published_at__isnull': False,
                    'published_at__{}'.format(comp): val
                }) |
                Q(**{
                    'published_at__isnull': True,
                    'created_at__{}'.format(comp): val
                })
            )
        return qs
Example #29
0
class FacilityPatientStatsHistoryFilterSet(filters.FilterSet):
    entry_date = filters.DateFromToRangeFilter(field_name="entry_date")
Example #30
0
class DispatchByDateFilter(filters.FilterSet):
    dispatch_by_date = filters.DateFromToRangeFilter()

    class Meta:
        model = NewOrder
        fields = ['dispatch_by_date']