class BlockDiagramFilter(FilterSet): """Filterset for the BlockDiagram model.""" user__not = NumberFilter(field_name='user', exclude=True) class Meta: """Meta class.""" model = BlockDiagram fields = ['name', 'user', 'user__not']
class FilePrescriptionFilter(FilterSet): prescription_id = NumberFilter(field_name='prescription_id', label='소견서 객체의 pk') writer_id = NumberFilter(label='작성자(의사) 계정의 id') writer_name = CharFilter(label='작성자(의사)의 이름') patient_id = NumberFilter(label='환자 계정의 id') patient_name = CharFilter(label='환자의 이름') status = ChoiceFilter(field_name='status', choices=HealthStatus.choices) created_at = DateLookupChoiceFilter( field_class=DateFilter.field_class, field_name='created_at', lookup_choices=[ ('exact', 'Equals'), ('gte', 'Greater than'), ('lte', 'Less than') ], label='소견서 작성일(FilePrescription은 소견서 작성시 생성됨)' ) date = LookupChoiceFilter( field_class=DateFilter.field_class, field_name='date', lookup_choices=[ ('exact', 'Equals'), ('gte', 'Greater than'), ('lte', 'Less than') ], label='파일 업로드 날짜') active = BooleanFilter(field_name='active', label='파일 업로드가 활성화 되었는지 표시') uploaded = BooleanFilter(field_name='uploaded', label='환자가 파일을 올렸는지 표시') checked = BooleanFilter(field_name='checked', label='의사가 환자가 올린 파일을 확인했는지 표시') ordering = OrderingFilter( fields={ 'created_at': 'created_at', 'date': 'date' }, field_labels={ 'created_at': '소견서 작성일', 'date': '파일 업로드 날짜' } ) class Meta: model = FilePrescription fields = ['writer_id', 'writer_name', 'patient_id', 'patient_name', 'prescription_id', 'status', 'created_at', 'date', 'active', 'uploaded', 'checked', 'ordering']
class ArticleFilter(FilterSet): user = NumberFilter(field_name='user') title = CharFilter(field_name='title', lookup_expr='contains') first_name = CharFilter(field_name='user__first_name', lookup_expr='startswith') last_name = CharFilter(field_name='user__last_name', lookup_expr='startswith') class Meta: model = Article fields = []
class BooksFilter(FilterSet): """ Custom filter for filtering on Book model. """ name = CharFilter(field_name='name') publisher = CharFilter(field_name='publisher', lookup_expr='name') release_date = NumberFilter(field_name='released_date', lookup_expr='year') class Meta: model = Book fields = ['name']
class ProductFilter(FilterSet): # explicit filter declaration max_price = NumberFilter(field_name="price", lookup_expr='lte', label='highest price') max_sub_price = NumberFilter(field_name="subproduct__sub_price", lookup_expr='lte') sub = NumberFilter(field_name="subproduct", lookup_expr='exact') int_id = NumberFilter(method='filter_method_typed') number_id = NumberFilter(method='filter_method_untyped', help_text='some injected help text') number_id_ext = NumberFilter(method=external_filter_method) # implicit filter declaration subproduct__sub_price = NumberFilter() # reverse relation other_sub_product__uuid = UUIDFilter() # forward relation # special cases ordering = OrderingFilter( fields=('price', 'in_stock'), field_labels={ 'price': 'Price', 'in_stock': 'in stock' }, ) in_categories = BaseInFilter(field_name='category') is_free = BooleanFilter(field_name='price', lookup_expr='isnull') price_range = RangeFilter(field_name='price') model_multi_cat = ModelMultipleChoiceFilter(field_name='category', queryset=Product.objects.all()) model_single_cat = ModelChoiceFilter(field_name='category', queryset=Product.objects.all()) all_values = AllValuesFilter(field_name='price') custom_filter = CustomBooleanFilter(field_name='price', lookup_expr='isnull') custom_underspec_filter = CustomBaseInFilter(field_name='category') model_multi_cat_relation = ModelMultipleChoiceFilter( field_name='other_sub_product', queryset=OtherSubProduct.objects.all()) class Meta: model = Product fields = [ 'category', 'in_stock', 'max_price', 'max_sub_price', 'sub', 'subproduct__sub_price', 'other_sub_product__uuid', ] def filter_method_typed(self, queryset, name, value: int): return queryset.filter(id=int(value)) def filter_method_untyped(self, queryset, name, value): return queryset.filter(id=int(value)) # pragma: no cover
class ManagerLogFilter(FilterSet): realname = CharFilter('user__realname', lookup_expr='icontains') type = NumberFilter('type') operate_name = CharFilter('operate_name', lookup_expr='icontains') operate_name = CharFilter('operate_name', lookup_expr='icontains') class Meta: model = ManagerLog fields = [ 'realname', ]
class StationFilter(FilterSet): """ The filter class for stations Attributes ---------- capacity_gt: int capacity filter to get stations whose capacity is greater than this value capacity_lt: int capacity filter to get stations whose capacity is less than this value """ capacity_gt = NumberFilter(name='capacity', lookup_expr='gt') capacity_lt = NumberFilter(name='capacity', lookup_expr='lt') name = CharFilter(name='name', lookup_expr='contains') class Meta: model = Station fields = '__all__'
class EncouragementFilter(FilterSet): milgroup = NumberFilter(field_name='student__milgroup__milgroup') date_from = DateFilter(field_name='date', lookup_expr='gte') date_to = DateFilter(field_name='date', lookup_expr='lte') class Meta: model = Encouragement fields = [ 'reason', 'milgroup', 'student', 'teacher', 'encouragement_type' ]
class ProductFilter(FilterSet): # explicit filter declaration max_price = NumberFilter(field_name="price", lookup_expr='lte', label='highest price') max_sub_price = NumberFilter(field_name="subproduct__sub_price", lookup_expr='lte') sub = NumberFilter(field_name="subproduct", lookup_expr='exact') int_id = NumberFilter(method='filter_method_typed') number_id = NumberFilter(method='filter_method_untyped', help_text='some injected help text') # implicit filter declaration subproduct__sub_price = NumberFilter() # reverse relation other_sub_product__uuid = CharFilter() # forward relation class Meta: model = Product fields = [ 'category', 'in_stock', 'max_price', 'max_sub_price', 'sub', 'subproduct__sub_price', 'other_sub_product__uuid', ] def filter_method_typed(self, queryset, name, value: int): return queryset.filter(id=int(value)) def filter_method_untyped(self, queryset, name, value): return queryset.filter(id=int(value))
class PunishmentFilter(FilterSet): milgroup = NumberFilter(field_name='student__milgroup__milgroup') date_from = DateFilter(field_name='date', lookup_expr='gte') date_to = DateFilter(field_name='date', lookup_expr='lte') remove_date_from = DateFilter(field_name='remove_date', lookup_expr='gte') remove_date_to = DateFilter(field_name='remove_date', lookup_expr='lte') class Meta: model = Punishment fields = ['reason', 'milgroup', 'student', 'teacher', 'type']
class UnitReportFilter(FilterSet): status = NumberFilter(method='status_filter', label='status') id = NumberFilter('id') student_name = CharFilter(method='student_name_filter', label='student_name') course_edition = NumberFilter(method='course_edition_filter', label='course_edition') course_level = NumberFilter(method='course_level_filter', label='course_level') course_unit = NumberFilter('unit_no') user_name = CharFilter(method='user_name_filter', label='user_name') tutor_name = CharFilter(method='tutor_name_filter', label='tutor_name') send_parent = NumberFilter('status') examine_user = CharFilter(method='examine_user_filter', label='examine_user') def examine_user_filter(self, queryset, name, value): cms_user = UserInfo.objects.filter(realname__icontains=value).first() if not cms_user: return queryset queryset = queryset.filter(unit_report_audit__audit_user_id=cms_user.id) return queryset def status_filter(self, queryset, name, value): if int(value) == VirtualclassUnitReport.EXAMINED: queryset = queryset.filter(Q(status=VirtualclassUnitReport.EXAMINED)|Q(status=VirtualclassUnitReport.SAVED)) else: queryset = queryset.filter(status=value) return queryset def tutor_name_filter(self, queryset, name, value): queryset = queryset.filter( Q(tutor_user__username__icontains=value) | Q(tutor_user__email__icontains=value) | Q(tutor_user__phone__icontains=value) | Q( tutor_user__real_name__icontains=value)) return queryset def user_name_filter(self, queryset, name, value): queryset = queryset.filter( Q(student_user__parent_user__adviser_user_id=value) | Q(student_user__parent_user__xg_user_id=value)) return queryset def student_name_filter(self, queryset, name, value): queryset = queryset.filter( Q(student_user__real_name__icontains=value) | Q(student_user__parent_user__username__icontains=value) | Q(student_user__parent_user__email__icontains=value) | Q(student_user__parent_user__phone__icontains=value)) return queryset def course_edition_filter(self, queryset, name, value): queryset = queryset.filter(virtual_class__lesson__course__course_edition_id=value) return queryset def course_level_filter(self, queryset, name, value): queryset = queryset.filter(virtual_class__lesson__course__course_level=value) return queryset class Meta: model = VirtualclassUnitReport fields = ['id', 'status', 'student_name', 'course_edition', 'course_level', 'course_unit', 'user_name', 'tutor_name', 'send_parent', 'examine_user']
class CustomerFilterSet(FilterSet): """Filter set for the customers endpoint.""" archived = NumberFilter(field_name='archived') class Meta: """Meta information for the customer filter set.""" model = models.Customer fields = [ 'archived', 'reference' ]
class TripFilter(FilterSet): """ The filter class for trips """ start_time_gt = DateTimeFilter(field_name='start_time', lookup_expr='gt') start_time_lt = DateTimeFilter(field_name='start_time', lookup_expr='lt') stop_time_gt = DateTimeFilter(field_name='stop_time', lookup_expr='gt') stop_time_lt = DateTimeFilter(field_name='stop_time', lookup_expr='lt') start_date_gt = DateFilter(field_name='start_date', lookup_expr='gt') start_date_lt = DateFilter(field_name='start_date', lookup_expr='lt') stop_date_gt = DateFilter(field_name='stop_date', lookup_expr='gt') stop_date_lt = DateFilter(field_name='stop_date', lookup_expr='lt') birth_year_gt = NumberFilter(name='birth_year', lookup_expr='gt') birth_year_lt = NumberFilter(name='birth_year', lookup_expr='lt') duration_gt = NumberFilter(name='duration', lookup_expr='gt') duration_lt = NumberFilter(name='duration', lookup_expr='lt') class Meta: model = Trip fields = '__all__'
class RangeFiltering(FilterSet): """ A filter class for applying filters. """ from django_filters.rest_framework import ( NumberFilter, ModelMultipleChoiceFilter, CharFilter, DateFilter, ) from .models import TransactionMode start_date = DateFilter(field_name="transaction_date", lookup_expr="gte") end_date = DateFilter(field_name="transaction_date", lookup_expr="lte") start_amount = NumberFilter(field_name="amount", lookup_expr="gte") end_amount = NumberFilter(field_name="amount", lookup_expr="lte") mode = ModelMultipleChoiceFilter(field_name="mode", queryset=TransactionMode.objects.all()) amount = NumberFilter(field_name="amount") id = NumberFilter(field_name="id") category = CharFilter(field_name="category") transaction_date = DateFilter(field_name="transaction_date") class Meta: from .models import TransactionDetail model = TransactionDetail fields = ( "start_date", "end_date", "start_amount", "end_amount", "mode", "amount", "id", "category", "transaction_date", )
class TaskFilterSet(FilterSet): """Filter set for the tasks endpoint.""" my_most_frequent = MyMostFrequentTaskFilter() archived = NumberFilter(field_name="archived") class Meta: """Meta information for the task filter set.""" model = models.Task fields = [ "archived", "project", "my_most_frequent", "reference", "cost_center" ]
class RangeFiltering(FilterSet): """ A filter class for applying filters. """ from django_filters.rest_framework import NumberFilter, ModelMultipleChoiceFilter, CharFilter, DateFilter from .models import TransactionMode start_date = DateFilter(field_name='transaction_date', lookup_expr='gte') end_date = DateFilter(field_name='transaction_date', lookup_expr='lte') start_amount = NumberFilter(field_name='amount', lookup_expr='gte') end_amount = NumberFilter(field_name='amount', lookup_expr='lte') mode = ModelMultipleChoiceFilter(field_name='mode', queryset=TransactionMode.objects.all()) amount = NumberFilter(field_name='amount') id = NumberFilter(field_name='id') category = CharFilter(field_name='category') transaction_date = DateFilter(field_name='transaction_date') class Meta: from .models import TransactionDetail model = TransactionDetail fields = ('start_date', 'end_date', 'start_amount', 'end_amount', 'mode', 'amount', 'id', 'category', 'transaction_date')
class LocationRangeFilter(FilterSet): locate = CharFilter(field_name='pk', lookup_expr='exact', help_text='동 ID') lati = NumberFilter(method='filter_distance', help_text='위도') longi = NumberFilter(method='filter_distance', help_text='경도') distance = CharFilter(method='filter_distance', required=True, help_text='범위') class Meta: model = Locate fields = ['locate', 'longi', 'lati', 'distance'] def filter_distance(self, qs, name, value): if self.data.get('locate', None): pnt = qs.get().latlng else: self.data._mutable = True pnt = Point(float(self.data['longi']), float(self.data['lati'])) self.data._mutable = False distance = self.data['distance'] ret = Locate.objects.filter( latlng__distance_lt=(pnt, D(m=distance)), ).annotate( distance=Distance(pnt, 'latlng')).order_by('distance') return ret
class CommentFilter(FilterSet): course_edition = NumberFilter( 'virtual_class__lesson__course__course_edition_id') course_level = NumberFilter('virtual_class__lesson__course__course_level') tutor_name = CharFilter(method='tutor_name_filter', label='tutor_name') start_date = CharFilter(method='start_date_filter', label='start_date') end_date = CharFilter(method='end_date_filter', label='end_date') lesson_no = NumberFilter('virtual_class__lesson_no') def start_date_filter(self, queryset, name, value): start_date_filter = "DATE(CONVERT_TZ(classroom_virtualclass_comment.create_time, '+00:00', '+08:00'))>='{}'".format( value) queryset = queryset.extra(where=[start_date_filter]) return queryset def end_date_filter(self, queryset, name, value): end_date_filter = "DATE(CONVERT_TZ(classroom_virtualclass_comment.create_time, '+00:00', '+08:00'))<='{}'".format( value) queryset = queryset.extra(where=[end_date_filter]) return queryset def tutor_name_filter(self, queryset, name, value): queryset = queryset.filter( Q(tutor_user__username__icontains=value) | Q(tutor_user__email__icontains=value) | Q(tutor_user__phone__icontains=value) | Q(tutor_user__real_name__icontains=value)) return queryset class Meta: model = VirtualclassComment fields = [ 'course_edition', 'course_level', 'start_date', 'end_date', 'tutor_name', 'lesson_no' ]
class InmuebleFilter(FilterSet): titulo = CharFilter(method='filtro_titulo', field_name='titulo') tipo = NumberFilter(method='filtro_tipo', field_name='tipo') class Meta: model = Inmueble fields = { 'titulo', 'tipo' } def filtro_titulo(self, queryset, name, value): return queryset.filter(titulo__contains=value) def filtro_tipo(self,queryset,name,value): return queryset.filter(tipo__id = value)
class UserFilter(filters.FilterSet): user_id = NumberFilter(field_name='user_id', method='user_id_filter', label='user_id') def user_id_filter(self, queryset, name, value): return queryset class Meta: model = User fields = { 'user_id': ['exact'], 'name': ['exact', 'icontains'], 'account': ['icontains'], }
class TaskFilterSet(FilterSet): """Filter set for the tasks endpoint.""" my_most_frequent = MyMostFrequentTaskFilter() archived = NumberFilter(field_name='archived') class Meta: """Meta information for the task filter set.""" model = models.Task fields = [ 'archived', 'project', 'my_most_frequent', 'reference', 'cost_center' ]
class PostFilter(FilterSet): afinidad = CharFilter(method='filtro_afinidad', ) titulo = CharFilter(method='filtro_titulo') autor = NumberFilter(field_name='autor') class Meta: model = Post fields = { 'afinidad', 'titulo', 'autor', } def filtro_afinidad(self, queryset, name, value): values = value.split(',') return queryset.filter(afinidad__in=values) def filtro_titulo(self, queryset, name, value): return queryset.filter(titulo__contains=value)
class BlockDiagramFilter(FilterSet): """Filterset for the BlockDiagram model.""" admin_tags = CharFilter(method='filter_admin_tags') owner_tags = CharFilter(method='filter_owner_tags') tag = CharFilter(method='filter_tags') user__not = NumberFilter(field_name='user', exclude=True) class Meta: """Meta class.""" model = BlockDiagram fields = [ 'admin_tags', 'name', 'owner_tags', 'tag', 'user', 'user__not', ] @staticmethod def filter_tags(queryset, _, value): """Use all tags when filtering.""" tags = value.split(',') return queryset.filter( Q(owner_tags__name__in=tags) | Q(admin_tags__name__in=tags)).distinct() @staticmethod def filter_owner_tags(queryset, _, value): """Filter on list of owner tags.""" tags = value.split(',') return queryset.filter(owner_tags__name__in=tags) @staticmethod def filter_admin_tags(queryset, _, value): """Filter on list of admin tags.""" tags = value.split(',') return queryset.filter(admin_tags__name__in=tags)
class ProductFilter(FilterSet): min_price = NumberFilter(field_name="price", lookup_expr='gte') max_price = NumberFilter(field_name="price", lookup_expr='lte') min_data = NumberFilter(field_name="data", lookup_expr='gte') max_data = NumberFilter(field_name="data", lookup_expr='lte') min_contract = NumberFilter(field_name="contract_length", lookup_expr='gte') max_contract = NumberFilter(field_name="contract_length", lookup_expr='lte') class Meta: model = Product fields = [ 'min_price', 'max_price', 'min_data', 'max_data', 'min_contract', 'max_contract', 'call_time', 'sms', 'telco', 'category' ]
class PantsFilter(FilterSet): # pylint: disable=too-many-ancestors class Meta: fields = [ 'brand', 'model', 'color', 'material', 'min_cost_price', 'max_cost_price', 'min_sell_price', 'max_sell_price', 'min_profit', 'max_profit', 'min_taxes', 'max_taxes', 'min_created_at', 'max_created_at', 'min_updated_at', 'max_updated_at', ] brand = CharFilter(lookup_expr='icontains') model = CharFilter(lookup_expr='icontains') color = CharFilter(lookup_expr='icontains') material = CharFilter(lookup_expr='icontains') min_cost_price = NumberFilter(field_name='cost_price', lookup_expr='gte') max_cost_price = NumberFilter(field_name='cost_price', lookup_expr='lte') min_sell_price = NumberFilter(field_name='sell_price', lookup_expr='gte') max_sell_price = NumberFilter(field_name='sell_price', lookup_expr='lte') min_profit = NumberFilter(field_name='profit', lookup_expr='gte') max_profit = NumberFilter(field_name='profit', lookup_expr='lte') min_taxes = NumberFilter(field_name='taxes', lookup_expr='gte') max_taxes = NumberFilter(field_name='taxes', lookup_expr='lte') min_created_at = DateTimeFilter(field_name='created_at', lookup_expr='gte') max_created_at = DateTimeFilter(field_name='created_at', lookup_expr='lte') min_updated_at = DateTimeFilter(field_name='updated_at', lookup_expr='gte') max_updated_at = DateTimeFilter(field_name='updated_at', lookup_expr='lte')
class ProductFilter(FilterSet): # explicit filter declaration max_price = NumberFilter(field_name="price", lookup_expr='lte', label='highest price') max_sub_price = NumberFilter(field_name="subproduct__sub_price", lookup_expr='lte') sub = NumberFilter(field_name="subproduct", lookup_expr='exact') int_id = NumberFilter(method='filter_method_typed') number_id = NumberFilter(method='filter_method_untyped', help_text='some injected help text') number_id_ext = NumberFilter(method=external_filter_method) # implicit filter declaration subproduct__sub_price = NumberFilter() # reverse relation other_sub_product__uuid = CharFilter() # forward relation # special cases ordering = OrderingFilter( fields=('price', 'in_stock'), field_labels={ 'price': 'Price', 'in_stock': 'in stock' }, ) in_categories = BaseInFilter(field_name='category') class Meta: model = Product fields = [ 'category', 'in_stock', 'max_price', 'max_sub_price', 'sub', 'subproduct__sub_price', 'other_sub_product__uuid', ] def filter_method_typed(self, queryset, name, value: int): return queryset.filter(id=int(value)) def filter_method_untyped(self, queryset, name, value): return queryset.filter(id=int(value)) # pragma: no cover
class notarisedFilter(FilterSet): min_block = NumberFilter(field_name="block_height", lookup_expr='gte') max_block = NumberFilter(field_name="block_height", lookup_expr='lte') min_ac_block = NumberFilter(field_name="ac_ntx_height", lookup_expr='gte') max_ac_block = NumberFilter(field_name="ac_ntx_height", lookup_expr='lte') min_blocktime = NumberFilter(field_name="block_time", lookup_expr='gte') max_blocktime = NumberFilter(field_name="block_time", lookup_expr='lte') notary = CharFilter(field_name="notaries", lookup_expr='contains') class Meta: model = notarised fields = [ 'min_block', 'max_block', 'min_ac_block', 'max_ac_block', 'min_blocktime', 'max_blocktime', 'txid', 'chain', 'block_height', 'block_time', 'block_datetime', 'block_hash', 'ac_ntx_blockhash', 'ac_ntx_height', 'opret', 'season', 'server', 'epoch', 'scored' ]
class CityFilter(FilterSet): city = NumberFilter(field_name='city') class Meta: model = Restaurant fields = []
class ApiHitFilterSet(FilterSet): action = CharFilter(field_name='action', lookup_expr='icontains') hit_date = DateTimeFilter(field_name='hit_date') code_id = NumberFilter(field_name='code__id', lookup_expr='exact', label='Code id')
class ClassFilter(FilterSet): learning_unit = NumberFilter(field_name='sections__learning_unit') teacher = NumberFilter(field_name='teacher')