
    =
j                        d dl mZ ddl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      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 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$)%    )serializers   )BULK_FIXABLE_FIELDSc                       e Zd Z ej                  dd      Z ej                  dd      Z ej                  dd      Zd Zy)IstatPeriodSerializeri  i4  )	min_value	max_valuer      c                 F    |d   |d   kD  rt        j                  d      |S )N
from_monthto_monthz!from_month cannot exceed to_month)r   ValidationError)selfattrss     /backend/istat/serializers.pyvalidatezIstatPeriodSerializer.validate   s1    z!22--3      N)	__name__
__module____qualname__r   IntegerFieldyearr   r   r    r   r   r   r      sC    #;##ddCD)))ADJ'{''!rBHr   r   c                       e Zd Z e       Zy)IstatPreviewRequestSerializerNr   r   r   r   periodr   r   r   r   r      
    "$Fr   r   c                       e Zd Z e       Zy)IstatCalendarRequestSerializerNr   r   r   r   r    r       r   r   r    c                   F    e Zd Z e       Z ej                  dgdd      Zy)IstatExportRequestSerializer)ross1000_liguriazRoss1000 LiguriaFr#   )choicesrequireddefaultN)r   r   r   r   r   r   ChoiceFieldplatformr   r   r   r"   r"      s(    "$F&{&&9:"Hr   r"   c                       e Zd Zy)!IstatIssuesSummaryQuerySerializerN)r   r   r   r   r   r   r*   r*   $   s    r   r*   c                       e Zd Z ej                  dd      Z ej                  dd      Z ej                  dddd      Zy)	 IstatMunicipalityQuerySerializerFT)r%   allow_blankr   d      )r%   r   r	   r&   N)	r   r   r   r   	CharFieldprovincesearchr   limitr   r   r   r,   r,   (   sC    ${$$eFH"[""EtDF$K$$eqCY[\Er   r,   c                       e Zd Z ej                         Z ej                         Z ej                         Z ej                         Z ej                         Z	y)IstatMunicipalityItemSerializerN)
r   r   r   r   r0   codenamer1   valuelabelr   r   r   r5   r5   .   sR     ;  "D ;  "D${$$&H!K!!#E!K!!#Er   r5   c                       e Zd Z ed      Zy)#IstatMunicipalityResponseSerializerTmanyN)r   r   r   r5   resultsr   r   r   r;   r;   6   s    -48Gr   r;   c                       e Zd Z ej                   ee            Z ej                  d      Z	 ej                   ej                  d      d      Zd Zy	)
IstatFixIssueSerializer)r$   T)trim_whitespacer   )r   F)childallow_emptyc                     t        |      }t        |      t        t        |            k7  rt        j                  d      |S )Nzguest_ids must be unique.)listlensetr   r   )r   r8   	guest_idss      r   validate_guest_idsz*IstatFixIssueSerializer.validate_guest_idsB   s8    K	y>SY00--.IJJr   N)r   r   r   r   r'   sortedr   fieldr0   r8   	ListFieldr   rH   rI   r   r   r   r@   r@   :   sV    #K##F3F,GHE!K!!$7E%%%&k&&3I
r   r@   c                   4    e Zd Z e       Z edd      Zd Zy)IstatFixIssuesRequestSerializerTF)r=   rC   c                     t               }|d   D ]?  }|d   D ]5  }|d   |f}||v rt        j                  ddi      |j                  |       7 A |S )NfixesrH   rK   z@Each guest can only appear once per field in a bulk-fix request.)rG   r   r   add)r   r   
seen_pairsfixguest_idkeys         r   r   z(IstatFixIssuesRequestSerializer.validateM   sq    U
>C,7|X.*$%55#!4  s# - " r   N)r   r   r   r   r   r@   rP   r   r   r   r   rN   rN   I   s    "$F#5AEr   rN   c                   F   e Zd Z ej                         Z ej                         Z ej                         Z ej                   ej                               Z
 ej                         Z ej                   ej                         d      Z ej                  dd      Zy)IstatIssueSummaryItemSerializer)rB   F)rB   r%   T)r%   
allow_nullN)r   r   r   r   r0   rK   r9   r   countrL   rH   fix_typeoptions	suggestedr   r   r   rW   rW   _   s    !K!!#E!K!!#E$K$$&E%%%,DK,D,D,FGI${$$&H#k###k##%G &%%uFIr   rW   c                       e Zd Z ed      Zy)$IstatIssuesSummaryResponseSerializerTr<   N)r   r   r   rW   issuesr   r   r   r^   r^   l   s    ,$7Fr   r^   c                   r    e Zd Z ej                         Z ej                         Z ej                         Zy) IstatFixIssuesResponseSerializerN)	r   r   r   r   BooleanFieldsuccessr   updated_countremaining_issuesr   r   r   ra   ra   p   s3    &k&&(G,K,,.M/{//1r   ra   c                   >   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 ej                         Z ej                         Zy)IstatCalendarDaySerializerN)r   r   r   r   	DateFielddater   dayavailable_roomsavailable_bedsoccupied_roomsarrivals
departures	presencesr0   statusr   r   r   rg   rg   v   s     ;  "D
"+
"
"
$C.k..0O-[--/N-[--/N'{'')H)))+J(((*I"[""$Fr   rg   c                       e Zd Z ej                         Z ej                         Z ej                         Z ej                         Z	 ej                         Z
 ed      Zy)IstatCalendarMonthSerializerTr<   N)r   r   r   r   r   r   monthr0   r9   total_rooms
total_bedsrg   daysr   r   r   rs   rs      s\    #;##%D$K$$&E!K!!#E*+**,K)))+J%40Dr   rs   c                   p    e Zd Z ej                         Z ej                         Z e       Z	 e
d      Zy)IstatCalendarResponseSerializerTr<   N)r   r   r   r   r   structure_idr0   structure_namer   r   rs   monthsr   r   r   ry   ry      s4    +;++-L*[**,N"$F)t4Fr   ry   N)rest_frameworkr   servicesr   
Serializerr   r   r    r"   r*   r,   r5   r;   r@   rN   rW   r^   ra   rg   rs   ry   r   r   r   <module>r      s*   & )
K22 
%K$:$: %%[%;%; %;#9#9 	(= 	]{'='= ]$k&<&< $9+*@*@ 9k44 k&<&< ,
Gk&<&< 
G8;+A+A 82{'='= 2	%!7!7 	%1;#9#9 15k&<&< 5r   