
    eiI                        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
 d dlmZ ddlmZmZmZmZmZmZ dd	lmZmZmZmZ dd
lmZmZmZ  edgdeee ed       ed       ed      d       G d de             Z edgdee ed       ed      d       G d de             Z edgdd ed      i       G d d e             Z edgd!d ed      i       G d" d#e             Z y$)%    )get_object_or_404)OpenApiResponseextend_schemastatus)IsAuthenticated)Response)APIView   )IstatAuditLogSerializerIstatConnectionStatusSerializerIstatCredentialWriteSerializer IstatManualSyncRequestSerializer!IstatManualSyncResponseSerializerIstatSyncHistorySerializer)build_connection_payloadcreate_istat_audit_logget_accessible_structuretrigger_manual_sync)IstatAuditLogIstatCredentialIstatSyncHistoryISTATzEGet, connect, update, or disconnect ISTAT credentials for a structurezValidation error)descriptionz!Structure or credential not foundzISTAT credentials already exist)          i  )tagssummaryrequest	responsesc                   *    e Zd ZegZd Zd Zd Zd Zy)IstatCredentialAPIViewc                 X    t        |j                  |      }t        t        |            S )Nuserstructure_id)r   r'   r	   r   )selfr!   r(   	structures       #/backend/istat/integration_views.pygetzIstatCredentialAPIView.get(   s)    ,%
	 0;<<    c           	      H   t        |j                  |      }t        j                  j	                  |      j                         rt        ddit        j                        S t        |j                  ||j                  d      }|j                  d	       |j                         }t        |||j                  t        j                  j                   d
|j                  j"                   dd|j$                  i       t        t'        |      t        j(                        S )Nr&   r*   detailz3ISTAT credentials already exist for this structure.r   r*   r'   )datacontextTraise_exceptionUser z created ISTAT credentials.r(   r*   
credentialactoractionmessagemetadata)r   r'   r   objectsfilterexistsr	   r   HTTP_409_CONFLICTr   r2   is_validsaver   r   ActionCREDENTIAL_CREATEDusernameidr   HTTP_201_CREATED)r)   r!   r(   r*   
serializerr8   s         r+   postzIstatCredentialAPIView.post/   s    ,%
	
 ""))I)>EEGPQ// 
 4"+W\\B

 	D1__&
!,, ''::GLL1122MN$ill3	
 $Y/**
 	
r-   c           	         t        |j                  |      }t        t        |      }t	        ||j
                  d||j                  d      }|j                  d       |j                         }t        |||j                  t        j                  j                  d|j                  j                   dd	|j                  i
       t        t        |            S )Nr&   r/   Tr1   )r2   partialr3   r4   r6   z updated ISTAT credentials.r(   r7   )r   r'   r   r   r   r2   rA   rB   r   r   rC   CREDENTIAL_UPDATEDrE   rF   r	   r   )r)   r!   r(   r*   r8   rH   s         r+   patchzIstatCredentialAPIView.patchP   s    ,%
	 ')L
3"+W\\B	

 	D1__&
!,, ''::GLL1122MN$ill3	
 0;<<r-   c           
      b   t        |j                  |      }t        t        |      }|j                  }t        |||j                  t        j                  j                  d|j                  j                   d|j                  |d       |j                          t        t        |            S )Nr&   r/   r6   z deleted ISTAT credentials.)r(   credential_idr7   )r   r'   r   r   rF   r   r   rC   CREDENTIAL_DELETEDrE   deleter	   r   )r)   r!   r(   r*   r8   rO   s         r+   rQ   zIstatCredentialAPIView.deletek   s    ,%
	 ')L
"!,, ''::GLL1122MN&/ll]S	
 	0;<<r-   N)	__name__
__module____qualname__r   permission_classesr,   rI   rM   rQ    r-   r+   r$   r$      s"     **=
B=6=r-   r$   z*Trigger a manual ISTAT monthly sync (stub)zStructure not found)r   r   r   c                       e Zd ZegZd Zy)IstatManualSyncAPIViewc           	         t        |j                  |      }t        |j                        }|j	                  d       	 t        ||j                  |j                  t        |j                  xs i             \  }}t        |t        j                        S # t        $ r0}t        dt        |      it        j                        cY d }~S d }~ww xY w)Nr&   )r2   Tr4   )r*   r9   requested_periodrequest_payloadr0   r   )r   r'   r   r2   rA   r   validated_datadict
ValueErrorr	   strr   HTTP_400_BAD_REQUESTHTTP_200_OK)r)   r!   r(   r*   rH   _response_payloadexcs           r+   rI   zIstatManualSyncAPIView.post   s    ,%
	
 67<<H
D1	"5#ll!+!:!: $W\\%7R 8	#A (1C1CDD  	3s8$22 	s   =B 	C"%CCCN)rR   rS   rT   r   rU   rI   rV   r-   r+   rX   rX      s     **Er-   rX   z.List manual ISTAT sync history for a structurer   Tmany)r   r    r"   c                       e Zd ZegZd Zy)IstatSyncHistoryAPIViewc                     t        |j                  |      }t        j                  j	                  |      }t        t        |d      j                        S Nr&   r/   Tre   )r   r'   r   r=   r>   r	   r   r2   )r)   r!   r(   r*   historys        r+   r,   zIstatSyncHistoryAPIView.get   sJ    ,%
	 #**11I1F27FKKLLr-   NrR   rS   rT   r   rU   r,   rV   r-   r+   rh   rh      s     **Mr-   rh   z%List ISTAT audit logs for a structurec                       e Zd ZegZd Zy)IstatAuditLogAPIViewc                     t        |j                  |      }t        j                  j	                  |      }t        t        |d      j                        S rj   )r   r'   r   r=   r>   r	   r   r2   )r)   r!   r(   r*   logss        r+   r,   zIstatAuditLogAPIView.get   sJ    ,%
	 $$++i+@/4@EEFFr-   Nrl   rV   r-   r+   rn   rn      s     **Gr-   rn   N)!django.shortcutsr   drf_spectacular.utilsr   r   rest_frameworkr   rest_framework.permissionsr   rest_framework.responser	   rest_framework.viewsr
   integration_serializersr   r   r   r   r   r   integration_servicesr   r   r   r   modelsr   r   r   r$   rX   rh   rn   rV   r-   r+   <module>rz      sC   . @ ! 6 , (   E D 
S*,,);<)LM)JK	X=W X=X=v 
8,.);<)>?		EW E	E8 
<.D9:
	Mg 	M
	M 
3+67
	G7 	G
	Gr-   