
    Lx'ia.                         S SK Jr  SSKJr  S SKJr  S SKJr  S SKJ	r	   " S S\R                  5      r " S	 S
\R                  5      rg)    )serializers   )User)make_password)UserSettings)EmployeeTypec                      \ rS rSr\R
                  " 5       r\R
                  " SSS9r\R
                  " 5       r\R
                  " SSS9r	\R                  " SSS9r\R
                  " SSS9r\R                  " 5       r " S	 S
5      rS rSrg)UserReadSerializer   FTrequiredallow_blanksettings.supervisor_code)source	read_onlysettings.is_accesssettings.user_type.codec                   &    \ rS rSr\r/ SQrS/rSrg)UserReadSerializer.Meta   )idemployee_no	firstname
middlenamelastnameemail	user_typesupervisor_code	is_accesshire_start_datehire_end_datelangmust_change_passwordworking_time_policyr    N	__name__
__module____qualname____firstlineno__r   modelfieldsread_only_fields__static_attributes__r%       !D:\TimeStamps\user\serializers.pyMetar      s    l 6r/   r1   c                     UR                   (       a6  [        UR                   R                  5      UR                   R                  S.$ g)z%Return policy name and ID if assigned)r   nameN)r$   strr   r3   selfobjs     r0   get_working_time_policy*UserReadSerializer.get_working_time_policy   s=    ""#11445//44  r/   r%   N)r'   r(   r)   r*   r   	CharFieldr   r   r   r   BooleanFieldr   r   SerializerMethodFieldr$   r1   r8   r.   r%   r/   r0   r
   r
      s    %%'I&&4HJ$$&H!++3MY]^O((0DPTUI%%-FRVWI%;;=" "r/   r
   c                      \ rS rSr\R
                  " 5       r\R                  " SS9r\R                  " SSS9r	\R                  " SS9r
\R                  " SS9r\R                  " SSS9r\R                  " SSS9r\R                  " S	SS9r\R                  " SSS
9r\R"                  " SSSS9r\R
                  " SS9r " S S5      rS rS rS rS rS rS rS rSrg)UserSerializer    F)r   Tr   r   )r   r   r   r   )
write_onlyr   )r   
allow_nullr@   )r   c                   (    \ rS rSr\r/ SQrSS/rSrg)UserSerializer.Meta.   )r   r   r3   r   r   r   r   passwordr   r   r   r    r!   r"   r$   working_time_policy_namer   rF   r%   Nr&   r%   r/   r0   r1   rC   .   s    } "<=r/   r1   c                     UR                   /nUR                  (       a  UR                  UR                  5        UR                  UR                  5        SR	                  U5      $ )N )r   r   appendr   join)r6   r7   
name_partss      r0   get_nameUserSerializer.get_name4   sG    mm_
>>cnn-#,,'xx
##r/   c                 R    UR                   (       a  UR                   R                  $ g)zReturn policy name if assignedN)r$   r3   r5   s     r0   get_working_time_policy_name+UserSerializer.get_working_time_policy_name;   s     ""**///r/   c                 z   [        U SS 5      nU(       a`  [        R                  R                  US9R	                  UR
                  S9R                  5       (       a  [        R                  " S5      e U$ [        R                  R                  US9R                  5       (       a  [        R                  " S5      eU$ )Ninstance)r   )r   z&A user with this email already exists.)	getattrr   objectsfilterexcluder   existsr   ValidationError)r6   valuerR   s      r0   validate_emailUserSerializer.validate_emailA   s    4T2 ||"""/778;;7GNNPP!112Z[[ Q
  ||"""/6688!112Z[[r/   c                 
   U R                   (       a+  U R                   (       a`  U R                   R                  U:w  aF  [        R                  R	                  US9R                  5       (       a  [        R                  " S5      eU$ )N)r   z0A user with this employee number already exists.)rR   r   r   rT   rU   rW   r   rX   )r6   rY   s     r0   validate_employee_no#UserSerializer.validate_employee_noN   sY    }}4==3L3LPU3U||""u"5<<>>!112deer/   c                     SU;   a?  SUS   ;   a6  US   S   n[        U[        5      (       a  UR                  5       S:H  US   S'   U$ )Nsettingsr   true)
isinstancer4   lower)r6   datar   s      r0   validateUserSerializer.validateU   sR    +j1A"AZ(5I)S))090AV0KZ -r/   c                 .   0 nSU;   a  UR                  S5      n[        UR                  S5      [        5      (       a!  UR                  S0 5      R                  S5      OUR                  S5      nUR                  S5      UR                  SS5      US.nO6UR                  SS 5      UR                  SS5      UR                  SS 5      S.nSU;   a  [	        US   5      US'   S	U;   a  UR                  S	5      R                  5       n[        U5      S
:  a(  US   US'   US   US'   SR                  USS  5      US'   O@[        U5      S:X  a  US   US'   SUS'   US   US'   OU(       a  US   OSUS'   SUS'   SUS'   UR                  SS 5        UR                  SS 5      nSU;   aH  UR                  S5      n[        R                  R                  " S0 UD6nXxl        UR                  5         O [        R                  R                  " S0 UD6nU(       aT  SSKJn	   U	R                  R                  U[        US5      (       a  UR                   OS S9n
Xl        UR                  5         UR                  S5      (       a%   [&        R                  R                  US   S9nXS'   [,        R                  R                  " SSU0UD6  U$ ! U	R$                   a     Nqf = f! [&        R$                   a    [(        R*                  " SSUS    305      ef = f)Nr`   r   coder   r   Fr   r   r   rE   r3      r   r   r   r   rH      r    r$   r#   WorkingTimePolicy
company_idr   ro   rh   Invalid employee type code: userr%   )poprb   getdictr   splitlenrJ   r   rT   creater#   savecompany.modelsrn   hasattrro   r$   DoesNotExistr   r   rX   r   )r6   validated_datasettings_datar`   user_type_coderK   working_time_policy_idmust_changers   rn   policyemployee_types               r0   ry   UserSerializer.create]   sP    '%))*5HJTU]UaUabmUnptJuJuX\\+r:>>vF  |D  |H  |H  IT  |UN#+<<0A#B%\\+u=+M $2#5#56G#N+//UC+//TBM ')6~j7Q)RN:& ^#'++F399;J:!#.8m{+/9!}|,-0XXjn-Ez*ZA%.8m{+/1|,-7]z*?Ijmr{+/1|,-/z* 	;- "0!3!34I4!P "^3(,,-CDK<<&&88D(3%IIK<<&&88D "8*2266:Ppwx|  K  qL  qL]a]l]l  RV6  W+1(		
 [))~ , 4 4 8 8mK>X 8 Y-:k* 	##??? %11   ,, ~!11;B^_lmx_y^z@{2|}}~s   AK $K! KK!3Lc                    0 nSU;   a  UR                  S5      n[        UR                  S5      [        5      (       a!  UR                  S0 5      R                  S5      OUR                  S5      nUR                  S5      UR                  S5      US.nO6UR                  SS 5      UR                  SS 5      UR                  SS 5      S.nSU;   a  [	        US   5      US'   SU;   a  UR                  S5      R                  5       n[        U5      S	:  a(  US
   US'   US   US'   SR                  USS  5      US'   O^[        U5      S:X  a  US
   US'   SUS'   US   US'   O9U(       a  US
   OUR                  US'   UR                  US'   UR                  US'   UR                  SS 5        UR                  SS 5      nUb  S
SKJn  U(       a   [        USS 5      n	U	(       dN  [        U R                  R                  S5      S5      (       a$  [        U R                  S   R                   SS 5      n	UR"                  R                  XyS9n
Xl        OS Ul        UR)                  5        H  u  p[+        XU5        M     UR-                  5         U(       al  UR.                  nSU;   a%   [0        R"                  R                  US   S9nXS'   UR)                  5        H  u  p[+        XKU5        M     UR-                  5         U$ ! UR&                   a     Nf = f! [0        R&                   a    [2        R4                  " SSUS    305      ef = f)Nr`   r   rh   r   r   ri   rE   r3   rj   r   r   r   r   rH   rk   r   rl   r$   rm   ro   requestrs   rp   rq   rr   )rt   rb   ru   rv   r   rw   rx   rJ   r   r   r   r{   rn   rS   r|   contextrs   rT   r$   r}   itemssetattrrz   r`   r   r   rX   )r6   rR   r~   r   r`   r   rK   r   rn   ro   r   attrrY   r   s                 r0   updateUserSerializer.update   sn    '%))*5HJTU]UaUabmUnptJuJuX\\+r:>>vF  |D  |H  |H  IT  |UN#+<<0A#B%\\+6+M $2#5#56G#N+//TB+//TBM ')6~j7Q)RN:& ^#'++F399;J:!#.8m{+/9!}|,-0XXjn-Ez*ZA%.8m{+/1|,-7]z*?IjmxOaOa{+/7/B/B|,-5->->z* 	;- "0!3!34I4!P!-8%	!(<!FJ%'$,,2B2B92Mv*V*V%,T\\)-D-I-I<Y]%^
.66::>T:lF390 04, *//1KDHE* 2 ((Hm+B$0$8$8$<$<-P[B\$<$]M1>+.  -224.  5MMO3 )55 $ $00 B%55{Fbcpq|c}b~D  7A  B  BBs   BL )$L LL3Mr%   N)r'   r(   r)   r*   r   r<   r3   r:   r   r   r   r   r   r;   r   r   rE   	UUIDFieldr$   rF   r1   rL   rO   rZ   r]   re   ry   r   r.   r%   r/   r0   r>   r>       s    ,,.D%%u5I&&4HJ$$e4H''7K!++3MX]^O((0DuUI%%-FQVWI$$uEH%//4\`a*@@4P> >$JXQr/   r>   N)rest_frameworkr   modelsr   django.contrib.auth.hashersr   userSettings.modelsr   employeetypes.modelsr   ModelSerializerr
   r>   r%   r/   r0   <module>r      s:    &  5 , -44 2Z[00 Zr/   