o
    di8                     @   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 )    )serializers)	ContactUsContactUsAssets)models)master_serializers)DynamicFieldsModelSerializerc                   @   s   e Zd ZdZG dd dZdS )ContactUsAssetsSerializera  
    Serializer class for serializing and deserializing ContactUsAssets instances.

    This serializer class includes fields for 'id' and 'asset'.
    'id' is marked as read-only.

    Attributes:
        Meta.model: The model class to which this serializer applies.
        Meta.fields: The fields to include in the serialized representation.
        Meta.read_only_fields: The fields that should be treated as read-only during updates.
    c                   @   s   e Zd ZeZdZdgZdS )zContactUsAssetsSerializer.Metaidassetr
   N)__name__
__module____qualname__r   modelfieldsread_only_fields r   r   j/var/www/html/evchargy.com/django-station-ev/station_ev/apps/account/serializers/contact_us_serializers.pyMeta   s    
r   N)r   r   r   __doc__r   r   r   r   r   r   	   s    r   c                   @   s\   e Zd ZdZejddZejdej	j
 dZejddZG dd dZdd Zd	d
 ZdS )ContactUsSerializera  
    Serializer class for serializing and deserializing ContactUs instances.

    This serializer class includes fields for 'id', 'first_name', 'last_name', 'email',
    'phone_number', 'subject', 'contact_request_type', 'description', and 'assets'.
    'id' is marked as read-only.

    Attributes:
        assets (MethodField): Serializer method field for representing associated media assets.
        Meta.model: The model class to which this serializer applies.
        Meta.fields: The fields to include in the serialized representation.
        Meta.read_only_fields: The fields that should be treated as read-only during updates.
    T)	read_only)
write_onlyquerysetc                   @   s    e Zd ZeZdZdgZdgZdS )zContactUsSerializer.Meta)
r
   
first_name	last_nameemailphone_numbersubjectcontact_request_typecontact_request_type_datadescriptionassetsr
   r   N)r   r   r   r   r   r   r   Zwrite_only_fieldsr   r   r   r   r   4   s
    
r   c                 C   sH   |j  }g }|D ]}|jr!|j| jd |jjd}|| q	|S )z
        Retrieve and format associated media assets.

        Args:
            obj (ContactUs): The ContactUs instance.

        Returns:
            List of dictionaries with media asset details.
        requestr	   )contact_us_assetsallr   r
   contextbuild_absolute_uriurlappend)selfobjmedias
media_datamedia
media_itemr   r   r   
get_assetsE   s   



zContactUsSerializer.get_assetsc                 C   s   |j r
t|j jS dS )a  
        Retrieve and format data related to the contact request type.

        Args:
            obj (ContactUs): The ContactUs instance.

        Returns:
            dict: Dictionary with details of the contact request type, or None if no request type is set.
        N)r   r   ContactUsRequestTypeSerializersdata)r*   r+   r   r   r   get_contact_request_type_data^   s   
z1ContactUsSerializer.get_contact_request_type_dataN)r   r   r   r   r   SerializerMethodFieldr"   PrimaryKeyRelatedFieldmaster_modelsContactUsRequestTypeMasterobjectsr%   r   r    r   r0   r3   r   r   r   r   r      s    r   N)rest_frameworkr   apps.account.modelsr   r   Zapps.masterr   r6   Zapps.master.serializersr   base.serializersr   r   r   r   r   r   r   <module>   s    