From 38485292f9af3f645cc2097a8d5e460c0567936c Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 17 Jan 2020 09:21:51 +0300 Subject: [PATCH] public_mark filter for actual employee --- apps/establishment/filters.py | 10 +++++++++- apps/establishment/models.py | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/apps/establishment/filters.py b/apps/establishment/filters.py index 32d29941..11f150b0 100644 --- a/apps/establishment/filters.py +++ b/apps/establishment/filters.py @@ -67,7 +67,8 @@ class EmployeeBackFilter(filters.FilterSet): """Employee filter set.""" search = filters.CharFilter(method='search_by_name_or_last_name') - position_id = filters.CharFilter(method='search_by_actual_position_id') + position_id = filters.NumberFilter(method='search_by_actual_position_id') + public_mark = filters.NumberFilter(method='search_by_public_mark') toque_number = filters.NumberFilter(field_name='toque_number') class Meta: @@ -77,6 +78,7 @@ class EmployeeBackFilter(filters.FilterSet): fields = ( 'search', 'position_id', + 'public_mark', 'toque_number', ) @@ -92,6 +94,12 @@ class EmployeeBackFilter(filters.FilterSet): return queryset.search_by_position_id(value) return queryset + def search_by_public_mark(self, queryset, name, value): + """Search by establishment public_mark.""" + if value not in EMPTY_VALUES: + return queryset.search_by_public_mark(value) + return queryset + class EmployeeBackSearchFilter(EmployeeBackFilter): def search_by_name_or_last_name(self, queryset, name, value): diff --git a/apps/establishment/models.py b/apps/establishment/models.py index 6e37370c..867ea960 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -1007,6 +1007,15 @@ class EmployeeQuerySet(models.QuerySet): Q(establishmentemployee__to_date__isnull=True) ) + def search_by_public_mark(self, value): + """Search by establishment public_mark.""" + return self.filter( + Q(establishmentemployee__establishment__public_mark=value), + Q(establishmentemployee__from_date__lte=datetime.now()), + Q(establishmentemployee__to_date__gte=datetime.now()) | + Q(establishmentemployee__to_date__isnull=True) + ) + def actual_establishment(self): e = EstablishmentEmployee.objects.actual().filter(employee=self) return self.prefetch_related(models.Prefetch('establishmentemployee_set',