
    vi1                       U d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ  ed       G d	 d
             Z eddd       eddd       eddd       eddd       eddd       eddd       eddd        ed!d"d#       ed$d%d&       ed'd(d)       ed*d+d,       ed-d.d/       ed0d1d2       ed3d4d5       ed6d7d8       ed9d:d;      fZd<ed=<   dCd>Z	 	 	 	 	 	 	 	 dDd?Z G d@ dAe      ZyB)E    )annotations)	dataclass)Final)BaseCommandCommandError)transaction)IstatCountryT)frozenc                  ,    e Zd ZU ded<   ded<   ded<   y)CountrySeedstrnamecodeiso_codeN)__name__
__module____qualname____annotations__     4/backend/istat/management/commands/seed_countries.pyr   r      s    
I
IMr   r   	AustraliaAUSAUr   r   r   BrazilBRABRCanadaCANCAChinaCHNCNFranceFRAFRGermanyDEUDEIndiaINDINItalyITAITJapanJPNJPNetherlandsNLDNLPortugalPRTPTSpainESPESSwitzerlandCHECHzUnited Arab EmiratesAREAEzUnited KingdomGBRGBzUnited StatesUSAUSzFinal[tuple[CountrySeed, ...]]COUNTRY_SEEDSc                F    | xs dj                         j                         S )N )stripupper)values    r   _normalize_coderL   '   s    KR &&((r   c                j   g }d}t        |      }t        |      }| D ]  }t        |j                        }t        |j                        }	||v s|	|v r|dz  };|j	                  t        |j                  j                         ||	             |j                  |       |j                  |	        ||fS )Nr      r   )	setrL   r   r   appendr	   r   rI   add)
seedsexisting_codesexisting_iso_codes	to_createskipped
seen_codesseen_iso_codesseednormalized_codenormalized_iso_codes
             r   _build_country_instancesr\   +   s    
 %'IG^$J+,N)$))4-dmm<j(,?>,QqLGYY__&$,	
 	'./! $ gr   c                      e Zd ZdZddZy)Commandz;Seed a base set of countries into ISTAT country references.c                   	 t         j                  j                  dd      D ch c]  }t        |       }}t         j                  j	                  d      j	                  d      j                  dd      D ch c]  }t        |       }}t        t        ||      \  }}t        j                         5  t         j                  j                  |d	       d d d        | j                  j                  d
t        |       d       | j                  j                  d| d       y c c}w c c}w # 1 sw Y   [xY w# t        $ r}	t        d|	       |	d }	~	ww xY w)Nr   T)flat)iso_code__isnullrH   )iso_code__exactr   )rR   rS   rT   )ignore_conflictsz	Created: z
 countriesz	Skipped: z already existzFailed to seed countries: )r	   objectsvalues_listrL   excluder\   rF   r   atomicbulk_createstdoutwritelen	Exceptionr   )
selfargsoptionsr   rS   r   rT   countries_to_createskipped_countexcs
             r   handlezCommand.handleN   sk   	L )00<<V$<OOD  %O   !- 4 4 < <d < S,Zd3!4"!4H  )!4  " 2J#-#52. ##%$$00'%) 1  & KK	#.A*B)C:NOKK	-GH1" &%  	L!;C5ABK	LsM   #E D+AE <D0+E 9"D5AE +
E 5D>:E 	E
EEN)returnNone)r   r   r   helprs   r   r   r   r^   r^   K   s    HDLr   r^   N)rK   z
str | Nonert   r   )rR   ztuple[CountrySeed, ...]rS   set[str]rT   rw   rt   ztuple[list[IstatCountry], int])
__future__r   dataclassesr   typingr   django.core.management.baser   r   	django.dbr   istat.modelsr	   r   rF   r   rL   r\   r^   r   r   r   <module>r~      sE   " !  A ! % $   [ut<XED9XED9W548XED9YUT:W548W548W548]>Zed;W548]>+%$G%EDA_54@!1- ()" ! $	@Lk Lr   