
    ei                     V   d dl mZ d dlmZ ddlmZmZ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 G d dej                        Zy)    )timezone)serializers   )IstatAuditLogIstatCredentialIstatSyncHistoryc                   p    e Zd Z ej                         Z ej                         Z G d d      Zd Zd Z	y)IstatSyncHistorySerializerc                       e Zd ZeZg dZy)IstatSyncHistorySerializer.Meta)idstatusmessagerequested_periodrequested_atcompleted_at	timestamptriggered_byN)__name__
__module____qualname__r   modelfields     )/backend/istat/integration_serializers.pyMetar      s     	
r   r   c                 6    |j                   xs |j                  S N)r   r   selfobjs     r   get_timestampz(IstatSyncHistorySerializer.get_timestamp   s    33#3#33r   c                 b    |j                   sy |j                  |j                   j                  dS N)r   username)r   triggered_by_idr&   r    s     r   get_triggered_byz+IstatSyncHistorySerializer.get_triggered_by   s0    %%((11
 	
r   N)
r   r   r   r   SerializerMethodFieldr   r   r   r#   r(   r   r   r   r
   r
      s6    1113I4;446L
 
4
r   r
   c                   `   e Zd Z ej                         Z ej                         Z ej                         Z ej                         Z
 ej                         Z ej                  d      Z ej                  d      Z ed      Z ej                   d      Z ej                   d      Zy)IstatConnectionStatusSerializerT)
allow_nullN)r   r   r   r   IntegerFieldstructure_id	CharFieldcredential_typeproviderBooleanField	connectedconnection_statusr&   password_maskedr
   	last_syncDateTimeField
created_at
updated_atr   r   r   r+   r+   $   s    +;++-L+k++-O${$$&H(((*I---/${$$5H+k++t<O*d;I***d;J***d;Jr   r+   c                   8   e Zd Z ej                         Z ej                         Z ej                         Z ej                         Z ej                         Z	 ej                         Z
 ej                         Z G d d      Zd Zd Zd Zd Zd Zd Zd	 Zy
)IstatCredentialSerializerc                       e Zd ZeZg dZy)IstatCredentialSerializer.Meta)r   r.   r0   r1   r3   r4   r&   r5   r6   r8   r9   N)r   r   r   r   r   r   r   r   r   r   r=   :   s    
r   r   c                      y)NISTATr   r    s     r   get_credential_typez-IstatCredentialSerializer.get_credential_typeJ   s    r   c                      y)NRoss1000r   r    s     r   get_providerz&IstatCredentialSerializer.get_providerM   s    r   c                      y)NTr   r    s     r   get_connectedz'IstatCredentialSerializer.get_connectedP   s    r   c                      y)Nr3   r   r    s     r   get_connection_statusz/IstatCredentialSerializer.get_connection_statusS   s    r   c                     |j                   S r   )r&   r    s     r   get_usernamez&IstatCredentialSerializer.get_usernameV   s    ||r   c                     |j                   S r   )masked_passwordr    s     r   get_password_maskedz-IstatCredentialSerializer.get_password_maskedY   s    """r   c                 z    |j                   j                  j                         }|sy t        |      j                  S r   )	structureistat_sync_historyfirstr
   data)r!   r"   sync_records      r   get_last_syncz'IstatCredentialSerializer.get_last_sync\   s1    mm66<<>)+6;;;r   N)r   r   r   r   r)   r0   r1   r3   r4   r&   r5   r6   r   r@   rC   rE   rG   rI   rL   rS   r   r   r   r;   r;   1   s    7k779O0{002H1113I999;0{002H7k779O1113I
 
 #<r   r;   c                   z    e Zd Z ej                  ddd      Z ej                  ddddddi      Zd Zd	 Zd
 Z	y)IstatCredentialWriteSerializer   TF)
max_lengthtrim_whitespacerequired
input_typepassword)rW   rX   rY   
write_onlystylec                 F   i }| j                   dD ]  }|j                  |      rd||<    | j                   |st        j                  d      dD ]5  }|j                  |      }|t	        |      j                         r1d||<   7 |rt        j                  |      |S )N)r&   r[   zThis field is required.z$At least one field must be provided.zThis field may not be blank.)instancegetr   ValidationErrorstrstrip)r!   attrserrors
field_namevalues        r   validatez'IstatCredentialWriteSerializer.validateq   s    == 6
yy,)BF:& 7 ==$U--6  3JIIj)E U)9)9);%Cz" 3
 --f55r   c                     | j                   d   }| j                   d   }t        |||      }|d   |_        |d   |_        |j	                          |S )NrN   user)rN   
created_by
updated_byr&   r[   )contextr   r&   r[   save)r!   validated_datarN   rj   
credentials        r   createz%IstatCredentialWriteSerializer.create   s]    LL-	||F#$


 -Z8
,Z8
r   c                     d|v r
|d   |_         d|v r
|d   |_        | j                  d   |_        |j	                          |S )Nr&   r[   rj   )r&   r[   rm   rl   rn   )r!   r_   ro   s      r   updatez%IstatCredentialWriteSerializer.update   sK    ' .z :H' .z :H"ll62r   N)
r   r   r   r   r/   r&   r[   rh   rq   rs   r   r   r   rU   rU   c   sT    ${$$H
 %{$$Z(H.r   rU   c                   f    e Zd Z ej                  ddd      Z ej                  ddd      Zd Zy)	 IstatManualSyncRequestSerializeri  i4  F)	min_value	max_valuerY   r      c                     t        j                         }d|v rd|vr|j                  |d<   d|v rd|vr|j                  |d<   |s|j                  |d<   |j                  |d<   |S )Nmonthyear)r   	localdater{   rz   )r!   rd   todays      r   rh   z)IstatManualSyncRequestSerializer.validate   si    ""$ee 3!JJE&MU?we3"[[E'N!JJE&M"[[E'Nr   N)r   r   r   r   r-   r{   rz   rh   r   r   r   ru   ru      s:    #;##D
 %K$$qBOEr   ru   c                       e Zd Z ej                         Z ej                         Z ej                         Z ej                         Z
y)!IstatManualSyncResponseSerializerN)r   r   r   r   r/   r   r   r7   r   	JSONFieldr   r   r   r   r   r      sC    "[""$F#k##%G)))+I,{,,.r   r   c                   H    e Zd Z ej                         Z G d d      Zd Zy)IstatAuditLogSerializerc                       e Zd ZeZg dZy)IstatAuditLogSerializer.Meta)r   actionr   metadatar8   actorN)r   r   r   r   r   r   r   r   r   r   r      s    
r   r   c                 b    |j                   sy |j                  |j                   j                  dS r%   )r   actor_idr&   r    s     r   	get_actorz!IstatAuditLogSerializer.get_actor   s*    yy,,		**
 	
r   N)r   r   r   r   r)   r   r   r   r   r   r   r   r      s!    -K--/E	
 	

r   r   N)django.utilsr   rest_frameworkr   modelsr   r   r   ModelSerializerr
   
Serializerr+   r;   rU   ru   r   r   r   r   r   <module>r      s    ! & D D
!<!< 
:
<k&<&< 
</< ; ; /<d;[%;%; ;|{'='= ,/(>(> /
k99 
r   