
    Idi                     T   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mZmZ d dlmZ  G d d	ej                         Z G d
 dej                         Z G d dej                         Z G d dej                         Z G d dej                         Z G d dej                         Zy)    )serializers)UserGroup)validate_email)ValidationError   )ImplementerDetailsTblUserOrganizationAuthUserProfile)UserRecruiterMappingSerializerc                        e Zd Z G d d      Zy)UserSerializerc                       e Zd ZeZg dZy)UserSerializer.Meta)idusernameemailN__name__
__module____qualname__r   modelfields     2/var/www/auto_recruiter/admin_users/serializers.pyMetar      s    ,r   r   Nr   r   r   r   r   r   r   r   r      s    - -r   r   c                        e Zd Z G d d      Zy)AuthGroupSerializerc                       e Zd ZeZdZy)AuthGroupSerializer.Meta)r   nameN)r   r   r   r   r   r   r   r   r   r   r"      s    r   r   Nr   r   r   r   r    r       s       r   r    c                        e Zd Z G d d      Zy)!TblUserOrganizationAuthSerializerc                       e Zd ZeZdZy)&TblUserOrganizationAuthSerializer.Meta__all__N)r   r   r   r
   r   r   r   r   r   r   r'      s    'r   r   Nr   r   r   r   r%   r%      s     r   r%   c                       e Zd Z edd      Z edd      Z ej                         Z	 e
ddd      Z ej                  ddd      Z ej                         Z G d d	      Zd
 Zd Zd Zy)AuthUserPermissionsSerializerT)many	read_onlyrecruiter_mappings)r+   r,   sourcezprofile.profile_imageF)r.   required
allow_nullc                       e Zd ZeZdZy)"AuthUserPermissionsSerializer.Meta)r   r   password
first_name	last_namer   groupsis_superuserauth_user_organizationclient_mappings
recruitersprofile_imagedisplay_column_preference	is_active
last_loginNr   r   r   r   r   r2   -   s    
r   r   c                 t    |j                   j                         D cg c]  }d|j                  i c}S c c}w )Nclient)r9   all	client_id)selfobjms      r   get_client_mappingsz1AuthUserPermissionsSerializer.get_client_mappings@   s<     ((,,.
 q{{#
 	
 
s   5c                 r    dddddddddddd
i}t        |dd       }|r|j                  r|j                  S |S )Njd_tableT)
jd_idtitler@   typelocationr:   stagestatus
created_dt
updated_dtprofile)getattrr<   )rC   rD   DEFAULT_TABLE_PREFERENCESrQ   s       r   get_display_column_preferencez;AuthUserPermissionsSerializer.get_display_column_preferenceF   s_      """%
! #y$/w88444((r   c                     | j                   r| j                   j                  nd }t        j                  j	                  |      }|r|j                  |      }|j                         rt        j                  d      |S )N)email__iexactr   zThis email already exists.)	instancer   r   objectsfilterexcludeexistsr   r   )rC   valueuser_idqss       r   r   z,AuthUserPermissionsSerializer.validate_email^   sc    &*mm$--""\\  u 5w'B99;--.JKKr   N)r   r   r   r    r6   r%   r8   r   SerializerMethodFieldr9   r   r:   
ImageFieldr;   r<   r   rF   rT   r   r   r   r   r*   r*      s     dd;F>DTXY7k779O/	J
 +K**&M
 !B A A C
 
&
)0r   r*   c                   2    e Zd Z G d d      Zd Zd Zd Zy)OrganizationDetailsSerializerc                       e Zd ZeZdZy)"OrganizationDetailsSerializer.Metar(   N)r   r   r   r	   r   r   r   r   r   r   re   l   s    "r   r   c                     t         j                  j                  |      }| j                  r&|j	                  | j                  j
                        }|j                         rt        j                  d      |S )N)name__iexactrW   z Implementer Name already exists.)	r	   rY   rZ   rX   r[   r   r\   r   r   )rC   r]   r_   s      r   validate_namez+OrganizationDetailsSerializer.validate_namep   sb    ''..E.B==t}}//0B99;--2  r   c                    t        |t              st        j                  d      t	               }|D ]"  }t        |t
              st        j                  d      |j                  d      }|st        j                  d      	 t        |       |j                         |v rt        j                  d|       |j                  |j                                t        j                  j                  d|ig      }| j                  r&|j                  | j                  j                         }|j#                         st        j                  d	|        |S # t        $ r t        j                  d|       w xY w)
Nzemail_details must be a listz)Each email_details item must be an objectr   z,Each email_details item must contain 'email'zInvalid email format: zDuplicate email in request: )email_details__containsrW   z-Email already exists in another Implementer: )
isinstancelistr   r   setdictgetr   DjangoValidationErrorloweraddr	   rY   rZ   rX   r[   r   r\   )rC   r]   emails_in_payloaditemr   r_   s         r   validate_email_detailsz4OrganizationDetailsSerializer.validate_email_details|   sw   %&--.LMME &	DdD)!11?  HHW%E!11B 
u% {{} 11!1125':  !!%++-0 $++22*15)9(: 3 B }}ZZ4==#3#3Z4yy{!11CE7K I&	P 3 ) !11,UG4 s   E"E<c                    |j                  d| j                  r| j                  j                  nd      }|j                  d| j                  r| j                  j                  nd      }|r||rzt        j
                  j                  ||      }| j                  r&|j                  | j                  j                        }|j                         rt        j                  ddi      |S )zD
        Validate country code + contact number combination
        country_codeNcontact_number)rw   rx   rW   zAImplementer contact number already exists with this country code.)ro   rX   rw   rx   r	   rY   rZ   r[   r   r\   r   r   )rC   attrsrw   rx   r_   s        r   validatez&OrganizationDetailsSerializer.validate   s     yy*.--DMM&&T
 ,0MMDMM((t

 N#++22)- 3 B
 }}ZZ4==#3#3Z4yy{!11$[3  
 r   N)r   r   r   r   rh   ru   rz   r   r   r   rc   rc   k   s     
.`r   rc   c                        e Zd Z G d d      Zy)UserProfileImageSerializerc                       e Zd ZeZdZy)UserProfileImageSerializer.Metar;   N)r   r   r   r   r   r   r   r   r   r   r~      s    !r   r   Nr   r   r   r   r|   r|      s    # #r   r|   N)rest_frameworkr   django.contrib.auth.modelsr   r   django.core.validatorsr   django.core.exceptionsr   rp   modelsr	   r
   r   masters.serializersr   ModelSerializerr   r    r%   r*   rc   r|   r   r   r   <module>r      s    & 2 1 K 
 ?-[00 - +55  
(C(C LK$?$? L\]K$?$? ]~#!<!< #r   