30 lines
1.3 KiB
Python
30 lines
1.3 KiB
Python
from rest_framework import viewsets
|
|
from rest_framework.filters import SearchFilter, OrderingFilter
|
|
from django_filters.rest_framework import DjangoFilterBackend
|
|
from .models import Position, Department, Employee
|
|
from .serializers import PositionSerializer, DepartmentSerializer, EmployeeSerializer
|
|
from .filters import EmployeeFilter # Фильтры будут добавлены позже
|
|
|
|
class PositionViewSet(viewsets.ModelViewSet):
|
|
queryset = Position.objects.all()
|
|
serializer_class = PositionSerializer
|
|
filter_backends = [SearchFilter, OrderingFilter]
|
|
search_fields = ["name"]
|
|
ordering_fields = ["name"]
|
|
|
|
|
|
class DepartmentViewSet(viewsets.ModelViewSet):
|
|
queryset = Department.objects.all()
|
|
serializer_class = DepartmentSerializer
|
|
filter_backends = [SearchFilter, OrderingFilter]
|
|
search_fields = ["name"]
|
|
ordering_fields = ["name"]
|
|
|
|
|
|
class EmployeeViewSet(viewsets.ModelViewSet):
|
|
queryset = Employee.objects.all()
|
|
serializer_class = EmployeeSerializer
|
|
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
|
|
filterset_class = EmployeeFilter
|
|
search_fields = ["account__first_name", "account__last_name", "position__name", "department__name"]
|
|
ordering_fields = ["department", "position", "account__last_name"] |