class RoleFilterSet(FilterSet): status = filters.ChoiceFilter(choices=settings.STATUS_USE_CHOICE, help_text='状态是否启动') data_level = filters.ChoiceFilter(choices=settings.DATA_LEVEL_CHOICE, help_text='数据级别') class Meta: model = RolesInfo fields = []
class BranchFilterSet(FilterSet): status = filters.ChoiceFilter(choices=settings.STATUS_USE_CHOICE, label='状态是否启动') class Meta: model = BranchesInfo fields = []
class TaskFilter(BaseFilterSet): state = filters.ChoiceFilter(choices=TASK_CHOICES) worker = HyperlinkRelatedFilter() name = filters.CharFilter() started_at = IsoDateTimeFilter(field_name="started_at") finished_at = IsoDateTimeFilter(field_name="finished_at") parent_task = HyperlinkRelatedFilter() child_tasks = HyperlinkRelatedFilter() task_group = HyperlinkRelatedFilter() reserved_resources_record = ReservedResourcesFilter() created_resources = CreatedResourcesFilter() class Meta: model = Task fields = { "name": ["contains"], "state": ["exact", "in"], "worker": ["exact", "in"], "started_at": DATETIME_FILTER_OPTIONS, "finished_at": DATETIME_FILTER_OPTIONS, "parent_task": ["exact"], "child_tasks": ["exact"], "task_group": ["exact"], "reserved_resources_record": ["exact"], "created_resources": ["exact"], }
class InvitationFilter(FilterSet): status = filters.ChoiceFilter(field_name="status", choices=InvitationStatusType.choices) class Meta: model = Invitation fields = ("status", )
class WeighDataSiteWeekFilter(FilterSet): fractie = filters.ChoiceFilter(label='fractie', method='filter_fractie', choices=[(f[0], f[0]) for f in FRACTIES]) def filter_fractie(self, qs, _name, value): return qs.filter(fractie=value) class Meta(object): model = SiteFractieStatWeek fields = { 'fractie': ['exact'], 'volume': FILTERS, 'capacity': FILTERS, 'week': FILTERS, 'year': FILTERS, 'measurements': FILTERS, 'sum': FILTERS, 'min': FILTERS, 'max': FILTERS, 'avg': FILTERS, 'stddev': FILTERS, 'site': ['exact'], }
class WeigDataBuurtMonthFiltler(FilterSet): fractie = filters.ChoiceFilter(label='fractie', method='filter_fractie', choices=[(f[0], f[0]) for f in FRACTIES]) def filter_fractie(self, qs, _name, value): return qs.filter(fractie=value) class Meta(object): model = BuurtFractieStatMonth fields = { 'fractie': ['exact'], 'month': FILTERS, 'year': FILTERS, 'measurements': FILTERS, 'sum': FILTERS, 'min': FILTERS, 'max': FILTERS, 'avg': FILTERS, 'stddev': FILTERS, 'buurt_code': ['exact'], }
class CourtFilter(FilterSet): jurisdiction = filters.ChoiceFilter(field_name='jurisdiction__slug', choices=jur_choices) name = filters.CharFilter(lookup_expr='icontains', label='Name (contains)') class Meta: model = models.Court fields = ['id', 'slug', 'name', 'name_abbreviation', 'jurisdiction']
class ExpressionFilterSet(FilterSet): """ FilterSet used in the API endpoint for expressions, options to filter on: - expression name - expression type """ name = filters.ChoiceFilter(choices=expression_choices) type_name = filters.MultipleChoiceFilter(field_name='_type__name', choices=expression_type_choices)
class FactCheckerNewsFilter(FilterSet): is_opined = filters.BooleanFilter(field_name="is_opined") origin = filters.ChoiceFilter(field_name="origin", choices=NewsOrigin.choices) class Meta: model = News fields = ("is_opined", "origin")
class HistoryFilter(FilterSet): typus = filters.ChoiceFilter(choices=HistoryTypus.items(), method=filter_history_typus) date = DateTimeFromToRangeFilter(name='date') class Meta: model = History fields = ('group', 'store', 'users', 'typus', 'date')
class NewsVerifiedFilter(FilterSet): current_verdict = filters.ChoiceFilter( choices=NEWS_CURRENT_VERDICT_CHOICES) is_assigned_to_me = filters.BooleanFilter(field_name="is_assigned_to_me") is_duplicate = filters.BooleanFilter(field_name="is_duplicate") is_published = filters.BooleanFilter(field_name="is_published") origin = filters.ChoiceFilter(field_name="origin", choices=NewsOrigin.choices) class Meta: model = News fields = ( "current_verdict", "is_assigned_to_me", "is_duplicate", "is_published", "origin", )
class AdminUsersFilter(FilterSet): specialization = filters.ChoiceFilter( field_name="specialization", choices=UserSpecializationType.choices) created = filters.DateFromToRangeFilter(field_name="created_at") verified = filters.NumericRangeFilter(field_name="verified") class Meta: model = User fields = ("specialization", "created", "verified")
class CrewUsersFilter(FilterSet): specialization = filters.ChoiceFilter( field_name="specialization", choices=UserSpecializationType.choices) created = filters.DateFromToRangeFilter(field_name="created_at") is_active = filters.BooleanFilter(field_name="is_active") class Meta: model = User fields = ("specialization", "created", "is_active")
class CitiesFilterSet(FilterSet): county = filters.ModelChoiceFilter(queryset=Countries.objects.all(), required=True, help_text='国家') status = filters.ChoiceFilter(choices=settings.STATUS_USE_CHOICE, label='状态是否启动') class Meta: model = Cities fields = []
class OrdFundsFilterSet(FilterSet): fund_status = filters.ChoiceFilter(choices=settings.FUND_STATUS_CHOICE, help_text='款项状态') order_status = filters.ChoiceFilter(choices=settings.ORDER_STATUS_CHOICE, help_text='订单状态') channel = filters.ModelChoiceFilter(queryset=DataDictsValue.objects.all(), help_text='服务渠道') pay_type = filters.ModelChoiceFilter(queryset=DataDictsValue.objects.all(), help_text='付款类型') order_time_start = filters.DateTimeFilter(field_name='order_time', lookup_expr='gte', help_text='订单(查询起始时间)') order_time_end = filters.DateTimeFilter(field_name='order_time', lookup_expr='lte', help_text='订单(查询结束时间)') class Meta: model = OrdFundsInfo fields = []
class FreightsFilterSet(FilterSet): channel = filters.ModelChoiceFilter(queryset=DataDictsValue.objects.all(), help_text='货运渠道') trans_company = filters.ModelChoiceFilter(queryset=DataDictsValue.objects.all(), help_text='货运公司') freight_status = filters.ChoiceFilter(choices=settings.FREIGHT_STATUS_CHOICE, help_text='货运状态') pack_time_start = filters.DateTimeFilter(field_name='pack_time', lookup_expr='gte', help_text='查询运单(起始打包时间)') pack_time_end = filters.DateTimeFilter(field_name='pack_time', lookup_expr='lte', help_text='查询运单(结束打包时间)') class Meta: model = FreightsInfo fields = []
class DictValuesFilterSet(FilterSet): type = filters.ModelChoiceFilter(queryset=DataDictType.objects.all(), required=True, help_text='字典类型代码') status = filters.ChoiceFilter(choices=settings.STATUS_USE_CHOICE, label='状态是否启动') class Meta: model = DataDictsValue fields = []
class FreightQueryFilterSet(FreightStatementFilterSet): freight_code = filters.CharFilter(field_name='trans_code', lookup_expr='iexact', help_text='运单号', label='运单号') trans_company = filters.ModelChoiceFilter(queryset=DataDictsValue.objects.all(), help_text='货运公司', label='货运公司') mid_company = filters.ModelChoiceFilter(queryset=DataDictsValue.objects.all(), help_text='中港公司', label='中港公司') freight_status = filters.ChoiceFilter(choices=settings.ORDER_STATUS_CHOICE, help_text='运单状态', label='运单状态') channel = filters.ModelChoiceFilter(queryset=DataDictsValue.objects.all(), help_text='货运渠道', label='货运渠道') class Meta: model = FreightsInfo fields = []
class ExpertNewsFilter(FilterSet): assigned_to_me = filters.BooleanFilter(field_name="is_assigned_to_me") current_verdict = filters.ChoiceFilter( choices=NEWS_CURRENT_VERDICT_CHOICES) is_duplicate = filters.BooleanFilter(field_name="is_duplicate") is_sensitive = filters.BooleanFilter(field_name="is_sensitive") is_spam = filters.BooleanFilter(field_name="is_spam") origin = filters.ChoiceFilter(field_name="origin", choices=NewsOrigin.choices) class Meta: model = News fields = ( "assigned_to_me", "current_verdict", "is_duplicate", "is_sensitive", "is_spam", "origin", )
class UserFilterSet(FilterSet): status = filters.ChoiceFilter(choices=settings.STATUS_USE_CHOICE, help_text='状态是否启动') bran = filters.ModelChoiceFilter(queryset=BranchesInfo.objects.all(), help_text='分部id') roles = filters.ModelChoiceFilter(queryset=RolesInfo.objects.all(), label='角色ID') class Meta: model = UsersInfo fields = []
class OrderQueryFilterSet(OrderStatementFilterSet): trans_code = filters.CharFilter(field_name='trans_code', lookup_expr='iexact', help_text='转单号', label='转单号') customer = filters.ModelChoiceFilter(queryset=CustomersInfo.objects.all(), help_text='客户', label='客户') order_status = filters.ChoiceFilter(choices=settings.ORDER_STATUS_CHOICE, help_text='订单状态', label='订单状态') channel = filters.ModelChoiceFilter(queryset=DataDictsValue.objects.all(), help_text='服务渠道', label='服务渠道') customer__salesman = filters.ModelChoiceFilter(queryset=UsersInfo.objects.all(), help_text='业务员') customer__service = filters.ModelChoiceFilter(queryset=UsersInfo.objects.all(), help_text='客服专员') operators = filters.ModelChoiceFilter(queryset=UsersInfo.objects.all(), help_text='操作员', label='操作员') class Meta: model = OrdersInfo fields = []
class OthersFundsFilterSet(FilterSet): fund_type = filters.ChoiceFilter(choices=settings.OTHER_FUND_TYPE_CHOICE, help_text='款项类型') fund_status = filters.ChoiceFilter(choices=settings.FUND_STATUS_CHOICE, help_text='款项状态') order = filters.ModelChoiceFilter(queryset=OrdFundsInfo.objects.all(), help_text='订单') freight = filters.ModelChoiceFilter(queryset=FreFundsInfo.objects.all(), help_text='运单') service = filters.ModelChoiceFilter(queryset=UsersInfo.objects.all(), help_text='款项专员') recpay_time_start = filters.DateTimeFilter(field_name='recpay_time', lookup_expr='gte', help_text='订单(查询起始时间)') recpay_time_end = filters.DateTimeFilter(field_name='recpay_time', lookup_expr='lte', help_text='订单(查询结束时间)') class Meta: model = OtherFundsInfo fields = []
class KilogramFilter(FilterSet): id = filters.CharFilter() in_bbox = filters.CharFilter(method='in_bbox_filter', label='bbox') detailed = filters.BooleanFilter(method='detailed_filter', label='detailed view') weigh_at_gt = filters.DateTimeFilter('weigh_at', lookup_expr='gt') weigh_at_lt = filters.DateTimeFilter('weigh_at', lookup_expr='lt') location = filters.CharFilter(method="locatie_filter", label='x,y,r') fractie = filters.ChoiceFilter(choices=settings.WASTE_CHOICES, label='waste name') # stadsdeel = filters.ChoiceFilter(choices=STADSDELEN) # buurt_code = filters.ChoiceFilter(choices=buurt_choices) class Meta(object): model = KilogramWeighMeasurement fields = ( "id", "seq_id", "fractie", "weigh_at", "weigh_at_gt", "weigh_at_lt", "stadsdeel", "buurt_code", "site_id", "first_weight", "second_weight", "net_weight", "in_bbox", "location", "detailed", "valid", ) def in_bbox_filter(self, qs, name, value): bbox_values, err = bbox.valid_bbox(value) lat1, lon1, lat2, lon2 = bbox_values poly_bbox = Polygon.from_bbox((lon1, lat1, lon2, lat2)) if err: raise ValidationError(f"bbox invalid {err}:{bbox_values}") return qs.filter(geometrie__bboverlaps=(poly_bbox)) def locatie_filter(self, qs, name, value): point, radius = bbox.parse_xyr(value) return qs.filter(geometrie__dwithin=(point, radius)) def detailed_filter(self, qs, name, valie): return qs
class OrdersFilterSet(FilterSet): customer__salesman = filters.ModelChoiceFilter(queryset=UsersInfo.objects.all(), help_text='业务员') customer__service = filters.ModelChoiceFilter(queryset=UsersInfo.objects.all(), help_text='客服专员') operators = filters.ModelChoiceFilter(queryset=UsersInfo.objects.all(), help_text='操作员') order_status = filters.ChoiceFilter(choices=settings.ORDER_STATUS_CHOICE, help_text='订单状态') channel = filters.ModelChoiceFilter(queryset=DataDictsValue.objects.all(), help_text='服务渠道') order_time_start = filters.DateTimeFilter(field_name='order_time', lookup_expr='order_time__gte', help_text='订单时间') order_time_end = filters.DateTimeFilter(field_name='order_time', lookup_expr='order_time_lte', help_text='订单时间') class Meta: model = OrdersInfo fields = []
class ManagementNewsFilter(FilterSet): current_verdict = filters.ChoiceFilter(field_name="current_verdict", choices=NEWS_FINAL_VERDICT_TYPES) deleted = filters.BooleanFilter(field_name="deleted") is_duplicate = filters.BooleanFilter(field_name="is_duplicate") is_pinned = filters.BooleanFilter(field_name="is_pinned") is_published = filters.BooleanFilter(field_name="is_published") is_sensitive = filters.BooleanFilter(field_name="is_sensitive") origin = filters.ChoiceFilter(field_name="origin", choices=NewsOrigin.choices) class Meta: model = News fields = ( "current_verdict", "deleted", "is_duplicate", "is_pinned", "is_published", "is_sensitive", "origin", )
class LocationFilter(FilterSet): """ """ id = filters.CharFilter() in_bbox = filters.CharFilter(method='in_bbox_filter', label='bbox') location = filters.CharFilter(method="locatie_filter", label='x,y,r') stadsdeel = filters.ChoiceFilter(choices=STADSDELEN) buurt_code = filters.ChoiceFilter(choices=buurt_choices) class Meta(object): model = Location fields = ( "id", "_signal__id", "buurt_code", "signal__location__stadsdeel", "signal__location__buurt_code", "created_at", "in_bbox", "location", ) def locatie_filter(self, qs, name, value): lon, lat, radius = parse_xyr(value) point = Point(lon, lat) return qs.filter(geometrie__dwithin=(point, bbox.dist_to_deg(radius, lat))) def in_bbox_filter(self, qs, name, value): bbox_values, err = bbox.valid_bbox(value) lon1, lat1, lon2, lat2 = bbox_values poly_bbox = Polygon.from_bbox((lon1, lat1, lon2, lat2)) if err: raise ValidationError(f"bbox invalid {err}:{bbox_values}") return qs.filter(geometrie__bboverlaps=poly_bbox)
class JurisdictionFilter(FilterSet): whitelisted = filters.BooleanFilter() slug = filters.ChoiceFilter(choices=jur_choices, label='Name') name_long = filters.CharFilter(label='Long Name') class Meta: model = models.Jurisdiction fields = [ 'id', 'name', 'name_long', 'whitelisted', 'slug', ]
class AdminNewsFilter(FilterSet): current_verdict = filters.ChoiceFilter(field_name="current_verdict", choices=NEWS_FINAL_VERDICT_TYPES) is_duplicate = filters.BooleanFilter(field_name="is_duplicate") deleted = filters.BooleanFilter(field_name="deleted") is_sensitive = filters.BooleanFilter(field_name="is_sensitive") class Meta: model = News fields = ( "current_verdict", "is_duplicate", "deleted", "is_sensitive", )
class CustomsFundsFilterSet(FilterSet): fund_status = filters.ChoiceFilter(choices=settings.FUND_STATUS_CHOICE, help_text='款项状态') channel = filters.ModelChoiceFilter(queryset=DataDictsValue.objects.all(), help_text='货运渠道') pack_time_start = filters.DateTimeFilter(field_name='pack_time', lookup_expr='gte', help_text='订单(查询起始时间)') pack_time_end = filters.DateTimeFilter(field_name='pack_time', lookup_expr='lte', help_text='订单(查询结束时间)') class Meta: model = CustomsFundsInfo fields = []
class CaseExportFilter(NoopMixin, FilterSet): with_old = filters.ChoiceFilter( field_name='with_old', label='Include previous versions of files?', choices=(('true', 'Include previous versions of files'), ('false', 'Only include newest version of each file')), method='noop', # handled by CaseExportViewSet.filter_queryset() ) class Meta: model = models.CaseExport fields = { 'body_format': ['exact'], 'filter_type': ['exact'], 'filter_id': ['exact'], }