From beefc82d7b1828cf00565260fb2940e42b0b5c30 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 20 Jan 2020 14:20:46 +0300 Subject: [PATCH] toque number and employee for establishment --- apps/establishment/filters.py | 8 +++++++- apps/establishment/models.py | 10 ++++++++-- apps/establishment/serializers/back.py | 9 ++++++++- make_data_migration.sh | 8 +++++++- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/apps/establishment/filters.py b/apps/establishment/filters.py index 14d6ae05..3a7d3398 100644 --- a/apps/establishment/filters.py +++ b/apps/establishment/filters.py @@ -69,7 +69,7 @@ class EmployeeBackFilter(filters.FilterSet): search = filters.CharFilter(method='search_by_name_or_last_name') 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') + toque_number = filters.NumberFilter(method='search_by_toque_number') username = filters.CharFilter(method='search_by_username_or_name') class Meta: @@ -102,6 +102,12 @@ class EmployeeBackFilter(filters.FilterSet): return queryset.search_by_public_mark(value) return queryset + def search_by_toque_number(self, queryset, name, value): + """Search by establishment toque_number.""" + if value not in EMPTY_VALUES: + return queryset.search_by_toque_number(value) + return queryset + def search_by_username_or_name(self, queryset, name, value): """Search by username or name.""" if value not in EMPTY_VALUES: diff --git a/apps/establishment/models.py b/apps/establishment/models.py index e21c95a6..7f20c529 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -1036,16 +1036,22 @@ class EmployeeQuerySet(models.QuerySet): def search_by_position_id(self, value): """Search by position_id.""" - return self.search_by_actual_employee().filter( + return self.filter( Q(establishmentemployee__position_id=value), ) def search_by_public_mark(self, value): """Search by establishment public_mark.""" - return self.search_by_actual_employee().filter( + return self.filter( Q(establishmentemployee__establishment__public_mark=value), ) + def search_by_toque_number(self, value): + """Search by establishment toque_number.""" + return self.filter( + Q(establishmentemployee__establishment__toque_number=value), + ) + def search_by_username_or_name(self, value): """Search by username or name.""" return self.search_by_actual_employee().filter( diff --git a/apps/establishment/serializers/back.py b/apps/establishment/serializers/back.py index 05cccc56..be59c73c 100644 --- a/apps/establishment/serializers/back.py +++ b/apps/establishment/serializers/back.py @@ -341,9 +341,16 @@ class EstablishmentEmployeeBackSerializer(serializers.ModelSerializer): class EstEmployeeBackSerializer(EmployeeBackSerializers): + @property + def request_kwargs(self): + """Get url kwargs from request.""" + return self.context.get('request').parser_context.get('kwargs') + def get_positions(self, obj): + establishment_id = self.request_kwargs.get('establishment_id') es_emp = EstablishmentEmployee.objects.filter( - employee=obj + employee=obj, + establishment_id=establishment_id, ).distinct().order_by('position_id') result = [] for item in es_emp: diff --git a/make_data_migration.sh b/make_data_migration.sh index a6fd811d..d5edc793 100755 --- a/make_data_migration.sh +++ b/make_data_migration.sh @@ -31,4 +31,10 @@ # оптимизация изображений /manage.py news_optimize_images # сжимает картинки в описаниях новостей -/manage.py update_establishment_image_urls # удаляет неотображаемые картинки из модели заведения \ No newline at end of file +/manage.py update_establishment_image_urls # удаляет неотображаемые картинки из модели заведения + +# сотрудники с позициями для заведений +./manage.py add_employee +./manage.py add_position +./manage.py add_empl_position +./manage.py update_employee \ No newline at end of file