employee for admin

This commit is contained in:
alex 2020-02-07 15:02:58 +03:00
parent e4547b9554
commit 955527a2c1
2 changed files with 14 additions and 14 deletions

View File

@ -60,6 +60,7 @@ urlpatterns = [
path('<int:establishment_id>/employees/', views.EstablishmentEmployeeListView.as_view(),
name='establishment-employees'),
path('employees/', views.EmployeeListCreateView.as_view(), name='employees'),
path('employees/for_admin/', views.AdminEmployeeListView.as_view(), name='employees-list-for-admin'),
path('employees/search/', views.EmployeesListSearchViews.as_view(), name='employees-search'),
path('employees/<int:pk>/', views.EmployeeRUDView.as_view(), name='employees-rud'),
path('employees/<int:pk>/<int:award_id>', views.RemoveAwardView.as_view(), name='employees-award-delete'),

View File

@ -829,35 +829,34 @@ class EmployeeRUDView(generics.RetrieveUpdateDestroyAPIView):
class AdminEmployeeListView(generics.ListAPIView):
"""
## Employee list view, where request user is admin.
## Employee list view, where request user is ESTABLISHMENT_ADMINISTRATOR.
### *GET*
#### Description
Return paginated list of employees with available filters:
* search (`str`) - filter by name or last name with mistakes
* position_id (`int`) - filter by employees position identifier
* public_mark (`str`) - filter by establishment public mark
* toque_number (`str`) - filter by establishment toque number
* username (`str`) - filter by a username or name
Return paginated list of employees.
#### Response
```
{
"id": 1324,
"name": "Alex",
"establishment_id": 1324,
"establishment_type": 1324,
"establishment_subtype": 1324,
"establishment_slug": "slug",
"last_name": "Wolf",
{
```
"""
serializer_class = serializers.EmployeeBackSerializers
queryset = models.Employee.objects.all().distinct().with_back_office_related()
serializer_class = serializers.AdminEmployeeBackSerializers
permission_classes = get_permission_classes(IsEstablishmentAdministrator, )
pagination_class = None
def get_queryset(self):
qs = super().get_queryset()
user = self.request.user
est_ids = models.Establishment.objects.filter(
userrole__user=user,
userrole__role__role=Role.ESTABLISHMENT_ADMINISTRATOR,
).values_list('id', flat=True)
qs = models.Employee.objects.filter(establishments__in=est_ids).distinct().with_back_office_related()
if self.request.country_code:
qs = qs.filter(establishments__address__city__country__code=self.request.country_code)
return qs