feat: add ReferenceItem model and update QuickEvaluation FKs
- Create ReferenceitemModel with type, name, parent (self FK), order, is_active fields - Add ReferenceType choices: brand, marka, color, fuel_type, body_type, car_position, state_car - Implement ReferenceItem API (list, retrieve) with filter by type/parent/is_active, search, ordering - Add ReferenceItem admin with list_filter, search, inline editing - Change QuickEvaluation FK fields from shared.OptionsModel to evaluation.ReferenceitemModel - Update serializers and views to use .name instead of .key - Add ReferenceItem to unfold admin navigation
This commit is contained in:
@@ -4,6 +4,7 @@ from .document import * # noqa
|
||||
from .movable import * # noqa
|
||||
from .quick import * # noqa
|
||||
from .real_estate import * # noqa
|
||||
from .reference import * # noqa
|
||||
from .report import * # noqa
|
||||
from .valuation import * # noqa
|
||||
from .vehicle import * # noqa
|
||||
|
||||
@@ -2,8 +2,9 @@ from django_core.mixins import BaseViewSetMixin
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from drf_spectacular.utils import extend_schema
|
||||
from rest_framework.filters import OrderingFilter, SearchFilter
|
||||
from rest_framework.parsers import FormParser, MultiPartParser
|
||||
from rest_framework.permissions import AllowAny
|
||||
from rest_framework.viewsets import ReadOnlyModelViewSet
|
||||
from rest_framework.viewsets import ModelViewSet
|
||||
|
||||
from core.apps.evaluation.filters.quick import QuickevaluationFilter
|
||||
from core.apps.evaluation.models import QuickEvaluationModel
|
||||
@@ -15,27 +16,31 @@ from core.apps.evaluation.serializers.quick import (
|
||||
|
||||
|
||||
@extend_schema(tags=["QuickEvaluation"])
|
||||
class QuickEvaluationView(BaseViewSetMixin, ReadOnlyModelViewSet):
|
||||
queryset = QuickEvaluationModel.objects.select_related("created_by").all()
|
||||
class QuickEvaluationView(BaseViewSetMixin, ModelViewSet):
|
||||
queryset = QuickEvaluationModel.objects.select_related(
|
||||
"created_by", "brand", "marka", "color", "fuel_type",
|
||||
"body_type", "state_car", "car_position",
|
||||
).all()
|
||||
serializer_class = ListQuickevaluationSerializer
|
||||
permission_classes = [AllowAny]
|
||||
parser_classes = [MultiPartParser, FormParser]
|
||||
|
||||
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
|
||||
filterset_class = QuickevaluationFilter
|
||||
search_fields = ["license_plate", "model", "brand"]
|
||||
search_fields = ["car_number", "marka__name", "brand__name"]
|
||||
ordering_fields = [
|
||||
"created_at",
|
||||
"updated_at",
|
||||
"license_plate",
|
||||
"brand",
|
||||
"model",
|
||||
"car_number",
|
||||
"brand__name",
|
||||
"marka__name",
|
||||
"car_type",
|
||||
"manufacture_year",
|
||||
"color",
|
||||
"fuel_type",
|
||||
"state_car",
|
||||
"car_manufactured_date",
|
||||
"color__name",
|
||||
"fuel_type__name",
|
||||
"state_car__name",
|
||||
"status",
|
||||
"mileage",
|
||||
"distance_covered",
|
||||
]
|
||||
ordering = ["-created_at"]
|
||||
|
||||
|
||||
34
core/apps/evaluation/views/reference.py
Normal file
34
core/apps/evaluation/views/reference.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from django_core.mixins import BaseViewSetMixin
|
||||
from django_filters.rest_framework import DjangoFilterBackend
|
||||
from drf_spectacular.utils import extend_schema
|
||||
from rest_framework.filters import OrderingFilter, SearchFilter
|
||||
from rest_framework.permissions import AllowAny
|
||||
from rest_framework.viewsets import ReadOnlyModelViewSet
|
||||
|
||||
from core.apps.evaluation.filters.reference import ReferenceitemFilter
|
||||
from core.apps.evaluation.models import ReferenceitemModel
|
||||
from core.apps.evaluation.serializers.reference import (
|
||||
CreateReferenceitemSerializer,
|
||||
ListReferenceitemSerializer,
|
||||
RetrieveReferenceitemSerializer,
|
||||
)
|
||||
|
||||
|
||||
@extend_schema(tags=["ReferenceItem"])
|
||||
class ReferenceitemView(BaseViewSetMixin, ReadOnlyModelViewSet):
|
||||
queryset = ReferenceitemModel.objects.select_related("parent").filter(is_active=True)
|
||||
serializer_class = ListReferenceitemSerializer
|
||||
permission_classes = [AllowAny]
|
||||
|
||||
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
|
||||
filterset_class = ReferenceitemFilter
|
||||
search_fields = ["name"]
|
||||
ordering_fields = ["name", "order", "type"]
|
||||
ordering = ["order", "name"]
|
||||
|
||||
action_permission_classes = {}
|
||||
action_serializer_class = {
|
||||
"list": ListReferenceitemSerializer,
|
||||
"retrieve": RetrieveReferenceitemSerializer,
|
||||
"create": CreateReferenceitemSerializer,
|
||||
}
|
||||
Reference in New Issue
Block a user