o
    iB6                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZ d d
lmZ G dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZdS )    )serializers)EstadoEmpresa)	Provincia)	Localidad)Empresa)EmpresaTipo)Origen)Usuario)Contacto)timezonec                       s  e Zd ZejddddZejej	 ddZ
ejdddddZejej	 dddZejej	 dddZejej	 dddd	Zejddd
Zejej	 dddd	ZejddddZejdddZejdddZe Ze Zdd Zdd ZG dd dZdd Z fddZ   Z!S )EmpresaSerializerFTrequiredallow_blank
allow_null)querysetr   nombre_comercialsourcer   r   r   r   r   r   tipo_empresar   r   r   r   )r   r   usuario_responsabler   r   c                 C   s   |j r|j jS d S )N)r   nombre)selfobj r   4/var/www/html/crm_dreinet/api_empresa/serializers.pyget_tipo_empresa_nombreC   s   z)EmpresaSerializer.get_tipo_empresa_nombrec                 C   B   t |dd }|rztjj|d}|jW S  tjy   Y d S w d S N	origen_ididgetattrr   objectsgetr   DoesNotExistr   r   r"   origenr   r   r   get_origen_nombreH      z#EmpresaSerializer.get_origen_nombrec                   @   s$   e Zd ZeZg dZdddiiZdS )zEmpresaSerializer.Meta)r$   r   name_comercialcuitestado_empresafecha_creacion	provincia	localidad	direcciontipo_empresa_idtipo_empresa_nombrer"   origen_nombrecodigo_postalusuario_responsable_idtelefonor$   	read_onlyTN)__name__
__module____qualname__r   modelfieldsextra_kwargsr   r   r   r   MetaR   s    rB   c                 C   s   | d}d}d|vrd}n	|r|jdkrd}|r?i }| ds$d|d< | ds-d|d< | d	s6d|d
< |r=t||S i }| dsJd|d< | dsSd|d< |rZt||S )Nr   FT   r   Este campo es requerido.r.   r"   r   r9   r2   r3   )r(   r$   r   ValidationError)r   datar   	is_type_1errorsr   r   r   validateZ   s2   







zEmpresaSerializer.validatec                    s   | dd }d|vs|d d u rtjjdd|d< d|vs#|d d u r,tjjdd|d< d|v rD|d d urD|d }t|trD|j|d< t 	|}|rYt
jj	||ddt d	 |S )
Nr:   r   rC   r#   r0   r"   zContacto Principal )empresar:   r   emailr1   )popr   r'   r(   r   
isinstancer   r$   supercreater
   r   now)r   validated_datar:   r"   rK   	__class__r   r   rP   }   s&   

zEmpresaSerializer.create)"r<   r=   r>   r   	CharFieldr   PrimaryKeyRelatedFieldr   r'   allr0   r.   r   r2   r   r3   r   r5   r8   r	   r9   r4   IntegerFieldr"   r:   SerializerMethodFieldr6   r7   r   r,   rB   rI   rP   __classcell__r   r   rS   r   r      sj    
#r   c                       s&  e Zd Ze ZejddddZejddddZejdddddZ	ej
ej dddZej
ej dddZej
ej ddddZejddddZejddd	Ze ZejddddZej
ej d
dddZej
ej ddddZdd Z fddZdd Zdd ZG dd dZ   Z!S )EmpresaUpdateSerializerFTr   r   r   r   r   r   r   r0   r   c                 C   r    r!   r%   r*   r   r   r   r,      r-   z)EmpresaUpdateSerializer.get_origen_nombrec                    sf   d|v rd|vr| d|d< d|v rd|vr| d|d< d|v r-d|vr-| d|d< t |S )Nprovincia_idr2   localidad_idr3   r5   r   )r(   rO   to_internal_value)r   rF   rS   r   r   r^      s   z)EmpresaUpdateSerializer.to_internal_valuec                 C   s   | d}|r|jdk}nt| dr!| jr!| jjo| jjjdk}nd}| d}|rJ| }tjj|ddj	| jjd
 }|rJtdd	| ii }|rX| d
sWd|d
< n| dsad|d< | dsjd|d< | dssd|d< |rzt||S )Nr   rC   instanceFr/   T)r/   deleted_at__isnullr#   z"Ya existe una empresa con el CUIT r   z(Este campo es requerido para prospectos.r2   rD   r3   )r(   r$   hasattrr_   r   stripr   r'   filterexcludefirstr   rE   )r   rF   r   rG   r/   empresa_duplicadarH   r   r   r   rI      sF   






z EmpresaUpdateSerializer.validatec                 K   sR   | j }| j D ]
\}}t||| q|  td|j d|j d|j  |S )Nz(DEBUG: Instancia actualizada. provincia=z, localidad=z, tipo_empresa=)	r_   rR   itemssetattrsaveprintr\   r]   r5   )r   kwargsr_   attrvaluer   r   r   ri     s    zEmpresaUpdateSerializer.savec                   @      e Zd ZeZg dZdS )zEmpresaUpdateSerializer.Meta)r$   r   r.   r/   estado_empresa_idr2   r3   r4   r5   r"   r7   r8   r9   Nr<   r=   r>   r   r?   r@   r   r   r   r   rB   )      rB   )"r<   r=   r>   r   rX   r$   rU   r   r/   r.   rV   r   r'   rW   r2   r   r3   r   r5   r4   r"   rY   r7   r8   r   ro   r	   r9   r,   r^   rI   ri   rB   rZ   r   r   rS   r   r[      sf    
1r[   c                   @   s   e Zd Ze ZdS )EmpresaDeleteSerializerN)r<   r=   r>   r   rX   r$   r   r   r   r   rr   -  s    rr   c                   @   s   e Zd ZG dd dZdS )EstadoEmpresaSerializerc                   @   s   e Zd ZeZddgZdS )zEstadoEmpresaSerializer.Metar$   nombre_estadoN)r<   r=   r>   r   r?   r@   r   r   r   r   rB   1  rq   rB   N)r<   r=   r>   rB   r   r   r   r   rs   0  s    rs   c                   @   s(   e Zd ZejdddZG dd dZdS )UsuarioEmpresaSerializerzrol_usuario.nombre_rolTr   r;   c                   @   rn   )zUsuarioEmpresaSerializer.Meta)r$   r   rL   
nombre_rolN)r<   r=   r>   r	   r?   r@   r   r   r   r   rB   8  rq   rB   N)r<   r=   r>   r   rU   rw   rB   r   r   r   r   ru   5  s    ru   c                   @   s   e Zd ZejdddZejddZejdddZejddZ	ejdddZ
ejddddZejd	dddZe Ze ZG d
d dZdd Zdd ZdS )EmpresaListSerializerzprovincia.nombreTrv   )r;   zlocalidad.nombrezestado_empresa.nombre_estadoztipo_empresa.nombre)r   r;   r   zusuario_responsable.nombrec                   @   rn   )zEmpresaListSerializer.Meta)r$   r   r   r/   r0   estador1   r2   r\   r3   r]   r4   r5   r6   r"   r7   r8   r   r9   	contactosNrp   r   r   r   r   rB   G  rq   rB   c                 C   s^   | j d}|d ur||jS t|dd }|r-z	tjj|djW S  tjy,   Y d S w d S )Norigenes_mapr"   r#   )contextr(   r"   r&   r   r'   r   r)   )r   r   r{   r"   r   r   r   r,   P  s   z'EmpresaListSerializer.get_origen_nombrec                 C   s(   t jj|jddddddd}t|S )NT)
empresa_idr`   r$   r   rL   r:   cargo)r
   r'   rc   r$   valueslist)r   r   rz   r   r   r   get_contactos^  s    z#EmpresaListSerializer.get_contactosN)r<   r=   r>   r   rU   r2   rX   r\   r3   r]   ry   r6   r   rY   r7   rz   rB   r,   r   r   r   r   r   rx   <  s    	rx   N)rest_frameworkr   Models.Estado_Empresar   Models.Provinciar   Models.Localidadr   Models.Empresar   Models.empresa_tipor   Models.origenr   Models.Usuarior	   Models.contacto_modelr
   django.utilsr   ModelSerializerr   r[   
Serializerrr   rs   ru   rx   r   r   r   r   <module>   s$      
