position filter for employee

This commit is contained in:
alex 2020-01-16 16:23:10 +03:00
parent de55154d89
commit 2aec0bdfb4
3 changed files with 36 additions and 21 deletions

View File

@ -1,6 +1,5 @@
"""Account models"""
from datetime import datetime
from tabnanny import verbose
from django.conf import settings
from django.contrib.auth.models import AbstractUser, UserManager as BaseUserManager

View File

@ -1,8 +1,8 @@
"""Establishment app filters."""
from django.core.validators import EMPTY_VALUES
from django.utils.translation import ugettext_lazy as _
from django_filters import rest_framework as filters
from rest_framework.serializers import ValidationError
from django.utils.translation import ugettext_lazy as _
from establishment import models
@ -10,8 +10,8 @@ from establishment import models
class EstablishmentFilter(filters.FilterSet):
"""Establishment filter set."""
tag_id = filters.NumberFilter(field_name='tags__metadata__id',)
award_id = filters.NumberFilter(field_name='awards__id',)
tag_id = filters.NumberFilter(field_name='tags__metadata__id', )
award_id = filters.NumberFilter(field_name='awards__id', )
search = filters.CharFilter(method='search_text')
type = filters.CharFilter(method='by_type')
subtype = filters.CharFilter(method='by_subtype')
@ -67,6 +67,7 @@ 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')
class Meta:
"""Meta class."""
@ -74,6 +75,7 @@ class EmployeeBackFilter(filters.FilterSet):
model = models.Employee
fields = (
'search',
'position_id',
)
def search_by_name_or_last_name(self, queryset, name, value):
@ -82,6 +84,12 @@ class EmployeeBackFilter(filters.FilterSet):
return queryset.search_by_name_or_last_name(value)
return queryset
def search_by_actual_position_id(self, queryset, name, value):
"""Search by actual position_id."""
if value not in EMPTY_VALUES:
return queryset.search_by_position_id(value)
return queryset
class EmployeeBackSearchFilter(EmployeeBackFilter):
def search_by_name_or_last_name(self, queryset, name, value):

View File

@ -653,7 +653,6 @@ class Establishment(GalleryMixin, ProjectBaseMixin, URLImageMixin,
country = self.address.city.country
return country.low_price, country.high_price
def set_establishment_type(self, establishment_type):
self.establishment_type = establishment_type
self.establishment_subtypes.exclude(
@ -991,6 +990,15 @@ class EmployeeQuerySet(models.QuerySet):
"""Search by name or last_name."""
return self._generic_search(value, ['name', 'last_name'])
def search_by_position_id(self, value):
"""Search by position_id."""
return self.filter(
Q(establishmentemployee__position_id=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',