Ë
    qûàg+&  ã                   ó®   — 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y)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  S dS )Nz'%s'zabsolute path© )Údirnames    úl/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django_extensions/management/commands/syncdata.pyÚhumanizer      s   € Ù&ˆ6�GÑÐ;¨OÐ;ó    c                   ó   — e Zd Zy)ÚSyncDataErrorN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r      s   „ Ør   r   c                   óF   ‡ — 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 command zRMakes the current database have the same data as the fixture(s), no more, no less.zfixture [fixture ...]c                 óÞ   •— t         ‰| �  |«       |j                  ddddd¬«       |j                  ddd	d
d¬«       |j                  dt        d¬«       |j                  ddt        d¬«       y )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Ô%Ø×ÑØ M¸È$Ø2ð 	ô 	
ð 	×ÑØ l¸ÐRWØQð 	ô 	
ð 	×ÑØÔ"2Økð 	ô 	
ð 	×ÑØ C¬cØ>ð 	õ 	
r   c                 óD  — |j                  «       D �]  }|j                  j                  «       }t        d„ |D «       «      }t        d„ ||   D «       «      }|j	                  |«      }|rC|D ]>  }|j
                  |v sŒ|j                  «        |dk\  sŒ(t        dt        |«      z  «       Œ@ |dkD  sŒ¡|sŒ¤t        |«      }	|	dkD  r t        |j                  j                  «      }
nt        |j                  j                  «      }
t        dt        |	«      ›d|
›�«       �Œ y	)
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   ó4   K  — | ]  }|j                   –— Œ y ­w©N©Úpk©Ú.0Úxs     r   ú	<genexpr>z0Command.remove_objects_not_in.<locals>.<genexpr>B   s   è ø€ Ò4 q˜aŸd�dÑ4ùó   ‚c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr1   r2   r4   s     r   r7   z0Command.remove_objects_not_in.<locals>.<genexpr>C   s   è ø€ ÒA A˜1Ÿ4�4ÑAùr8   é   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_in:   s  € ð &×*Ñ*Ó,ó 	JˆFØ—n‘n×(Ñ(Ó*ˆGÜÑ4¨GÔ4Ó4ˆKÜÑA¨¸Ñ)@ÔAÓAˆHà +× 6Ñ 6°xÓ @ÐÙ Ø"ò C�CØ—v‘vÐ!2Ò2ØŸ
™
œØ$¨›>Ü!Ð"6¼¸S»Ñ"AÕBð	Cð ˜1‹}Ò!2Ü!Ð"3Ó4�Ø ’?Ü#& v§|¡|×'GÑ'GÓ#H‘Lä#& v§|¡|×'@Ñ'@Ó#A�Lå¬¨[Õ)9¹<ÐHÖIñ)	Jr   c                 ó*  — t        «       | _        |d   | _        |d   r|d   j                  d«      nd}	 t	        j
                  «       5  | j                  ||«       d d d «       t	        j                  | j                  «      r"t        | j                     j                  «        y y # 1 sw Y   ŒKxY w# t        $ r}t        |«      ‚d }~ww xY w# t	        j                  | j                  «      r"t        | j                     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.handleV   sã   € ä“ZˆŒ
Ø˜ZÑ(ˆŒ
ØAHÐIYÒAZ˜Ð!1Ñ2×8Ñ8¸Ô=Ð`bˆð	0Ü×#Ñ#Ó%ñ 7Ø—‘˜n¨gÔ6÷7ô ×)Ñ)¨$¯*©*Ô5Ü˜DŸJ™JÑ'×-Ñ-Õ/ð 6÷7ð 7ûäò 	$Ü˜sÓ#Ð#ûð	$ûô ×)Ñ)¨$¯*©*Ô5Ü˜DŸJ™JÑ'×-Ñ-Õ/ð 6ús<   ¶B3 Á
B'ÁB3 Â'B0Â,B3 Â3	CÂ<CÃCÃC ÃADc                 óü	  — |d   }|d   }d}d}g }t        «       }t        | j                     j                  «       }	t	        j
                  «       D �
cg c]  }
|
j                  ‘Œ }}
|D �
cg c]I  }
t        j                  j                  t        j                  j                  |
j                  «      d«      ‘ŒK }}
|D �]Ö  }|j                  d«      }t        |«      dk(  r|}t        j                  «       }n5dj                  |d d «      |d   }}|t        j                  «       v r|g}ng }|r|dkD  r!t!        d|z  «       nt#        d	|›d
›d�«      ‚t        j                  j%                  |«      r|g}n |t'        t(        j*                  «      z   dgz   }|D �]÷  }|dkD  rt!        dt-        |«      z  «       d}|D �]Ð  }|dkD  rt!        dt-        |«      ›d|›d|›d�«       	 t        j                  j                  |dj                  ||g«      «      }t/        |d«      }|r+|j1                  «        t#        d|›dt-        |«      ›d�«      ‚|dz  }|j3                  d«       |dkD  rt!        d|›d|›dt-        |«      ›d�«       	 i }t'        t        j4                  ||«      «      }|D ]G  }|j6                  j8                  }||vrt        «       ||<   ||   j;                  |j6                  «       ŒI |d   r|d   r| j=                  ||«       |D ]I  }|dz  }|dxx   dz  cc<   |j;                  |j6                  j8                  «       |j?                  «        ŒK |d   r|d   s| j=                  ||«       d}|j1                  «        �ŒÓ �Œú �ŒÙ d|v rt#        dz  «      ‚|dkD  rat        | j                     jL                  jO                  | jP                  |«      }|r(|dkD  rt!        d«       |D ]  }|	jS                  |«       Œ |dk(  r|dkD  rt!        d «       y y |dkD  r%t!        d!|tU        |«      |tU        |«      fz  «       y y c c}
w c c}
w # t@        tB        f$ r ‚ tD        $ rG dd l#}|j1                  «        |r|jI                  «        t#        d	|›d
|jK                  «       ›d�«      ‚w xY w# t"        $ r}|‚d }~wtD        $ r' |dkD  rt!        d|›d|›dt-        |«      ›d�«       Y �Œ=w xY w)"NrI   Ú	tracebackr   Úfixturesú.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
   rW   Úcursorr   Úget_app_configsÚmoduleÚosÚpathÚjoinr   Ú__file__rX   rD   r   Úget_public_serializer_formatsrC   r   ÚisabsÚlistr   ÚFIXTURE_DIRSr   Úopenr\   ÚappendÚdeserializeÚobjectr.   ÚaddrR   ÚsaveÚ
SystemExitÚKeyboardInterruptÚ	Exceptionrb   Ú	print_excÚ
format_excÚopsÚsequence_reset_sqlrV   Úexecuter   )r,   r$   r^   rI   Úshow_tracebackÚfixture_countÚobject_countÚobjects_per_fixtureÚmodelsri   ÚappÚapp_modulesÚapp_fixturesÚfixture_labelÚpartsÚfixture_nameÚformatsÚformat_Úfixture_dirsÚfixture_dirÚlabel_foundÚ	full_pathÚfixturerH   r>   rO   rJ   rb   ÚeÚsequence_sqlÚlines                                  r   rZ   zCommand.syncdatah   s  € Ø˜KÑ(ˆ	Ø  Ñ-ˆð ˆØˆØ ÐÜ“ˆô
 ˜TŸZ™ZÑ(×/Ñ/Ó1ˆä-1×-AÑ-AÓ-CÖD c�s—z“zÐDˆÐDØ[fÖgÐTWœŸ™Ÿ™¤R§W¡W§_¡_°S·\±\Ó%BÀJÕOÐgˆÐgØ+ó N	pˆMØ!×'Ñ'¨Ó,ˆEÜ�5‹z˜QŠØ,�Ü%×CÑCÓE‘à(+¯©°°s¸°Ó(<¸eÀB¹i˜g�Øœk×GÑGÓIÑIØ&˜i‘Gà �GáØ˜q’=ÜÐ4°|ÑCÕDå#Òr~ò  AHð  %Ió  Jð  Jä�w‰w�}‰}˜\Ô*Ø ,˜~‘à+¬d´8×3HÑ3HÓ.IÑIÈRÈDÑP�à+ó 7p�Ø˜q’=ÜÐ7¼(À;Ó:OÑOÔPà#�Ø&ó 2p�GØ  1’}ÝÄHÈ[ÕDYÒ[bÒdpÐqÔrð/pÜ$&§G¡G§L¡L°¸c¿h¹hÈÐV]ÐG^Ó>_Ó$`˜	Ü"& y°#Ó"6˜Ù&Ø#ŸM™MœOÝ"/ÒcoÔqyð  {Fõ  rGð  1Hó  #Ið  Ià)¨QÑ.˜MØ/×6Ñ6°qÔ9Ø(¨1š}Ý %ÊwÒXdÔfnÐozÕf{Ð&|Ô }ðCØ24 Ü*.¬{×/FÑ/FÀwÐPWÓ/XÓ*Y Ø+2ò !L CØ-0¯Z©Z×-AÑ-A FØ'-°_Ñ'DÜBEÃ%¨¸Ñ(?Ø$3°FÑ$;×$?Ñ$?ÀÇ
Á
Õ$Kð	!Lð $+¨8Ò#4¸ÀÒ9QØ$(×$>Ñ$>¸ÐPYÔ$Zà+2ò !/ CØ$0°AÑ$5 LØ$7¸Ó$;¸qÑ$@Ó$;Ø$*§J¡J¨s¯z©z×/CÑ/CÔ$DØ$'§H¡H¥Jð	!/ð $+¨8Ò#4¸WÀ_Ò=UØ$(×$>Ñ$>¸ÐPYÔ$Zà.2 ð $ŸM™MžOò[2pò7pð/N	pðd Ð#Ñ#ÜÐ _ÐbnÑ nÓoÐoð ˜!ÒÜ& t§z¡zÑ2×6Ñ6×IÑIÈ$Ï*É*ÐV\Ó]ˆLÙØ˜q’=ÜÐ/Ô0Ø(ò )�DØ—N‘N 4Õ(ð)ð ˜1ÒØ˜1Š}ÜÐ*Õ+ð ð ˜1Š}ÜÐ?Ø ¤)¨LÓ"9Ø!¤9¨]Ó#;ðCñ õ ð ùòK EùÚgøôB %/Ô0AÐ#Bò &Ø %Ü#,ò CÛ 0Ø '§¡¤Ù#1Ø$-×$7Ñ$7Ô$9Ý&3Ò_hÐjs×j~Ñj~õ  kAð  5Bó  'Cð  !CðCûô )ò  Ø˜ûÜ$ò pØ$ qš=Ý!ÂÊ,ÔX`ÐalÕXmÐ"nÔoúðpúsF   ÁQÁ+AQÇ%B#R=Ê	C5QÍ>R=ÑAR:	Ò:R=Ò=	S;	ÓS	Ó/S;	Ó:S;	)r   r   r   Ú__doc__r!   r]   r)   rR   r   r`   rZ   Ú__classcell__)r.   s   @r   r   r   !   s5   ø„ Ùà_€DØ"€Dô
ò&Jð8 ñ0ó ð0ö"xr   r   )r—   rl   Ú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¡      sI   ðñó 
å Ý  Ý #ß AÝ 1ß @Ñ @Ý 4å <ò<ô	�Iô 	ôˆkõ r   