Ë
    tij¯  ã                  óˆ   — d 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
 dd„Zdd„Zdd	„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd
„Zdd„Zy)z<Validation helpers for normalized ISTAT XML payload objects.é    )Úannotations)Údate)ÚXmlPayloadValidationError)ÚIstatXmlGuestPayload)ÚIstatLookupServicec                óL   — | €yt        | t        «      r| j                  «        S y)NTF)Ú
isinstanceÚstrÚstrip)Úvalues    ú9/backend/istat/xml_export/validators/payload_validator.pyÚ	_is_blankr      s&   € Ø€}ØÜ%œÔØ—;‘;“=Ð Ð Øó    c                ó6   — t        | «      rt        |› d«      ‚y)zHRaise an XML-specific validation error when a required value is missing.z" is required for ISTAT XML payloadN)r   r   )r   Ú
field_names     r   Úrequire_valuer      s"   € äÔÜ'¨:¨,Ð6XÐ(YÓZÐZð r   c                óT   — t        | d«       t        |d«       || k  rt        d«      ‚y)z8Validate booking stay dates required by the XML payload.Úarrival_dateÚdeparture_datez?departure_date must be after arrival_date for ISTAT XML payloadN)r   r   )r   r   s     r   Úvalidate_stay_datesr      s4   € ä, Ô/Ü.Ð"2Ô3à˜Ò%Ü'ØMó
ð 	
ð &r   c                óZ  — t        |d«       | rmt        |d«       t        |d«       t        |d«       t        j                  |«      €t        d|› d«      ‚t        j                  |«      €t        d|› d«      ‚yt        |d	«       t        j
                  |«      €t        d
|› d«      ‚y)zCValidate mapped residence fields before building the guest payload.ÚcountryÚprovinceÚprovince_codeÚregion_codeNz$Missing ISTAT province mapping for 'Ú'z"Missing ISTAT region mapping for 'Úresidence_country_codez#Missing ISTAT country mapping for ')r   r   Úget_provincer   Úget_region_by_istat_codeÚget_country©Úis_italian_residentÚresidence_country_iso2r   Úprovince_siglar   r   s         r   Úvalidate_residence_payloadr%   %   sË   € ô Ð(¨)Ô4áÜn jÔ1Üm _Ô5Ük =Ô1ä×*Ñ*¨>Ó:ÐBÜ+Ø6°~Ð6FÀaÐHóð ô ×6Ñ6°{ÓCÐKÜ+Ø4°[°MÀÐCóð ð 	äÐ(Ð*BÔCÜ×%Ñ%Ð&<Ó=ÐEÜ'Ø1Ð2HÐ1IÈÐKó
ð 	
ð Fr   c                ó  — t        | j                  d«       t        | j                  d«       t        | j                  | j
                  «       t        | j                  d«       t        | j                  d«       t        | j                  | j                  | j                  | j                  | j                  | j                  ¬«       | S )zEValidate a fully assembled XML guest payload and return it unchanged.Ú
booking_idÚguest_idÚ
guest_typeÚgenderr!   )r   r'   r(   r   r   r   r)   r*   r%   r"   r#   r   r$   r   r   )Úpayloads    r   Úvalidate_payloadr,   G   s›   € ä'×$Ñ$ lÔ3Ü'×"Ñ" JÔ/Ü˜×,Ñ,¨g×.DÑ.DÔEÜ'×$Ñ$ lÔ3Ü'—.‘. (Ô+ÜØ#×7Ñ7Ø&×=Ñ=Ø&×=Ñ=Ø×-Ñ-Ø×+Ñ+Ø×'Ñ'õð €Nr   N)r   ÚobjectÚreturnÚbool)r   r-   r   r
   r.   ÚNone)r   údate | Noner   r1   r.   r0   )r"   r/   r#   ú
str | Noner   r2   r$   r2   r   r2   r   r2   r.   r0   )r+   r   r.   r   )Ú__doc__Ú
__future__r   Údatetimer   Úistat.xml_export.exceptionsr   Ú'istat.xml_export.payloads.guest_payloadr   Ú(istat.xml_export.services.lookup_servicer   r   r   r   r%   r,   © r   r   Ú<module>r:      sv   ðÙ Bå "å å AÝ HÝ Góó[ó
ð
àð
ð 'ð
ð 'ð	
ð
 ð
ð ð
ð ð
ð 
ó
ôDr   