
    i                    j    d dl mZ d dlmZmZ d dlmZ d
dZd Zd Z	 G d dej                        Z
y	)    )annotations)
migrationsmodels)Prefetchc                    |dk  rg S | xs dj                         j                         }|dk(  rdgdg|dz
  z  z   S |dk(  rdg|z  S d	gd
g|dz
  z  z   S )Nr    family1719   single161820)striplower)
group_typecount
normalizeds      5/backend/guests/migrations/0009_guest_istat_fields.py_derive_guest_type_codesr      sv    z	"))+113JXv%!),,,Xv~6TFeai(((    c           
     z   | j                  dd      }| j                  dd      }|j                  j                  t        d|j                  j	                  ddd                  j	                  d      }|D ]  }t        |j                  j                               }|s*t        |j                  t        |            }t        |      D ]j  \  }}	t        |	j                  t              r|	j                  ni }
t        |
      }d	D ]  }|j                  |d         |	j                   xs( |
j#                  d
      xs |t        |      k  r||   nd }|	j$                  xs |
j#                  d      xs |j$                  }|	j&                  xs |
j#                  d      xs |j&                  }i }|r|	j                   |k7  r||d
<   |r|	j$                  |k7  r||d<   |r|	j&                  |k7  r||d<   ||
k7  r||d<   |s5 |j                  j)                  |	j*                        j,                  di | m  y )NbookingsBookingguestsGuestz-is_main_guest
created_atid)queryset)
guest_typetourism_typetransport_typer!   r"   r#   
extra_data)pk )	get_modelobjectsprefetch_relatedr   order_bylistr   allr   guest_group_typelen	enumerate
isinstancer$   dictpopr!   getr"   r#   filterr%   update)appsschema_editorr   r   r   bookingr   guest_type_codesindexguestextracleaned_extrafieldr!   r"   r#   updatess                    r   backfill_guest_istat_fieldsr@      s   nnZ3GNN8W-E//]]++,<lDQ	

 htn  gnn((*+3$$K

 &f-LE5(253C3CT(JE$$PRE KMI!!%. J    X99\*X/4s;K7L/L$U+RV 
 !--b>1JbgNbNbL"11jUYY?O5PjT[TjTjNGe..*<(2% 2 2l B*6'%"6"6."H,:()%(5%8$$$188C7C3 . r   c                     y )Nr&   )r6   r7   s     r   noop_reverserB   E   s    r   c                  2   e Zd ZddgZ ej
                  dd ej                  dg dddd	      
       ej
                  dd ej                  dddd      
       ej
                  dd ej                  dddd      
       ej                  e	e
      gZy)	Migration)r   0015_booking_istat_fields)r   ,0008_guest_city_tax_exemption_notes_and_morer;   r!   T))r   zSingle Guest)r
   zHead of Family)r   zGroup Leader)r   zFamily Member)r   zGroup Memberz,ISTAT lodging type code for the guest record   )blankchoices	help_text
max_lengthnull)
model_namenamer>   r"   z,ISTAT tourism type associated with the guest@   )rH   rJ   rK   rL   r#   z.ISTAT transport type associated with the guestN)__name__
__module____qualname__dependenciesr   AddFieldr   	CharField	RunPythonr@   rB   
operationsr&   r   r   rD   rD   I   s    1BL 	
"&"" I	
" 	
"&""H			
 	
!"&""J			
 	
8,GM'Jr   rD   N)r   z
str | Noner   intreturnz	list[str])
__future__r   	django.dbr   r   django.db.modelsr   r   r@   rB   rD   r&   r   r   <module>r]      s1    " ( %	).Db	-
$$ -r   