+
    Vjë  ã                  ó¼   € R t ^ RIHt ^ RIHtHt ^ RIHt ^ RIH	t	H
t
 ^ RIHt ^ RIHt ^ RIHtHt ^ RIHt ^ R	IHt ^ R
IHt R R ltR R lt ! R R]	4      tR# )aB  
Detect new translatable fields in all models and sync database structure.

You will need to execute this command in two cases:

    1. When you add new languages to settings.LANGUAGES.
    2. When you add new translatable fields to your models.

Credits: Heavily inspired by django-transmeta's sync_transmeta_db command.
)Úannotations)ÚAnyÚcast)ÚIterator)ÚBaseCommandÚCommandParser)Úno_style©Ú
connection)ÚModelÚField)ÚAVAILABLE_LANGUAGES)Ú
translator)Úbuild_localized_fieldnamec               ó(   € V ^8„  d   QhRRRRRRRR/# )é   Úsql_sentencesú	list[str]Úmodel_full_nameÚstrÚinteractiveÚboolÚreturn© )Úformats   "Úq/var/www/idalgo/venv/lib/python3.14/site-packages/modeltranslation/management/commands/sync_translation_fields.pyÚ__annotate__r      s*   € ÷ ñ ¨	ð ÀCð ÐVZð Ð_cñ ó    c                ó  € \        R V,          4       V  F  p\        RV,          4       K  	   RpV'       d   \        V4      P                  4       pMRpVR8X  d   R# VR	9  d   \        R4       KD  VR8X  g   VR8X  d   R# R# )
z 
SQL to synchronize "%s" schema:z   %sTzD
Are you sure that you want to execute the previous SQL: (y/n) [n]: ÚyÚ FÚyeszPlease answer yes or no)r   Únr!   Úno)ÚprintÚinputÚstrip)r   r   r   ÚsentenceÚpromptÚanswers   &&&   r   Úask_for_confirmationr*      sx   € Ü	Ð
-°Õ
?Ô@Û!ˆÜˆg˜Õ Ö!ñ "à
ØXˆßÜ˜6“]×(Ñ(Ó*‰FàˆFØRŒ<ÙØÐ2Ô2ÜÐ+Ö,ØsŒ]˜f¨œoÙár   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   Úmissing_langsr   Ú
field_namer   Ú
model_namer   ÚNoner   )r   s   "r   r   r   /   s)   € ÷ ñ  yð ¸cð Èsð ÐW[ñ r   c           
     óR   € \        R V: RV: RRP                  V 4      : 24       R# )zMissing languages in "z" field from "z	" model: z, N)r$   Újoin)r,   r-   r.   s   &&&r   Úprint_missing_langsr2   /   s   € Ý	ã“z 4§9¡9¨]Õ#;ð	=ör   c                  óV   € ] tR t^6tRtR R ltR R ltR R ltR R	 ltR
 R lt	Rt
R# )ÚCommandz™Detect new translatable fields or new available languages and sync database structure. Does not remove columns of removed languages or undeclared fields.c               ó    € V ^8„  d   QhRRRR/# )r   Úparserr   r   r/   r   )r   s   "r   r   ÚCommand.__annotate__=   s   € ÷ 	
ñ 	
 Mð 	
°dñ 	
r   c                	ó4   € VP                  R RRRRR7      3 R# )z	--noinputÚstore_falser   Tz-Do NOT prompt the user for input of any kind.)ÚactionÚdestÚdefaultÚhelpN)Úadd_argument)Úselfr6   s   &&r   Úadd_argumentsÚCommand.add_arguments=   s)   € à×ÑØØ$Ø"ØØDð  ó ó	
r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úargsr   Úoptionsr   r/   r   )r   s   "r   r   r7   H   s!   € ÷ )9ñ )9˜Cð )9¨Cð )9°Dñ )9r   c                óæ  € \         P                  ! 4       V n        \         P                  V n        VR,          V n        Rp\        P
                  ! RR7      pV EFk  pVP                  P                  pVP                  P                  pRP                  VP                  P                  V4      p\        P                  ! V4      p	V	P                  P                  4        Fá  w  r« \        V4      ^ ,          pTP                   '       d   TP                   MT
p\        T P#                  YÖ4      4      pT'       g   K\  Rp\%        YêT4       T P'                  Y®T4      p\)        YøT P                  4      pT'       d=   \+        R4       T F  pT P                  P-                  T4       K   	  \+        R4       KÖ  \+        R4       Kã  	  EKn  	  V'       g   \+        R	4       R
# R
#   \         d     EK  i ; i)z
Command execution.
r   F)Úabstractz{}.{}TzExecuting SQL...ÚDonezSQL not executedz#No new translatable fields detectedN)r
   ÚcursorÚintrospectionr   r   Úget_registered_modelsÚ_metaÚdb_tabler.   r   Ú	app_labelÚget_options_for_modelÚlocal_fieldsÚitemsÚlistÚ
IndexErrorÚ	db_columnÚget_missing_languagesr2   Úget_sync_sqlr*   r$   Úexecute)r?   rC   rD   Úfound_missing_fieldsÚmodelsÚmodelrL   r.   r   Úoptsr-   ÚfieldsÚfieldÚcolumn_namer,   r   Úexecute_sqlr'   s   &*,               r   ÚhandleÚCommand.handleH   s  € ô !×'Ò'Ó)ˆŒÜ'×5Ñ5ˆÔØ" =Õ1ˆÔà$ÐÜ×1Ò1¸5ÔAˆÜˆEØ—{‘{×+Ñ+ˆHØŸ™×/Ñ/ˆJØ%Ÿn™n¨U¯[©[×-BÑ-BÀJÓOˆOÜ×3Ò3°EÓ:ˆDØ&*×&7Ñ&7×&=Ñ&=Ö&?Ñ"
ðÜ  ›L¨OEð
 27··°˜eŸošoÀjÜ $ T×%?Ñ%?ÀÓ%VÓ Wß ‘=Ø+/Ð(Ü'¨À?ÔSØ$(×$5Ñ$5°jÐQVÓ$WMÜ"6Ø%¸×8HÑ8Hó#K÷ #ÜÐ0Ô1Û(5˜HØ ŸK™K×/Ñ/°Ö9ñ )6ä˜fžäÐ0Ö1ô/ '@ñ ÷< $ÜÐ7Ö8ñ $øô+ "ô ó ðús   Ã%G Ç G0Ç/G0c               ó    € V ^8„  d   QhRRRR/# )r   rL   r   r   r   r   )r   s   "r   r   r7   s   s   € ÷ -ñ -¨ð -°ñ -r   c                óˆ   € V P                   P                  V P                  V4      pV Uu. uF  q3^ ,          NK  	  up# u upi )z 
Gets table fields from schema.
)rI   Úget_table_descriptionrH   )r?   rL   Údb_table_descÚts   &&  r   Úget_table_fieldsÚCommand.get_table_fieldss   s<   € ð ×*Ñ*×@Ñ@ÀÇÁÈhÓWˆÙ+Ó,™m˜!—™mÑ,Ð,ùÒ,s   «?c               ó$   € V ^8„  d   QhRRRRRR/# )r   r-   r   rL   r   zIterator[str]r   )r   s   "r   r   r7   z   s!   € ÷  ñ  °ð  ¸sð  À}ñ  r   c              #  óv   "  € V P                  V4      p\         F  p\        W4      V9  g   K  Vx € K  	  R# 5i)z
Gets only missing fields.
N)rf   r   r   )r?   r-   rL   Údb_table_fieldsÚ	lang_codes   &&&  r   rT   ÚCommand.get_missing_languagesz   s3   é € ð ×/Ñ/°Ó9ˆß,ˆIÜ(¨Ó?ÀÖVØ”ó -ùs   ‚(9¯
9c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r-   r   r,   r   rY   ztype[Model]r   r   )r   s   "r   r   r7   ƒ   s,   € ÷ ñ ØðØ.7ðØ@Kðà	ñr   c                óh  € \         P                  P                  p\        4       p. pVP                  P
                  pV Fï  p\        W4      p	\        \        VP                  P                  V	4      4      p
V
P                  \         R7      pVP                  V! V
P                  4      4      VP                  V4      .pRP                  V! V4      RP                  V4      4      pV
P                   '       g    VRVP#                  R4      ,           ,          pVP%                  VR,           4       Kñ  	  V# )zB
Returns SQL needed for sync schema for a new translatable field.
r	   zALTER TABLE {} ADD COLUMN {}Ú zNOT NULLÚ;)r
   ÚopsÚ
quote_namer   rK   rL   r   r   r   Ú	get_fieldÚdb_typeÚ	SQL_FIELDÚcolumnÚSQL_COLTYPEr   r1   ÚnullÚSQL_KEYWORDÚappend)r?   r-   r,   rY   ÚqnÚstyleÚ
sql_outputrL   ÚlangÚ	new_fieldÚfÚcol_typeÚ	field_sqlÚstmts   &&&&          r   rU   ÚCommand.get_sync_sqlƒ   sð   € ô ^‰^×&Ñ&ˆÜ“
ˆØ "ˆ
Ø—;‘;×'Ñ'ˆÛ!ˆDÜ1°*ÓCˆIÜ”U˜EŸK™K×1Ñ1°)Ó<Ó=ˆAØ—y‘y¬JyÓ7ˆHØŸ™©¨A¯H©H«Ó6¸×8IÑ8IÈ(Ó8SÐTˆIà1×8Ñ8¹¸H»ÀsÇxÁxÐPYÓGZÓ[ˆDØ—6—66Ø˜˜e×/Ñ/°
Ó;Õ;Õ;Ø×Ñ˜d SjÖ)ñ "ð Ðr   )rH   r   rI   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r=   r@   r_   rf   rT   rU   Ú__static_attributes__r   r   r   r4   r4   6   s+   † ð	+ð 	õ	
õ)9õV-õ ÷ñ r   r4   N)Ú__doc__Ú
__future__r   Útypingr   r   Úcollections.abcr   Údjango.core.management.baser   r   Údjango.core.management.colorr   Ú	django.dbr
   Údjango.db.modelsr   r   Úmodeltranslation.settingsr   Úmodeltranslation.translatorr   Úmodeltranslation.utilsr   r*   r2   r4   r   r   r   Ú<module>r•      sB   ðñ	õ #ç Ý $ç BÝ 1Ý  ß )å 9Ý 2Ý <õõ(ôaˆkö ar   