o
    diK                     @   sd   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 G dd de
ZG dd	 d	e
Zd
S )    )models)VehicleMakeListFilterVehicleMakeModelListFilter)vehicle_serializers)IsAdminToAllowCRUD)BaseModelViewSetc                   @   s:   e Zd ZdZefZejZe	j
j ZeZdgZg dZdS )VehicleMakeModelViewSetaE  
    This is the VehicleMakeModelViewSet class responsible for managing vehicle make data.

    It provides endpoints for creating, retrieving, updating, and deleting vehicle make records.

    Attributes:
        permission_classes (tuple): Specifies the permissions required to access this view. It's set to IsAuthenticated
                                   and IsAdminUser, allowing only authenticated and admin users to
                                   interact with vehicle make records.
        serializer_class (vehicle_serializers.VehicleMakeMasterSerializers): The serializer class used to serialize and
        deserialize vehicle make data.
        queryset (QuerySet): The queryset of vehicle make records that this viewset operates on.
        search_fields (list): A list of fields used for searching vehicle make records.
        http_method_names (list): A list of the allowed HTTP methods for this viewset,
        including 'get', 'patch', and 'delete'.

    Methods:
        get(request, *args, **kwargs): Retrieves vehicle make data based on the request parameters.
    namegetpostpatchdeleteN)__name__
__module____qualname____doc__r   permission_classesr   VehicleMakeMasterSerializersserializer_classr   VehicleMakeMasterobjectsallquerysetr   filterset_classsearch_fieldshttp_method_names r   r   [/var/www/html/evchargy.com/django-station-ev/station_ev/apps/vehicle/views/vehicle_views.pyr      s    r   c                   @   sB   e Zd ZdZefZejZe	j
j ZeZdgZg dZdd ZdS )VehicleModelModelViewSeta  
    A viewset for handling CRUD operations on VehicleModel instances.

    This viewset supports the standard CRUD operations - Create, Retrieve,
    Update, and Delete - for the VehicleModel model. It also includes filtering
    based on the 'vehicle_make' field and searching based on 'name'.

    Attributes:
        permission_classes (tuple): A tuple of permission classes.
        serializer_class: The serializer class for the VehicleModel model.
        queryset: The queryset containing all VehicleModel instances.
        filterset_class: The filterset class for supporting custom filtering.
        search_fields (list): List of fields to be used for search functionality.
        http_method_names (list): List of HTTP methods allowed on this viewset.
    r	   r
   c                 C   s&   | j jd}|r| jj|dS | jS )a  
        Get the queryset of VehicleModel instances.

        If 'vehicle_make' is present in the query parameters, filter the queryset
        based on the provided vehicle_make value.

        Returns:
            queryset: The queryset of VehicleModel instances.
        vehicle_make)r    )requestquery_paramsr   r   filter)selfr    r   r   r   get_queryset@   s   
z%VehicleModelModelViewSet.get_querysetN)r   r   r   r   r   r   r   VehicleModelMasterSerializersr   r   VehicleModelMasterr   r   r   r   r   r   r   r%   r   r   r   r   r   (   s    r   N)Zapps.vehicler   Z$apps.vehicle.filters.vehicle_filtersr   r   Zapps.vehicle.serializersr   base.permissionsr   
base.viewsr   r   r   r   r   r   r   <module>   s    