
    eil                         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mZmZ d Zd	d	d	d	d
dZd Zd Zd Zd	ddZy	)    )Q)get_object_or_404)timezone)	Structure   )IstatSyncHistorySerializer)IstatAuditLogIstatCredentialIstatSyncHistoryc                     t         j                  j                  t        |       t        |       z        j	                         }t        ||      S )N)user)structure_users__user)id)r   objectsfilterr   distinctr   )r   structure_idquerysets      &/backend/istat/integration_services.pyget_accessible_structurer      sB      ''	tqt44hj  X,77    N)actor
credentialsync_recordmetadatac           
      V    t         j                  j                  | ||||||xs i       S )N	structurer   r   r   actionmessager   )r	   r   create)r   r   r    r   r   r   r   s          r   create_istat_audit_logr"      s;       ''R (  r   c                 6    | j                   j                         S )N)istat_sync_historyfirstr   s    r   get_latest_syncr'   '   s    ''--//r   c                 ^    t         j                  j                  |       j                         S )Nr&   )r
   r   r   r%   r&   s    r   get_credential_for_structurer)   +   s%    ""))I)>DDFFr   c                 
   t        |       }t        |       }| j                  dd|d u|dnd||j                  nd ||j                  nd |t        |      j                  nd ||j                  nd ||j                  d
S d d
S )NISTATRoss1000	connectednot_connected)
r   credential_typeproviderr-   connection_statususernamepassword_masked	last_sync
created_at
updated_at)	r)   r'   r   r2   masked_passwordr   datar5   r6   )r   r   latest_syncs      r   build_connection_payloadr:   /   s    -i8J!),K ""t+%1K+5+AJ''t*4*@J&&d & '{388/9/Ej++4/9/Ej++% $ LP% r   )request_payloadc                    t        |       }|t        d      t        j                  j	                  | ||t        j
                  j                  |xs i |xs i       }t        | |||t        j                  j                  d|j                   d| j                   |xs i t        j
                  j                  d       t        j                         }t        j
                  j                  d||xs i d}t        j
                  j                  |_        |d	   |_        ||_        |d
   |d	   |j'                         |xs i d|_        |j+                  g d       ||fS )Nz7ISTAT credentials are not connected for this structure.)r   r   triggered_bystatusrequested_periodr;   zUser z$ triggered ISTAT sync for structure )r?   r>   r   zReport sent successfully (stub))r>   r    	timestampr?   r    r>   )r>   r    completed_atresponse_payload)update_fields)r)   
ValueErrorr   r   r!   StatusPENDINGr"   r	   ActionSYNC_TRIGGEREDr2   namer   nowSUCCESSr>   r    rA   	isoformatrB   save)r   r   r?   r;   r   r   rA   rB   s           r   trigger_manual_syncrN   I   sw    .i8JRSS"**11&&..)/R'-2 2 K ##22ENN##G~~  !1 6B&--55
  <<>L"))114!,2	 *0088K*95K+K"8,#I.!++-,2	$K  
   (((r   )django.db.modelsr   django.shortcutsr   django.utilsr   structures.modelsr   integration_serializersr   modelsr	   r
   r   r   r"   r'   r)   r:   rN    r   r   <module>rV      sL     . ! ' ? D D8 *0G> >)r   