§
    kÍâhS+  ã                   ó¼   — d Z ddlZ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mZmZ dd	lmZ dd
lmZ d„ Z G d„ de¦  «        Z G d„ de	¦  «        ZdS )a  
SyncData
========

Django command similar to 'loaddata' but also deletes.
After 'syncdata' has run, the database will have the same data as the fixture - anything
missing will of been added, anything different will of been updated,
and anything extra will of been deleted.
é    N)Úapps)Úsettings)Úserializers)ÚBaseCommandÚCommandError)Úno_style)ÚDEFAULT_DB_ALIASÚconnectionsÚtransaction)Ú	pluralize)Úsignalcommandc                 ó   — | rd| z  ndS )Nz'%s'zabsolute path© )Údirnames    úe/var/www/histauto/venv/lib/python3.11/site-packages/django_extensions/management/commands/syncdata.pyÚhumanizer      s   € Ø&Ð;ˆ6�GÑÐ¨OÐ;ó    c                   ó   — e Zd ZdS )ÚSyncDataErrorN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r      s   € € € € € Ø€Dr   r   c                   óL   ‡ — e Zd ZdZdZdZˆ fd„Zd„ Zed„ ¦   «         Z	d„ Z
ˆ xZS )ÚCommandzsyncdata commandzRMakes the current database have the same data as the fixture(s), no more, no less.zfixture [fixture ...]c                 ó(  •— t          ¦   «                              |¦  «         |                     ddddd¬¦  «         |                     ddd	d
d¬¦  «         |                     dt          d¬¦  «         |                     ddt          d¬¦  «         d S )Nz--skip-removeÚstore_falseÚremoveTzAvoid remove any object from db)ÚactionÚdestÚdefaultÚhelpz--remove-beforeÚ
store_trueÚremove_beforeFz>Remove existing objects before inserting and updating new onesz
--databasezXNominates a specific database to load fixtures into. Defaults to the "default" database.)r    r!   Úfixture_labelsú?z+Specify the fixture label (comma separated))ÚnargsÚtyper!   )ÚsuperÚadd_argumentsÚadd_argumentr	   Ústr)ÚselfÚparserÚ	__class__s     €r   r)   zCommand.add_arguments'   sÔ   ø€ Ý‰Œ×Ò˜fÑ%Ô%Ð%Ø×ÒØØ ØØØ2ð 	ñ 	
ô 	
ð 	
ð 	×ÒØØØ ØØQð 	ñ 	
ô 	
ð 	
ð 	×ÒØÝ$ð6ð	 	ñ 	
ô 	
ð 	
ð 	×ÒØØÝØ>ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
r   c                 óz  — |                      ¦   «         D �]$}|j                             ¦   «         }t          d„ |D ¦   «         ¦  «        }t          d„ ||         D ¦   «         ¦  «        }|                     |¦  «        }|rG|D ]D}|j        |v r9|                     ¦   «          |dk    rt          dt          |¦  «        z  ¦  «         ŒE|dk    rl|rjt          |¦  «        }	|	dk    rt          |j
        j        ¦  «        }
nt          |j
        j        ¦  «        }
t          dt          |	¦  «        ›d|
›�¦  «         �Œ&d	S )
zå
        Delete all the objects in the database that are not in objects_to_keep.
        - objects_to_keep: A map where the keys are classes, and the values are a
         set of the objects of that class we should keep.
        c              3   ó$   K  — | ]}|j         V — Œd S ©N©Úpk©Ú.0Úxs     r   ú	<genexpr>z0Command.remove_objects_not_in.<locals>.<genexpr>N   s$   è è € Ð4Ð4 q˜aœdÐ4Ð4Ð4Ð4Ð4Ð4r   c              3   ó$   K  — | ]}|j         V — Œd S r1   r2   r4   s     r   r7   z0Command.remove_objects_not_in.<locals>.<genexpr>O   s$   è è € ÐAÐA A˜1œ4ÐAÐAÐAÐAÐAÐAr   é   zDeleted object: %sr   é   zDeleted ú N)ÚkeysÚobjectsÚallÚsetÚ
differencer3   ÚdeleteÚprintr+   ÚlenÚ_metaÚverbose_name_pluralÚverbose_name)r,   Úobjects_to_keepÚ	verbosityÚclass_ÚcurrentÚcurrent_idsÚkeep_idsÚremove_these_onesÚobjÚnum_deletedÚtype_deleteds              r   Úremove_objects_not_inzCommand.remove_objects_not_inF   s[  € ð &×*Ò*Ñ,Ô,ð 	Jñ 	JˆFØ”n×(Ò(Ñ*Ô*ˆGÝÐ4Ð4¨GÐ4Ñ4Ô4Ñ4Ô4ˆKÝÐAÐA¨¸Ô)@ÐAÑAÔAÑAÔAˆHà +× 6Ò 6°xÑ @Ô @ÐØ ð CØ"ð Cð C�CØ”vÐ!2Ð2Ð2ØŸ
š
™œ˜Ø$¨š>˜>Ý!Ð"6½¸S¹¼Ñ"AÑBÔBÐBøà˜1Š}ˆ}Ð!2ˆ}Ý!Ð"3Ñ4Ô4�Ø ’?�?Ý#& v¤|Ô'GÑ#HÔ#H�L�Lå#& v¤|Ô'@Ñ#AÔ#A�Lå�­¨[Ñ)9Ô)9Ð)9Ð)9¸<¸<ÐHÑIÔIÐIùð)	Jð 	Jr   c                 ó\  — t          ¦   «         | _        |d         | _        |d         r|d                              d¦  «        nd}	 t	          j        ¦   «         5  |                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   n!# t          $ r}t          |¦  «        ‚d }~ww xY wt	          j	        | j        ¦  «        r&t          | j                                      ¦   «          d S d S # t	          j	        | j        ¦  «        r%t          | j                                      ¦   «          w w xY w)NÚdatabaser$   ú,r   )r   ÚstyleÚusingÚsplitr   ÚatomicÚsyncdatar   r   Úget_autocommitr
   Úclose)r,   ÚargsÚoptionsr$   Úexcs        r   ÚhandlezCommand.handleb   sj  € å‘Z”ZˆŒ
Ø˜ZÔ(ˆŒ
à4;Ð<LÔ4MÐUˆGÐ$Ô%×+Ò+¨CÑ0Ô0Ð0ÐSUð 	ð	0ÝÔ#Ñ%Ô%ð 7ð 7Ø—’˜n¨gÑ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7øøåð 	$ð 	$ð 	$Ý˜sÑ#Ô#Ð#øøøøð	$øøøõ Ô)¨$¬*Ñ5Ô5ð 0Ý˜DœJÔ'×-Ò-Ñ/Ô/Ð/Ð/Ð/ð0ð 0ø�{Ô)¨$¬*Ñ5Ô5ð 0Ý˜DœJÔ'×-Ò-Ñ/Ô/Ð/Ð/ð0øøøsO   ÁB	 ÁA=Á1B	 Á=BÂB	 ÂBÂB	 ÂC+ Â	
B'ÂB"Â"B'Â'C+ Ã+A D+c                 ó†
  — |d         }|d         }d}d}g }t          ¦   «         }t          | j                                      ¦   «         }	d„ t	          j        ¦   «         D ¦   «         }
d„ |
D ¦   «         }|D �]÷}|                     d¦  «        }t          |¦  «        dk    r|}t          j	        ¦   «         }n@d 
                    |d d…         ¦  «        |d         }}|t          j	        ¦   «         v r|g}ng }|r|dk    rt          d	|z  ¦  «         nt          d
|›d|›d�¦  «        ‚t          j                             |¦  «        r|g}n |t!          t"          j        ¦  «        z   dgz   }|D �]þ}|dk    rt          dt'          |¦  «        z  ¦  «         d}|D �]Ð}|dk    r&t          dt'          |¦  «        ›d|›d|›d�¦  «         	 t          j         
                    |d 
                    ||g¦  «        ¦  «        }t)          |d¦  «        }|r7|                     ¦   «          t          d|›dt'          |¦  «        ›d�¦  «        ‚|dz  }|                     d¦  «         |dk    r&t          d|›d|›dt'          |¦  «        ›d�¦  «         	 i }t!          t          j        ||¦  «        ¦  «        }|D ]C}|j        j        }||vrt          ¦   «         ||<   ||                              |j        ¦  «         ŒD|d         r|d         r|                      ||¦  «         |D ]J}|dz  }|dxx         dz  cc<   |                     |j        j        ¦  «         |                     ¦   «          ŒK|d         r|d         s|                      ||¦  «         d}nu# t:          t<          f$ r ‚ t>          $ rW dd l }|                     ¦   «          |r| !                    ¦   «          t          d
|›d| "                    ¦   «         ›d�¦  «        ‚w xY w|                     ¦   «          �Œ†# t          $ r}|‚d }~wt>          $ r0 |dk    r&t          d|›d|›dt'          |¦  «        ›d�¦  «         Y �ŒÎw xY w�Œ �Œùd|v rt          d|z  ¦  «        ‚|dk    rat          | j                 j#         $                    | j%        |¦  «        }|r/|dk    rt          d ¦  «         |D ]}|	 &                    |¦  «         Œ|dk    r|dk    rt          d!¦  «         d S d S |dk    r2t          d"|tO          |¦  «        |tO          |¦  «        fz  ¦  «         d S d S )#NrH   Ú	tracebackr   c                 ó   — g | ]	}|j         ‘Œ
S r   )Úmodule©r5   Úapps     r   ú
<listcomp>z$Command.syncdata.<locals>.<listcomp>…   s   € ÐDÐDÐD c�s”zÐDÐDÐDr   c                 ó’   — g | ]D}t           j                             t           j                             |j        ¦  «        d ¦  «        ‘ŒES )Úfixtures)ÚosÚpathÚjoinr   Ú__file__rd   s     r   rf   z$Command.syncdata.<locals>.<listcomp>†   sH   € ð 
ð 
ð 
àõ ŒG�LŠL�œŸš¨¬Ñ6Ô6¸
ÑCÔCð
ð 
ð 
r   ú.r:   éÿÿÿÿzLoading '%s' fixtures...zProblem installing fixture 'z': z% is not a known serialization format.Ú zChecking %s for fixtures...FzTrying z for z
 fixture 'z'...ÚrzMultiple fixtures named 'z' in z. Aborting.zInstalling z' from r   r#   Tú
zNo z=No fixture data found for '%s'. (File format may be invalid.)zResetting sequenceszNo fixtures found.z'Installed %d object%s from %d fixture%s)(r?   r
   rV   Úcursorr   Úget_app_configsrW   rC   r   Úget_public_serializer_formatsrk   rB   r   ri   rj   ÚisabsÚlistr   ÚFIXTURE_DIRSr   Úopenr[   ÚappendÚdeserializeÚobjectr.   ÚaddrQ   ÚsaveÚ
SystemExitÚKeyboardInterruptÚ	Exceptionra   Ú	print_excÚ
format_excÚopsÚsequence_reset_sqlrU   Úexecuter   )r,   r$   r]   rH   Úshow_tracebackÚfixture_countÚobject_countÚobjects_per_fixtureÚmodelsrr   Úapp_modulesÚapp_fixturesÚfixture_labelÚpartsÚfixture_nameÚformatsÚformat_Úfixture_dirsÚfixture_dirÚlabel_foundÚ	full_pathÚfixturerG   r=   rN   rI   ra   ÚeÚsequence_sqlÚlines                                 r   rY   zCommand.syncdatav   sÁ  € Ø˜KÔ(ˆ	Ø  Ô-ˆð ˆØˆØ ÐÝ‘”ˆõ
 ˜TœZÔ(×/Ò/Ñ1Ô1ˆàDÐD­TÔ-AÑ-CÔ-CÐDÑDÔDˆð
ð 
à"ð
ñ 
ô 
ˆð ,ð l	ñ l	ˆMØ!×'Ò'¨Ñ,Ô,ˆEÝ�5‰zŒz˜QŠˆØ,�Ý%ÔCÑEÔE��à(+¯ª°°s¸°s´Ñ(<Ô(<¸eÀB¼i˜g�Ø�kÔGÑIÔIÐIÐIØ&˜i�G�Gà �Gàð 
Ø˜q’=�=ÝÐ4°|ÑCÑDÔDÐDøå#�mð
 $�|�| W W Wð	.ñô ð õ Œw�}Š}˜\Ñ*Ô*ð QØ ,˜~��à+­dµ8Ô3HÑ.IÔ.IÑIÈRÈDÑP�à+ð Oñ O�Ø˜q’=�=ÝÐ7½(À;Ñ:OÔ:OÑOÑPÔPÐPà#�Ø&ð Jñ J�GØ  1’}�}Ý˜å'¨Ñ4Ô4Ð4Ð4°g°g°g¸|¸|¸|ðMñô ð ðDÝ$&¤G§L¢LØ'¨¯ª°<ÀÐ2IÑ)JÔ)Jñ%ô %˜	õ #' y°#Ñ"6Ô"6˜Ø&ð 7,Ø#ŸMšM™OœO˜OÝ"/ -à#/ < <µ¸+Ñ1FÔ1FÐ1FÐ1Fð!Hñ#ô #ð ð
 *¨QÑ.˜MØ/×6Ò6°qÑ9Ô9Ð9Ø(¨1š}˜}Ý % à'. w w°°°½hÀ{Ñ>SÔ>SÐ>SÐ>Sð%Uñ!"ô !"ð !"ð'"Ø24 Ý*.Ý$/Ô$;¸GÀWÑ$MÔ$Mñ+"ô +" ð ,3ð !Lð !L CØ-0¬ZÔ-A FØ'-°_Ð'DÐ'DÝBEÁ%Ä%¨¸Ñ(?Ø$3°FÔ$;×$?Ò$?ÀÄ
Ñ$KÔ$KÐ$KÐ$Kà#*¨8Ô#4ð !&¸ÀÔ9Qð !&Ø$(×$>Ò$>Ø(7¸ñ%&ô %&ð %&ð ,3ð !/ð !/ CØ$0°AÑ$5 LØ$7¸Ð$;Ð$;Ô$;¸qÑ$@Ð$;Ð$;Ñ$;Ø$*§J¢J¨s¬zÔ/CÑ$DÔ$DÐ$DØ$'§H¢H¡J¤J J Jà#*¨8Ô#4ð !&¸WÀ_Ô=Uð !&Ø$(×$>Ò$>Ø(7¸ñ%&ô %&ð %&ð /3  øÝ$.Õ0AÐ#Bð &ð &ð &Ø %Ý#,ð 	"ð 	"ð 	"Ø 0Ð 0Ð 0Ð 0à '§¢¡¤ Ø#1ð !:Ø$-×$7Ò$7Ñ$9Ô$9Ð$9Ý&3 mà'0 y y°)×2FÒ2FÑ2HÔ2HÐ2HÐ2Hð%Jñ'"ô '"ð !"ð	"øøøð $ŸMšM™OœO˜O™OøÝ(ð  ð  ð  Ø˜øøøøÝ$ð ð ð Ø$ qš=˜=Ý!˜Eà#* 7 7¨L¨L¨L½(À;Ñ:OÔ:OÐ:OÐ:Oð!Qñô ð øùðøøøñKJñOðf Ð#Ð#Ð#ÝØOØññô ð ð ˜!ÒÐÝ& t¤zÔ2Ô6×IÒIØ”
˜Fñô ˆLð ð )Ø˜q’=�=ÝÐ/Ñ0Ô0Ð0Ø(ð )ð )�DØ—N’N 4Ñ(Ô(Ð(Ð(à˜1ÒÐØ˜1Š}ˆ}ÝÐ*Ñ+Ô+Ð+Ð+Ð+ð ˆ}ð ˜1Š}ˆ}ÝØ=à$Ý! ,Ñ/Ô/Ø%Ý! -Ñ0Ô0ð	ññô ð ð ð ð ˆ}s9   ÇCPÊDNÎPÎA2P	ÐPÐ
Q&	Ð'P)	Ð)9Q&	Ñ%Q&	)r   r   r   Ú__doc__r!   r\   r)   rQ   r   r_   rY   Ú__classcell__)r.   s   @r   r   r   !   s‹   ø€ € € € € ØÐà_€DØ"€Dð
ð 
ð 
ð 
ð 
ð>Jð Jð Jð8 ð0ð 0ñ „]ð0ð&cð cð cð cð cð cð cr   r   )rš   ri   Údjango.appsr   Údjango.confr   Údjango.corer   Údjango.core.management.baser   r   Údjango.core.management.colorr   Ú	django.dbr	   r
   r   Údjango.template.defaultfiltersr   Ú"django_extensions.management.utilsr   r   r€   r   r   r   r   r   ú<module>r¤      s3  ððð ð 
€	€	€	à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø #Ð #Ð #Ð #Ð #Ð #Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4à <Ð <Ð <Ð <Ð <Ð <ð<ð <ð <ð	ð 	ð 	ð 	ð 	�Iñ 	ô 	ð 	ðxð xð xð xð xˆkñ xô xð xð xð xr   