
    h@{                    R   S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	r	S SK
Jr  S SKJr  S SKJr  S SKJrJrJrJrJrJr  S S	KJrJrJrJrJrJr  S S
KJrJ r J!r!J"r"J#r#  S SK$J%r%  S SK&J'r'J(r(  S SK)J*r*  S SK+J,r,J-r-J.r.J/r/  S SK0J1r1  S SK2J3r3  S SK4J5r5  S SK6J7r7J8r8  S SK9J:r:J;r;J<r<J=r=J>r>  S SK?J@r@JArA  S SKBJCrC  S SKDJErE  S SKFJGrG  S SKHJIrIJJrJ  S SKKJLrM   " S S5      rN\N" 5       rOS rPS rQ " S S\R5      rS " S  S!5      rT " S" S#5      rU " S$ S%\@\SS&9rVS,S' jrWS( rXS) rYS* rZS+\Zl[        g)-    N)partialmethod)chain)sync_to_async)apps)settings)checks)NON_FIELD_ERRORSFieldDoesNotExist
FieldErrorMultipleObjectsReturnedObjectDoesNotExistValidationError)DJANGO_VERSION_PICKLE_KEYDatabaseError
connectionconnectionsroutertransaction)NOT_PROVIDEDExpressionWrapperIntegerFieldMaxValue
LOOKUP_SEP)CASCADE	Collector)DatabaseDefault)ForeignObjectRelOneToOneFieldlazy_related_operationresolve_relation)Coalesce)Manager)Options)FQ)class_prepared	post_init	post_savepre_initpre_save)
AltersDatamake_model_tuple)RemovedInDjango60Warning)	force_str)make_hashable)capfirstget_text_list)gettext_lazyc                        \ rS rSrS rS rSrg)Deferred:   c                     gNz<Deferred field> selfs    G/var/www/html/env/lib/python3.13/site-packages/django/db/models/base.py__repr__Deferred.__repr__;       !    c                     gr9   r:   r;   s    r=   __str__Deferred.__str__>   r@   rA   r:   N)__name__
__module____qualname____firstlineno__r>   rC   __static_attributes__r:   rA   r=   r6   r6   :   s    ""rA   r6   c                 D    [        U UUUR                  < SU < 3S.5      $ )z
Create exception subclass. Used by ModelBase below.

The exception is created in a way that allows it to be pickled, assuming
that the returned exception class will be added as an attribute to the
'attached_to' class.
.)rF   rG   )typerG   )namebasesmoduleattached_tos       r=   subclass_exceptionrQ   E   s-      '2'?'?F	
 rA   c                 ^    [         R                  " U 5      (       + =(       a    [        U S5      $ )Ncontribute_to_class)inspectisclasshasattr)values    r=   _has_contribute_to_classrX   W   s!    u%%O'%9N*OOrA   c                   X   ^  \ rS rSrSrU 4S jrS rS r\S 5       r	\S 5       r
SrU =r$ )		ModelBase\   zMetaclass for all models.c                   > [         T'U ]  nU Vs/ s H  n[        U[        5      (       d  M  UPM     nnU(       d	  U" XX#5      $ UR	                  S5      nSU0n	UR	                  SS 5      n
U
b  XS'   UR	                  SS 5      n0 nUR                  5        H  u  p[        U5      (       a  XU'   M  XU'   M!     U" XX)40 UD6n[        USS5      nU=(       d    [        USS 5      n[        USS 5      nS n[        R                  " U5      n[        USS 5      c+  Uc  U(       d  [        SU< S	U< S
35      eOUR                  nUR                  S[        UU5      5        U(       d  UR                  S[        S[        S U 5       5      =(       d    [         4UUS95        UR                  S[        S[        S U 5       5      =(       d    ["        4UUS95        U(       ai  UR$                  (       dX  ['        US5      (       d  UR(                  UR*                  l        ['        US5      (       d  UR,                  UR*                  l        UR*                  R.                  nU(       a5  U(       a.  UR0                  (       a  [3        U< SUR0                  < S35      eUR                  5        H  u  pUR                  X5        M     [5        UR*                  R6                  UR*                  R8                  UR*                  R:                  5      nU Vs1 s H  nUR<                  iM     nnU(       Ga	  S nU Vs/ s H  n['        US5      (       d  M  UPM     sn H  nUR*                  R$                  (       a+  UR*                  R>                  (       a  [3        SU-  5      eMI  Uc  UnMP  UR*                  R@                  UR*                  R@                  Ld  M  [3        SU-  5      e   Uc  [3        SU-  5      eUR*                  RC                  U5        UR*                  R@                  UR*                  l         OXR*                  l         0 n[E        U/U-   5       H  n['        US5      (       d  M  UU:w  a  UR*                  R$                  (       d  M9  UR*                  R6                   He  n[        U[F        5      (       d  M  URH                  RJ                  (       d  M7  [M        UURH                  RN                  5      nUU[Q        U5      '   Mg     M     [S        5       nURU                  5        GHo  nUU;  d  ['        US5      (       d  URW                  URX                  5        M8  UR*                  R6                  UR*                  R8                  -   n UR*                  R$                  (       Gd&  U  HZ  nUR<                  U;   a,  [[        SUR<                  < SU< SUR\                  < S	35      eUR_                  UR<                  5        M\     UR*                  R@                  n[Q        U5      n!U!U;   a  UU!   nOU(       dv  SUR*                  R`                  -  n"[G        U[b        U"SSS9nU"U;   a"  [[        SU"< SU< SUR\                  < S 35      e['        UU"5      (       d  UR                  U"U5        OS nUUR*                  Rd                  U'   OUR*                  Rd                  Rg                  5       n#U  H  nUR<                  U;  d  M  UR<                  URX                  ;  d  M1  UR<                  U;  d  MC  [f        Rh                  " U5      n$UR                  UR<                  U$5        URj                  (       d  M  U#R                  5        H  u  nn%UU%:X  d  M  U$U#U'   M     M     UR*                  Rd                  RW                  U#5        UR*                  R:                   H  nUR<                  U;   aI  UR*                  R$                  (       d,  [[        SUR<                  < SU< SUR\                  < S	35      eM\  [f        Rh                  " U5      nUR*                  R$                  (       d  SUl6        UR                  UR<                  U5        M     GMr     UR*                  Rn                   V&s/ s H  n&[f        Rh                  " U&5      PM     sn&UR*                  l7        U(       a  SUl        Xl8        U$ URs                  5         UR*                  R                  Ru                  UR*                  Rv                  U5        U$ s  snf s  snf s  snf s  sn&f )!NrF   __classcell__MetaabstractF_meta	app_labelzModel class rK   zU doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.DoesNotExistc              3      #    U  HA  n[        US 5      (       d  M  UR                  R                  (       a  M3  UR                  v   MC     g7fr`   N)rV   r`   r_   rb   .0xs     r=   	<genexpr>$ModelBase.__new__.<locals>.<genexpr>   s9      !(A"1g. '78ww7G7G '!(   AAA)rP   r   c              3      #    U  HA  n[        US 5      (       d  M  UR                  R                  (       a  M3  UR                  v   MC     g7frd   )rV   r`   r_   r   re   s     r=   rh   ri      s;      !(A"1g. 278ww7G7G 211!(rj   orderingget_latest_byz! cannot proxy the swapped model ''.zOAbstract base class containing model fields not permitted for proxy model '%s'.zAProxy model '%s' has more than one non-abstract model base class.z6Proxy model '%s' has no non-abstract model base class.zLocal field z
 in class z5 clashes with field of the same name from base class z%s_ptrT)	on_deleterM   auto_createdparent_linkzAuto-generated field 'z' in class z for parent_link to base class z. clashes with declared field of the same name.)<super__new__
isinstancerZ   popitemsrX   getattrr   get_containing_app_configRuntimeErrorlabeladd_to_classr%   rQ   tupler   r   r_   rV   rl   r`   rm   proxyswapped	TypeErrorr   local_fieldslocal_many_to_manyprivate_fieldsrM   fieldsconcrete_modelsetup_proxyreversedr    remote_fieldrq   r"   modelr.   setmroupdate__dict__r   rE   add
model_namer   parentscopydeepcopy
one_to_onemti_inheritedindexesr^   _prepareregister_modelra   )(clsrM   rN   attrskwargs	super_newbr   rO   	new_attrs	classcell	attr_metacontributable_attrsobj_nameobj	new_classr_   meta	base_metara   
app_configis_proxy
new_fieldsffield_namesbaseklsparentparent_linksfieldrelatedinherited_attributesparent_fieldsbase_key	attr_namebase_parents	new_fieldrq   idx	__class__s(                                          r=   rs   ModelBase.__new___   s   GO	 $@ez!Y'?1e@S55 <(!6*	IIot4	 )2o&IIfd+	 !"[[]MH',,03H-&)(#	 +
 cDVD	9j%8<GIvt<Iw5		 33F;
4d+3!& .4T;    ',,	wi(@A"""" !(  -
 +, )
 "")"- !(  2
 01 )
 !3!3 tZ00/8/A/AIOO,t_554=4K4KIOO1??(( 	i&7&7=A9CTCTU  1668MH""81 9 OO((OO..OO**


 (22z!qvvz2 D*1K'3WS'5J3'K<<((||**'>@DE 
 !<!D\\00

8Q8QQ#!#'(  L  |LtS  OO''--1ZZ-F-FIOO*-6OO* i[723D4))y )<)<00e]338J8J8V8V8V.y%:L:L:R:RSG>CL!1'!:; 1 4  #uMMOD7"'$*@*@ %++DMM: JJ33djj6S6SSM::&&& +Ezz[0( !&

 $ $  -00< + zz00+D1|+(2E! (4::+@+@ @I)")&%)$(E !K/(
 !* $ $	 	 #9i88!..y%@ E05	''-#zz11668 +E

+5!JJi.@.@@!JJ.BB$(MM%$8	!..uzz9E !+++7C7I7I7K 3#(K#7;DL$8 8L +  ''..|< 22::,::..( !&

 $ $  / !MM%0E::...2+**5::u=! 3g $P +4//*A*A#
*A3DMM#*A#
	  "'I&N++IOO,E,EyQW AL 3
 Ld#
s"   eee;ee e$c                 `    [        U5      (       a  UR                  X5        g [        XU5        g N)rX   rS   setattr)r   rM   rW   s      r=   r{   ModelBase.add_to_classq  s%    #E**%%c0Cu%rA   c                    U R                   nUR                  U 5        UR                  (       a  [        U R                  SS9U l        [        U R                  SS9U l        UR                  R                  (       a2  UR                  nUR                  R                  n[        [        X5        U R                  c9  U R                  < SSR                  S UR                   5       5      < S3U l        [        R                   R#                  UR$                  5      nU(       a  ['        U S	U5        UR(                  (       d\  [+        S
 UR                   5       5      (       a  [-        SU R                  -  5      e[/        5       nSUl        U R3                  SU5        U R                   R4                   H'  nUR6                  (       a  M  UR9                  U 5        M)     [:        R<                  " U S9  g)z7Create some methods once self._meta has been populated.T)is_nextFN(, c              3   8   #    U  H  oR                   v   M     g 7fr   rM   rf   r   s     r=   rh   %ModelBase._prepare.<locals>.<genexpr>  s     6+Q&&+   )get_absolute_urlc              3   >   #    U  H  oR                   S :H  v   M     g7f)objectsNr   r   s     r=   rh   r     s     <166Y&s   zOModel %s must specify a custom Manager, because it has a field named 'objects'.r   )sender)r`   r   order_with_respect_tor   _get_next_or_previous_in_orderget_next_in_orderget_previous_in_orderr   r   r!   make_foreign_order_accessors__doc__rE   joinr   r   ABSOLUTE_URL_OVERRIDESgetlabel_lowerr   managersany
ValueErrorr$   rp   r{   r   rM   set_name_with_modelr(   send)r   optswrtremoteget_absolute_url_overridemanagerindexs          r=   r   ModelBase._preparew  s   yyc%%$122D%C! )622E)C% ))6600))//&'CSQ ;;		6$++66CK
 %-$C$C$G$G%
! %C+-FG}}<<<< -/2||<  iG#'G Y0
 YY&&E:::))#. ' 	3'rA   c                 .    U R                   R                  $ r   )r`   base_managerr   s    r=   _base_managerModelBase._base_manager  s    yy%%%rA   c                 .    U R                   R                  $ r   )r`   default_managerr   s    r=   _default_managerModelBase._default_manager  s    yy(((rA   r:   )rE   rF   rG   rH   r   rs   r{   r   propertyr   r   rI   r]   r   s   @r=   rZ   rZ   \   s@    #Pd&5(n & & ) )rA   rZ   c                       \ rS rSrSS jrSrg)ModelStateFieldsCacheDescriptori  Nc                      Uc  U $ 0 =o1l         U$ r   )fields_cache)r<   instancer   ress       r=   __get__'ModelStateFieldsCacheDescriptor.__get__  s    K&((#
rA   r:   r   )rE   rF   rG   rH   r   rI   r:   rA   r=   r   r     s    rA   r   c                   .    \ rS rSrSrSrSr\" 5       rSr	g)
ModelStatei  zStore model instance state.NTr:   )
rE   rF   rG   rH   r   dbaddingr   r   rI   r:   rA   r=   r   r     s    %	B
 F24LrA   r   c                   P  ^  \ rS rSrU 4S jr\S 5       rS rS rS r	S r
S rS	 rS
 rSGS jrS r\" \\5      rS rSHS jrSHS jrS rS rSSSSS.S jrS\l        SSSSS.S jrS\l        \S 5       r     SIS jrS\l         SGS jr      SJS jrS rS rSGS jr SKS jr!S\!l        SKS  jr"S\"l        S! r#S" r$S# r%SGS$ jr&S% r'S& r(SGS' jr)SKS( jr*S) r+S* r,S+ r-S, r.S- r/SGS. jr0SLS/ jr1SGS0 jr2\S1 5       r3\S2 5       r4\S3 5       r5\S4 5       r6\S5 5       r7\S6 5       r8\S7 5       r9\S8 5       r:\S9 5       r;\S: 5       r<\S; 5       r=\S< 5       r>\S= 5       r?\S> 5       r@\S? 5       rA\S@ 5       rB\SA 5       rC\SB 5       rD\SC 5       rE\SD 5       rF\SE 5       rGSFrHU =rI$ )MModeli  c                 :  > U R                   nU R                  n[        n[        nUR                  (       a  [        S5      e[        R                  " X1US9  [        5       U l	        [        U5      [        UR                  5      :  a  [        S5      eU(       dC  [        UR                  5      n[        X5       H  u  pXL a  M  U" X	R                  U5        M      O[        UR                   5      n[        X5       Hj  u  pXL a  M  U" X	R                  U5        UR#                  U	R$                  [&        5      [&        Ld  MG  [        UR(                   SU	R$                   S35      e   U H  n	Sn
U	R                  U;  a  U	R*                  b  U	R,                  (       a  M5  U(       a[  [/        U	R0                  [2        5      (       a   UR#                  U	R$                  5      nSn
O- UR#                  U	R                  5      nOU	R7                  5       nU
(       a  WULa  U" X	R$                  U5        M  M  WULd  M  U" X	R                  U5        M     U(       a  UR8                  nSnUR;                  5        H<  u  pX;   a  XLa  U" XU5        M  M   UR=                  U5        XLa  U" XU5        M<  M>     U(       a2  S	RA                  S
 U 5       5      n[        URB                   SU 35      e[D        TU ]  5         [H        R                  " X0S9  g ! [4         aB     UR#                  U	R                  5      n GN+! [4         a    U	R7                  5       n  GNIf = ff = f! [4         a    U	R7                  5       n GNnf = f! [>         a
    X4-  n GM  f = f)Nz'Abstract models cannot be instantiated.)r   argsr   z'Number of args exceeds number of fieldsz8() got both positional and keyword arguments for field 'rn   FTr:   r   c              3   8   #    U  H  n[        U5      v   M     g 7fr   )repr)rf   ns     r=   rh   !Model.__init__.<locals>.<genexpr>6  s     ,IjT!WWjr   z%() got unexpected keyword arguments: )r   r   )%r   r`   r   DEFERREDr_   r   r+   r   r   _statelenconcrete_fields
IndexErroriterzipattnamer   ru   rM   r   rG   column	generatedrt   r   r   KeyErrorget_default_property_namesrv   	get_fieldr
   r   rE   rr   __init__r)   )r<   r   r   r   r   _setattr	_DEFERREDfields_itervalr   is_related_objectrel_objproperty_names
unexpectedproprW   unexpected_namesr   s                    r=   r  Model.__init__  s4   nnzz	==EFFSF; !l t9s4//00FGGt334K
 "$4
#}}c2 5 t{{+K!$4
#}}c2::ejj,7|K#++, -88=

|2G  5 !E %}}F*u||/Cue002BCC	6"(**UZZ"8,0)2$jj7 '') 
 )+T::w7 , i'T==#6M !P !11NJ%||~ )- U3 .8t, !1$T7 2  . #'99,Ij,I#I ||n$I'(*  	c1k $ 66"(**U]]";C' 6"'"3"3"5C6	6 $ 2
 $//12@ - ."g-
.sN   	L(M%N
M"!L??MM"MM"%NNNNc                 T   [        U5      [        U R                  R                  5      :w  aP  [        U5      nU R                  R                   Vs/ s H$  nUR                  U;   a  [        U5      O[        PM&     nnU " U6 nSUR                  l        XR                  l	        U$ s  snf NF)
r  r`   r  r  r  nextr   r  r   r   )r   r   r   valuesvalues_iterr   news          r=   from_dbModel.from_db>  s    v;#cii7788v,K 222A &'YY+%=[!8K2   6l!




s   +B%c                 @    SU R                   R                  < SU < S3$ )N<z: >)r   rE   r;   s    r=   r>   Model.__repr__K  s    !^^44d;;rA   c                 R    U R                   R                  < SU R                  < S3$ )Nz	 object (r   )r   rE   pkr;   s    r=   rC   Model.__str__N  s    #'>>#:#:DGGDDrA   c                     [        U[        5      (       d  [        $ U R                  R                  UR                  R                  :w  a  gU R
                  nUc  XL $ X!R
                  :H  $ r  )rt   r   NotImplementedr`   r   r'  )r<   othermy_pks      r=   __eq__Model.__eq__Q  sW    %''!!::$$(B(BB==   rA   c                 \    U R                   c  [        S5      e[        U R                   5      $ )Nz8Model instances without primary key value are unhashable)r'  r   hashr;   s    r=   __hash__Model.__hash__[  s%    77?VWWDGG}rA   c                     U R                  5       n[        R                  U[        '   U R                  R
                  U R                  R                  4n[        U4U4$ r   )__getstate__django__version__r   r`   ra   object_namemodel_unpickle)r<   dataclass_ids      r=   
__reduce__Model.__reduce__`  sN      "*0*<*<&'::'')?)??{D00rA   c                    U R                   R                  5       n[        R                  " US   5      US'   US   R                  R                  5       US   l        / nUR                  5        H8  u  p4[	        U[
        5      (       d  M  UR                  U[        U5      45        M:     U(       a   X!S'   U H  u  p4UR                  U5        M     U$ )z0Hook to allow choosing the attributes to pickle.r  _memoryview_attrs)	r   r   r   rv   rt   
memoryviewappendbytesru   )r<   stater>  attrrW   s        r=   r4  Model.__getstate__f  s    ""$))E(O4h',X'C'C'H'H'Jh$  ;;=KD%,,!(($e)=> ) ):%&0		$  1rA   c                    UR                  [        5      nU(       aF  U[        R                  :w  a1  [        R
                  " SU< S[        R                  < S3[        SS9  O[        R
                  " S[        SS9  SU;   a'  UR                  S5       H  u  p4[        U5      X'   M     U R                  R                  U5        g )Nz(Pickled model instance's Django version z$ does not match the current version rK      
stacklevelz9Pickled model instance's Django version is not specified.r>  )r   r   r5  r6  warningswarnRuntimeWarningru   r?  r   r   )r<   rB  pickled_versionrC  rW   s        r=   __setstate__Model.__setstate__w  s    ))$=>&"4"44 '(:(:< #  MMK
 %'$yy)<=(/  >U#rA   Nc                 j    U=(       d    U R                   n[        XR                  R                  5      $ r   )r`   rw   r'  r  )r<   r   s     r=   _get_pk_valModel._get_pk_val  s#    !tzztWW__--rA   c                 4   U R                   R                  R                  5        HG  nU(       d  M  X R                   R                  :w  d  M'  [	        XR
                  R                  U5        MI     [	        X R                   R                  R                  U5      $ r   )r`   r   r  r'  r   target_fieldr  )r<   rW   rq   s      r=   _set_pk_valModel._set_pk_val  sd    ::--446K{{jjmm;66>>F 7 tZZ]]22E::rA   c                     U R                   R                   Vs1 s H+  nUR                  U R                  ;  d  M  UR                  iM-     sn$ s  snf )zE
Return a set containing names of deferred fields for this instance.
)r`   r  r  r   )r<   r   s     r=   get_deferred_fieldsModel.get_deferred_fields  sI     ZZ//
/yy- AII/
 	
 
s
   AAc           	      p   Uc  0 U l         Oz[        U SS5      n[        U5      nUR                  5        H  nXT;   d  M
  XE	 UR	                  U5        M     U(       d  g[        S U 5       5      (       a  [        S[        -  5      eUc(  SU 0nU R                  R                  R                  XS9nOUb  UR                  U5      nUR                  U R                  S9nU R                  5       nUb  UR                  " U6 nOWU(       aP  UR                  " U R                   R"                   V	s1 s H!  n	U	R$                  U;  d  M  U	R$                  iM#     sn	6 nUR'                  5       n
U
R                  5       nU R                   R"                   H  nUR$                  U;   a  M  [)        XR$                  [        XR$                  5      5        UR*                  (       d  MQ  UR-                  U
5      (       a"  UR/                  XR1                  U
5      5        M  UR-                  U 5      (       d  M  UR3                  U 5        M     U R                   R4                   HA  nUb  UR6                  U;   d  M  UR-                  U 5      (       d  M0  UR3                  U 5        MC     U R                   R8                   HT  nUb  UR6                  U;   d  M  UR*                  (       d  M+  UR-                  U 5      (       d  MC  UR3                  U 5        MV     U
R:                  R<                  U R:                  l        gs  sn	f )	a  
Reload field values from the database.

By default, the reloading happens from the database this instance was
loaded from, or by the read router if this instance wasn't loaded from
any database. The using parameter will override the default.

Fields can be used to specify which fields to reload. The fields
should be an iterable of field attnames. If fields is None, then
all non-deferred fields are reloaded.

When accessing deferred fields of an instance, the deferred loading
of the field will call this method.
N_prefetched_objects_cacher:   c              3   4   #    U  H  n[         U;   v   M     g 7fr   r   r   s     r=   rh   (Model.refresh_from_db.<locals>.<genexpr>  s     3Fq:?Fs   zRFound "%s" in fields argument. Relations and transforms are not allowed in fields.r   )hintsr'  )rZ  rw   r   r   remover   r   r   r   r   
db_managerusingfilterr'  rW  onlyr`   r  r  r   r   is_relation	is_cachedset_cached_valueget_cached_valuedelete_cached_valuerelated_objectsrM   r   r  r   )r<   ra  r   from_querysetprefetched_objects_cacher   r]  db_instance_qsdeferred_fieldsr   db_instancenon_loaded_fieldsrels                r=   refresh_from_dbModel.refresh_from_db  s    >-/D*'.t5PRT'U$[F407MM%( ' 3F333 13=> 
  &E NN88CCECWM)//6M&---9 224+00&9N+00 "ZZ777yy7 AII7N %((*';;=ZZ//E}} 11D--mm)LM   ??;//**41G1G1TU__T**--d3 0 ::--C#((f"4#--:M:M''- .
 ZZ..E5::#7%%%OOD))))$/ / %++..Gs   ,L3L3c                 R   #    [        U R                  5      " XUS9I S h  vN $  N7f)N)ra  r   rj  )r   rq  )r<   ra  r   rj  s       r=   arefresh_from_dbModel.arefresh_from_db  s,     "4#7#78m
 
 	
 
   '%'c                      U R                   R                  U5      n[        XR                  5      $ ! [         a    [        X5      s $ f = f)a  
Return the value of the field name for this instance. If the field is
a foreign key, return the id value instead of the object. If there's
no Field object with this name on the model, return the model
attribute's value.

Used to serialize a field's value (in the serializer, or form output,
for example). Normally, you would just access the attribute directly
and not use this method.
)r`   r  r
   rw   r  )r<   
field_namer   s      r=   serializable_valueModel.serializable_value  sH    	-JJ((4E t]]++ ! 	-4,,	-s   2 A
	A
c          
      P  ^^^
 SSS S S.m
[         R                  " ST S3[        SS9  [        T5      S-   n[        T
5      S-   nXE:  a  [	        ST S	U S
U S35      eUU
U4S jn[        UR                  5       5       VVV	s/ s H  u  nu  pU" XU5      PM     sn	nn$ s  sn	nnf )NFforce_insertforce_updatera  update_fieldsz Passing positional arguments to z() is deprecated   rG     Model.z() takes from 1 to z positional arguments but z were givenc                 d   > U[        T5      :  a  UTU    La  [        ST SU  S35      eTU   $ U$ )Nr  z%() got multiple values for argument '')r  r   )
param_nameparam_value	arg_indexr   defaultsmethod_names      r=   	get_param&Model._parse_params.<locals>.get_param#  sS    3t9$hz&::#  .&<q*  I&rA   )rI  rJ  r/   r  r   	enumeraterv   )r<   r  r   r   total_len_argsmax_len_argsr  ikvr  s    ``       @r=   _parse_paramsModel._parse_params  s    !!!	
 	.{m;KL$	

 TQ8}q((%8 G!!/ 0= 

	 5>flln4MN4Myq&1	!"4MNNNs   B!Fr|  c          	         U(       a  U R                   " USUUUUS.6u  pp4U R                  SS9  U=(       d    [        R                  " U R                  U S9nU(       a  U(       d  U(       a  [        S5      eU R                  R                   Vs1 s H<  nUR                  U R                  ;  d  M  UR                  SL d  M0  UR                  iM>     nnUb_  U(       d  g[        U5      nU R                  R                  nUR                  U5      n	U	(       a  [        SS	R                  U	5      -  5      eOU(       d  U(       a  X0R                  R                   :X  a  [#        5       nU R                  R                   HD  n
U
R$                  (       a  M  ['        U
S
5      (       a  M)  UR)                  U
R                  5        MF     UR                  U5      nU(       a  [        U5      nU R+                  UUUUS9  gs  snf )a1  
Save the current instance. Override this in a subclass if you want to
control the saving process.

The 'force_insert' and 'force_update' parameters can be used to insist
that the "save" must be an SQL insert or update (or equivalent for
non-SQL backends), respectively. Normally, they should not be set.
saver  r}  r~  ra  r  )operation_namer   z6Cannot force both insert and updating in model saving.FNz_The following fields do not exist in this model, are m2m fields, or are non-concrete fields: %sr   through)ra  r}  r~  r  )r   _prepare_related_fields_for_saver   db_for_writer   r   r`   r  r  r   r	  	frozenset_non_pk_concrete_field_names
differencer   r  r   r   primary_keyrV   r   	save_base)r<   r}  r~  ra  r  r   r   deferred_non_generated_fieldsr   non_model_fieldsr   loaded_fieldss               r=   r  
Model.save5  s   " ?C?Q?Q"))+@<L 	--V-DK,,T^^dK\]UVV ZZ//)
/yy- 23++2F AII/ 	& )

 $ !%m4M**AAK,77D =ii 012    -'%K33(((	1J1JOOEMM2 4 (223PQM )- 8%%'	 	 	
M)
s   G<2G<G<Tc          	         #    U(       a  U R                   " USUUUUS.6u  pp4[        U R                  5      " UUUUS9I S h  vN $  N7f)Nasaver  r|  )r  r   r  )r<   r}  r~  ra  r  r   s         r=   r  Model.asave  s`      ?C?Q?Q#))+@<L #499-%%'	
 
 	
 
s   A A	AA	c                 *   USL a  gUSL a  U 4$ [        U[        5      (       d  [        S5      eU H^  n[        U[        5      (       d  [        SU< S35      e[	        X5      (       a  M:  [        SUR
                   SU R
                   S35      e   U$ )	NFr:   Tz%force_insert must be a bool or tuple.zInvalid force_insert member. z must be a model subclass.z must be a base of rK   )rt   r|   r   rZ   
issubclassrG   )r   r}  members      r=   _validate_force_insertModel._validate_force_insert  s    5 46M,..CDD"Ffi003F:=WX  c**3F4G4G3H I"//03  # rA   c           	      f   U=(       d    [         R                  " U R                  U S9nU(       a  U(       d  U(       a   eUb	  U(       d   eU R                  =pgUR                  R                  (       a  UR                  R
                  nUR                  nUR                  (       d  [        R                  " UU UUUS9  UR                  (       a  [        R                  " USS9n	O[        R                  " US9n	U	   Sn
U(       d#  U R                  U5      nU R                  XdXR5      n
U R                  UUU=(       d    U
UUU5      nSSS5        X@R                   l        SU R                   l        UR                  (       d  [&        R                  " UU W(       + UUUS9  gg! , (       d  f       N`= f)a>  
Handle the parts of saving which should be done only once per save,
yet need to be done in raw saves, too. This includes some sanity
checks and signal sending.

The 'raw' argument is telling save_base not to save any parent
models and not to do any changes to the values before save. This
is used by fixture loading.
r  N)r   r   rawra  r  F)ra  	savepoint)ra  )r   r   createdr  r  ra  )r   r  r   r`   r}   r   rp   r,   r   r   r   atomicmark_for_rollback_on_errorr  _save_parents_save_tabler  r   r   r*   )r<   r  r}  r~  ra  r  r   originr   context_managerparent_insertedupdateds               r=   r  Model.save_base  se   " K,,T^^dK lmEE$55~~%99??))**Cyy  MM+ <<)00uNO)DD5QO#O#::<H"&"4"4# &&/G " "   NN$+ !- _s   <AF""
F0c           
         UR                   nSnUc  0 nUR                  R                  5        GHN  u  pU	(       a}  [        XR                   R                  R
                  5      cS  [        X	R
                  5      b=  [        XR                   R                  R
                  [        X	R
                  5      5        UR                  U5      =n
cE  U R                  UUUUUS9nU R                  UUUU=(       d    [        X5      S9nU(       d  SnXU'   O	U
(       d  SnU	(       d  M  [        X	R
                  U R                  UR                   5      5        U	R                  U 5      (       d  GM=  U	R                  U 5        GMQ     U$ )z3Save all the parents of cls using values from self.F)r   ra  r  r}  updated_parents)r   ra  r  r}  T)r`   r   rv   rw   r'  r  r   r   r  r  r  rP  re  rh  )r<   r   ra  r  r}  r  r   insertedr   r   parent_updatedr  r  s                r=   r  Model._save_parents   sO    yy" O!\\//1MF D,,//"9"9:BD--0<lloo55wt]]7ST"1"5"5f"==F"&"4"4"/!-$3 #5 # **"/!0!TJv4T	 +  #H*1'#ummT-=-=fll-KL ??4((--d3I 2J rA   c           
         UR                   nUR                   Vs/ s H+  nUR                  (       a  M  UR                  (       a  M)  UPM-     n	nU(       a4  U	 Vs/ s H'  nUR                  U;   d  UR
                  U;   d  M%  UPM)     n	nU R                  U5      n
U
c;  UR                  R                  U 5      n
[        XR                  R
                  U
5        U
SLnU(       d  U(       d  U(       a  [        S5      eSnU(       d  U(       d  U(       d  U R                  R                  (       ar  UR                  R                  (       a  UR                  R                  [        Ld8  UR                  R                  (       a  UR                  R                  [        La  SnU(       a  U(       d  UR                   R#                  U5      nU	 Vs/ s H4  nUSU(       a  [%        XR
                  5      OUR'                  U S5      4PM6     nnU=(       d    UnU R)                  XXXo5      nU(       a  U(       d  [+        S5      eU(       a  U(       d  [+        S5      eU(       GdN  UR,                  (       a  UR,                  nUR/                  U 5      nUR                   R#                  U5      R0                  " S0 UD6R3                  [5        [7        [9        S5      [;        S5      -   [=        5       S	9[;        S
5      5      S9S   U l        UR                   Vs/ s H/  nUR                  (       a  M  U(       d  XR@                  Ld  M-  UPM1     nnURB                  nU RE                  UR                   UUUU5      nU(       a0  [G        US
   U5       H  u  nn[        U UR
                  U5        M     U$ s  snf s  snf s  snf s  snf )zX
Do the heavy-lifting involved in saving. Update or insert the data
for a single table.
Nz5Cannot force an update in save() with no primary key.FTz&Forced update did not affect any rows.z0Save with update_fields did not affect any rows._orderr  )output_fieldr   )_order__maxr  r:   )$r`   local_concrete_fieldsr  r	  rM   r  rP  r'  get_pk_value_on_saver   r   r  r   defaultr   
db_defaultr   ra  rw   r,   
_do_updater   r   get_filter_kwargs_for_objectrb  	aggregater#   r   r   r   r   r  
auto_fielddb_returning_fields
_do_insertr  )r<   r  r   r}  r~  ra  r  r   r   non_pks_non_generatedpk_valpk_setr  base_qsr  forced_updater   filter_argsr   returning_fieldsresultsrW   s                         r=   r  Model._save_table/  s?    yy //!
/== )* / 	 !
  /%.A66]*aii=.H . " % !!$'>WW11$7FD''//62t#<=TUU   ""TWW__L%HGG&&477+=+=\+Q  L,''--e4G / /A	 14WT99-!**T5:Q
 /   *9\MooG G#$LMMW#$VWW)) 22#@@F%%++E2V +)+Y$,- #Ha 8|~ "!H	%   $	%  333A{{ (.!??2J 3  
  $77oo!!5&2BCG $'
4D$ELE5D%--7 %Fe!
%:Ds4   N3N3N3$N8N8;N=O0OOc                 T   UR                  US9nU(       d  USL=(       d    UR                  5       $ U R                  R                  (       aI  U(       dB  UR                  5       =(       a+    UR	                  U5      S:  =(       d    UR                  5       $ UR	                  U5      S:  $ )z
Try to update the model. Return True if the model was updated (if an
update query was done and a matching row was found in the DB).
r^  Nr   )rb  existsr`   select_on_save_update)r<   r  ra  r  r  r  r  filtereds           r=   r  Model._do_update  s    
 >>V>, !,A0AA::$$]! 	D !!&)A-B1B '!++rA   c                 *    UR                  U /UUUUS9$ )zs
Do an INSERT. If returning_fields is defined then this method should
return the newly created data for the model.
)r   r  ra  r  )_insert)r<   r   ra  r   r  r  s         r=   r  Model._do_insert  s+    
 F-  
 	
rA   c                    U R                   R                   GH?  nU(       a  X2;  a  M  UR                  (       d  M%  UR                  U 5      (       d  M=  [	        XR
                  S 5      nU(       d  M\  UR                  cS  UR                  R                  (       d  UR                  R                  U5        [        U< SUR
                  < S35      e[	        XR                  5      UR                  ;   a  [        XR
                  U5        [	        XCR                  R                  5      [	        XR                  5      :w  d  GM.  UR                  U 5        GMB     U R                   R                   H  nU(       a  X2;  a  M  UR                  (       d  M$  UR                  U 5      (       d  M<  [!        US5      (       d  MO  UR#                  U S S9nU(       d  Mh  UR                  b  Mw  [        U SUR
                   S35      e   g )NzB() prohibited to prevent data loss due to unsaved related object 'rn   fk_field)r  )r`   r  rd  re  rw   rM   r'  r   multiplerh  r   r  empty_valuesr   rS  r   rV   rg  )r<   r  r   r   r   s        r=   r  &Model._prepare_related_fields_for_save  s   
 ZZ//E%-    U__T%:%:dJJ5 66> --66**>>sC$2@%**N  T==1U5G5GG D**c2 3 2 2 : :;w--@  --d3A 0D ZZ..E%-!!!OOD))E:..,,T4,@3366>$)* +338::,bB  /rA   c                 J   U R                   cE  [        U R                  R                  < SU R                  R                   R                  < S35      eU=(       d    [
        R                  " U R                  U S9n[        XS9nUR                  U /US9  UR                  5       $ )Nz% object can't be deleted because its z attribute is set to None.r  )ra  r  )keep_parents)r'  r   r`   r7  r  r   r  r   r   collectdelete)r<   ra  r  	collectors       r=   r  Model.delete  s    77?"jj44djjmm6K6KM  K,,T^^dKE7	4&|<!!rA   c                 R   #    [        U R                  5      " UUS9I S h  vN $  N7f)N)ra  r  )r   r  )r<   ra  r  s      r=   adeleteModel.adelete  s+     "4;;/%
 
 	
 
rv  c                     [        XR                  5      n[        [        UR                  5      5      n[        UR                  [        U5      U5      SS9$ )NT)strings_only)rw   r  dictr1   flatchoicesr0   r   )r<   r   rW   choices_dicts       r=   _get_FIELD_displayModel._get_FIELD_display  sI    mm,M%*;*;<=]5159
 	
rA   c                    U R                   (       d  [        S5      eU(       a  SOSnU(       a  SOSn[        XR                  5      n[        R
                  " UR                  U4SU 3U R                   4/[        R                  S9n[        R
                  " XqR                   SU 3U4/[        R                  S9nU R                  R                  R                  U R                  R                  5      R                  " S0 UD6R                  U5      R                  U< UR                  < 3S	U-  5      n US
   $ ! [          a3    U R#                  SU R                  R$                  R&                  -  5      ef = f)Nz8get_next/get_previous cannot be used on unsaved objects.gtlt -pk__)	connector__z%spkr   z!%s matching query does not exist.r:   )r'  r   rw   r  r'   createrM   ANDORr   r   ra  r  r   rb  order_byr  rb   r`   r7  )	r<   r   r   r   oporderparamqqss	            r=   _get_next_or_previous_by_FIELD$Model._get_next_or_previous_by_FIELD  s7   wwWXXT$3mm,HHuzz5)d2$K+ABaeeTHHaZZL2$/78ADDINN++11$++..AV VAYXuzz2FUNC	 		a5L 	##3dnn6J6J6V6VV 	s   9D> >=E;c                 F   SU-  n[        X5      (       Gd  U(       a  SOSnU(       a  SOSnU R                  R                  nUR                  U 5      nU R                  R
                  R                  " S0 UD6R                  " S0 SU-  U R                  R
                  R                  S5      R                  " S0 U R                  R                  R                  U R                  0D60D6R                  U5      S S R                  5       n[        XU5        [        X5      $ )	Nz__%s_order_cacher  r  r  z-_orderz
_order__%sr  r:   )rV   r`   r   r  r   r   rb  r  r'  rM   r  r   r   rw   )r<   r   	cachenamer   r  order_fieldr  r   s           r=   r   $Model._get_next_or_previous_in_order"  s   &0	t'' dB 'HYE**::K%BB4HK//66EE  %"nn==DDXNUU #zz}}11477; %!	%   DS)t''rA   c                    Uc
  [        5       nU=(       d    U R                  nUR                   Vs0 s Hm  nUR                  U;  d  M  UR                  (       a  M(  UR                  [        XR                  5      =n(       a  [        US5      (       a  UO
[        XC5      _Mo     nnSU;  a#  [        U R                  UR                  5      US'   U$ s  snf )Nresolve_expressionr'  )
r   r`   r  rM   r	  rw   r  rV   r   r'  )r<   r   excluder   rW   	field_maps         r=   _get_field_expression_mapModel._get_field_expression_map9  s    ?eG!tzz 33	
 4zz() 27)EJJ$T==99E9E#788  5(	) 4 	 	
 w#DGGTWW5IdO	
s   C	CA	Cc                     U R                   c  [        SU -  5      e[        XR                  R	                  5       R
                  5      $ )Nz9Unsaved model instance %r cannot be used in an ORM query.)r'  r   rw   r   get_related_fieldr  )r<   r   s     r=   prepare_database_saveModel.prepare_database_saveK  sB    77?KdR  t//AACKKLLrA   c                     g)a!  
Hook for doing any extra model-wide validation after clean() has been
called on every field by self.clean_fields. Any ValidationError raised
by this method will not be associated with a particular field; it will
have a special-case association with the field defined by NON_FIELD_ERRORS.
Nr:   r;   s    r=   cleanModel.cleanR  s     	rA   c                    U R                  US9u  p#U R                  U5      nU R                  U5      nUR                  5        H&  u  pgUR	                  U/ 5      R                  U5        M(     U(       a  [        U5      eg)zP
Check unique constraints on the model and raise ValidationError if any
failed.
r  N)_get_unique_checks_perform_unique_checks_perform_date_checksrv   
setdefaultextendr   )r<   r  unique_checksdate_checkserrorsdate_errorsr  r  s           r=   validate_uniqueModel.validate_unique[  s    
 &*%<%<W%<%M",,];//<%%'DAa$++A. ( !&)) rA   c                 f  ^ Tc
  [        5       m/ nU R                  U R                  R                  4/n/ nU(       a#  U R                  U R                  R                  4/nU R                  R
                   H  nUR                  R                  (       a&  UR                  XfR                  R                  45        U(       d  MM  UR                  R                  (       d  Mj  UR                  XfR                  R                  45        M     U HF  u  pxU H;  n	[        U4S jU	 5       5      (       a  M  UR                  U[        U	5      45        M=     MH     U(       aV  U HP  u  pzU
 HE  n[        U4S jUR                   5       5      (       a  M)  UR                  X{R                  45        MG     MR     / nU R                  U R                  R                  4/nU R                  R
                   H)  nUR                  XfR                  R                  45        M+     U GH  u  p~U GH  nUR                  nUT;   a  M  UR                  (       a  UR                  UU445        UR                  (       a/  UR                  T;  a  UR                  USUUR                  45        UR                  (       a/  UR                  T;  a  UR                  USUUR                  45        UR                  (       d  M  UR                  T;  d  M  UR                  USUUR                  45        GM     GM     X<4$ )aK  
Return a list of checks to perform. Since validate_unique() could be
called from a ModelForm, some fields may have been excluded; we can't
perform a unique check on a model that is missing fields involved
in that check. Fields that did not validate should also be excluded,
but they need to be passed in via the exclude argument.
c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r:   rf   rM   r  s     r=   rh   +Model._get_unique_checks.<locals>.<genexpr>  s     =ut7?u   c              3   ,   >#    U  H	  oT;   v   M     g 7fr   r:   r'  s     r=   rh   r(    s     M;L4w;Lr)  dateyearmonth)r   r   r`   unique_togethertotal_unique_constraintsall_parentsr@  r   r|   r   r   rM   uniqueunique_for_dateunique_for_yearunique_for_month)r<   r  include_meta_constraintsr  unique_togethersconstraintsparent_classmodel_classr.  checkmodel_constraints
constraintr   fields_with_classr   r   rM   s    `               r=   r  Model._get_unique_checksk  s    ?eG!^^TZZ-G-GHI# NNDJJ,O,OPQK JJ22L!!11 ''!#5#5#E#EF ('L,>,>,W,W,W""!#5#5#N#NO 3 -=(K(=u===!((+uU|)DE ) -= $2=."3JM:;L;LMMM%,,k;L;L-MN #4 3> 
 #nndjj.E.EFG JJ22L$$l4F4F4S4S%TU 3 $5Kvv7?88!((+w)?@$$):):')I&&VT1CTCT'UV$$):):')I&&VT1CTCT'UV%%%!*<*<G*K&&WdADVDV'WX  $5 ))rA   c                 &   0 nU GH  u  p40 nU H  nU R                   R                  U5      n[        XR                  5      nUb%  US:X  a!  [        R
                  R                  (       a  M]  UR                  (       a  U R                  R                  (       d  M  X[        U5      '   M     [        U5      [        U5      :w  a  M  UR                  R                  " S0 UD6n	U R                  UR                   5      n
U R                  R                  (       d  U
b  U	R                  U
S9n	U	R!                  5       (       d  GM<  [        U5      S:X  a  US   nO["        nUR%                  U/ 5      R'                  U R)                  X45      5        GM     U$ )Nr  r^  r  r   r:   )r`   r  rw   r  r   features!interprets_empty_strings_as_nullsr  r  r   strr  r   rb  rP  r  r  r	   r  r@  unique_error_message)r<   r  r!  r9  unique_checklookup_kwargsrx  r   lookup_valuer  model_class_pkkeys               r=   r  Model._perform_unique_checks  sM   )6%K M*
JJ((4&tYY7' B&"++MM ==););1=c*o. +  < C$66--44E}EB "--k.?.?@N;;%%.*DZZ>Z2yy{{|$)&q/C*C!!#r*11--kHQ *7X rA   c                 P   0 nU GH  u  p4pV0 n[        X5      nUc  M  US:X  a7  UR                  USU-  '   UR                  USU-  '   UR                  USU-  '   O[        X5      Xv< SU< 3'   [        X5      Xu'   UR                  R
                  " S0 UD6n	U R                  R                  (       d&  U R                  b  U	R                  U R                  S9n	U	R                  5       (       d  M  UR                  U/ 5      R                  U R                  XEU5      5        GM     U$ )Nr+  z%s__dayz	%s__monthz%s__yearr  r^  r:   )rw   dayr-  r,  r   rb  r  r   r'  r  r  r  r@  date_error_message)
r<   r   r!  r9  lookup_typer   
unique_forrE  r+  r  s
             r=   r  Model._perform_date_checks  s   ;F7KeM 4,D|f$8<i*45:>**kJ679=j:56FMG*kBC $+4#7M --44E}EB ;;%%$''*=ZZ477Z+yy{{!!%,33++K
K1 <G6 rA   c                    U R                   nUR                  U5      n[        UR                  S   SU [	        UR
                  5      UU[	        UR
                  5      U[	        UR                  U5      R
                  5      S.S9$ )Nr2  )r   r   rM  r   field_label
date_fielddate_field_labelmessagecodeparams)r`   r  r   error_messagesr2   verbose_name)r<   rM  rx  rN  r   r   s         r=   rL  Model.date_error_message  s|    zzz*(():;"&t'8'89*#'(:(:;($,T^^J-G-T-T$U
 	
rA   c                    UR                   nU U[        UR                  5      US.n[        U5      S:X  aD  UR	                  US   5      n[        UR                  5      US'   [        UR                  S   SUS9$ U Vs/ s H'  n[        UR	                  U5      R                  5      PM)     nn[        U[        S5      5      US'   [        [        S	5      S
US9$ s  snf )N)r   r9  r   rD  r  r   rQ  r1  rT  andfield_labelsz9%(model_name)s with this %(field_labels)s already exists.r.  )	r`   r2   rY  r  r  r   rX  r3   _)r<   r9  rD  r   rW  r   r   r]  s           r=   rC  Model.unique_error_message  s       &"4#4#45(	
 |!NN<?3E$,U-?-?$@F=!",,X6  COBNQ*778,   &3<5%JF>""UV& 	s   >.Cc                    U R                   U R                  R                  4/nU R                  R                   HF  nUR                  R                  (       d  M   UR	                  X"R                  R                  45        MH     U$ r   )r   r`   r7  r0  r@  )r<   r7  r8  s      r=   get_constraintsModel.get_constraints+  sh    

(>(>?@ JJ22L!!---""L2D2D2P2P#QR 3 rA   c           	         U R                  5       n[        R                  " U R                  U S9n0 nU H  u  pVU H  n UR	                  XPXS9  M     M!     U(       a  [        U5      eg ! [
         az  n[        USS 5      S:X  aM  [        UR                  5      S:X  a4  UR                  UR                  S   / 5      R                  U5         S nAM  UR                  U5      n S nAM  S nAff = f)Nr  )r  ra  rV  r1  r  r   )ra  r   r  r   validater   rw   r  r   r  r@  update_error_dict)	r<   r  r7  ra  r!  r9  r;  r<  es	            r=   validate_constraintsModel.validate_constraints2  s    **,##DNNTB.9*K/
	=''7'X 0 /: !&))  ' =640H<
 1 12a7))**;*;A*>CJJ1MM!"!4!4V!<=s   A**
C.4AC)C))C.c                    0 nUc  [        5       nO[        U5      n U R                  US9   U R	                  5         U(       a=  U H'  nU[
        :w  d  M  Xa;  d  M  UR                  U5        M)      U R                  US9  U(       a=  U H'  nU[
        :w  d  M  Xa;  d  M  UR                  U5        M)      U R                  US9  U(       a  [        U5      eg! [         a  nUR                  U5      n SnANSnAff = f! [         a  nUR                  U5      n SnANSnAff = f! [         a  nUR                  U5      n SnANSnAff = f! [         a  nUR                  U5      n SnANSnAff = f)z
Call clean_fields(), clean(), validate_unique(), and
validate_constraints() on the model. Raise a ValidationError for any
errors that occur.
Nr  )	r   clean_fieldsr   re  r  r	   r   r#  rg  )r<   r  r#  rg  r!  rf  rM   s          r=   
full_cleanModel.full_cleanF  sZ    ?eG'lG	1g.	1JJL
 ++0CKK% 5$$W$5
  ++0CKK% 5))'): !&)) =  	1((0F	1  	1((0F	1 # 5,,V45 # 5,,V45s^   C D  2D( 6E 
C="C88C= 
D%
D  D%(
E2EE
E5E00E5c           	         Uc
  [        5       n0 nU R                  R                   H  nUR                  U;   d  UR                  (       a  M&  [        XR                  5      nUR                  (       a  XCR                  ;   a  M]  [        U[        5      (       a  Mt   [        XR                  UR                  X@5      5        M     U(       a  [        U5      eg! [         a#  nUR                  X#R                  '    SnAM  SnAff = f)zg
Clean all fields and raise a ValidationError containing a dict
of all validation errors if any occur.
N)r   r`   r   rM   r	  rw   r  blankr  rt   r   r   r  r   
error_list)r<   r  r!  r   	raw_valuerf  s         r=   rj  Model.clean_fieldsu  s    
 ?eG""Avv AKK  ii0Iww96)_55.ii)AB #  !&))  # .!"vv.s   %C
D!C??Dc                 .   / U R                  5       QU R                  5       QU R                  " S0 UD6QnU R                  R                  (       GdD  UR                  S5      =(       d    / nU/ U R                  " S0 UD6QU R                  5       QU R                  U5      Q-  n/ U R                  5       QU R                  5       QU R                  5       QU R                  5       QU R                  5       Q7nUR                  U5        U(       d  UR                  U R                  5       5        U/ U R!                  5       QU R#                  U5      QU R%                  5       QU R'                  U5      QU R)                  5       QU R+                  U5      Q-  nU$ )N	databasesr:   )_check_swappable_check_model_check_managersr`   r~   r   _check_fields$_check_m2m_through_same_relationship_check_long_column_names_check_id_field_check_field_name_clashes#_check_model_name_db_lookup_clashes3_check_property_name_related_field_accessor_clashes_check_single_primary_keyr  _check_column_name_clashes_check_unique_together_check_indexes_check_ordering_check_constraints_check_default_pk_check_db_table_comment)r   r   r!  rs  clash_errorss        r=   r:  Model.check  s   
!!#

   *6*

 yy   

;/52I "",V,99; --i8 F
$$&..0 88: HHJ	
 ..0L MM,'  c<<>? ++-##I. $$& ''	2	
 &&( ,,Y7 F rA   c                    U R                   R                  (       Gd/  U R                   R                  R                  (       Ga	  [	        U R                   R                  [
        5      (       a/  U R                   R                  R                  R                  (       d  [        R                  " S5      (       d  U R                   R                  (       a{  U R                   R                  R                  (       dV  [        R                  " S[        R                   S3SU R                   R                  R                  R                    S3U SS9/$ / $ )NDEFAULT_AUTO_FIELDzPAuto-created primary key used when not defining a primary key type, by default 'rn   z0Configure the DEFAULT_AUTO_FIELD setting or the zh.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.zmodels.W042hintr   id)r`   r_   r'  rp   rt   r    r   rq   r   is_overriddenr   !_is_default_auto_field_overriddenr   Warningr  r   rG   r   s    r=   r  Model._check_default_pk  s     		"""		))) 399<<77IILL--99**+?@@		$$II((JJ  334B8 K99//99FFG HNO
 $  	rA   c           	      x   U R                   R                  (       d  / $ / nU H  n[        R                  " X05      (       d  M   [        U   nUR
                  R                  (       a  MF  SU R                   R                  ;   a  Mb  UR                  [        R                  " UR                   S3U SS95        M     U$ )Nsupports_commentsz8 does not support comments on tables (db_table_comment).zmodels.W046r   r  )r`   db_table_commentr   allow_migrate_modelr   r@  r  required_db_featuresr@  r   r  display_name)r   rs  r!  r   r   s        r=   r  Model._check_db_table_comment  s    yy))IB--b66$RJ##555&#))*H*HHNN%223 45 6(	   rA   c                 "   / nU R                   R                  (       a-   [        R                  " U R                   R                  5        U$ U$ ! [         a?    UR                  [        R                  " SU R                   R                  -  SS95         U$ [         ap    U R                   R                  R                  S5      u  p#UR                  [        R                  " SU R                   R                  < SU< SU< S3SS95         U$ f = f)	z"Check if the swapped model exists.z-'%s' is not of the form 'app_label.app_name'.zmodels.E001r  rK   r  z' references 'z0', which has not been installed, or is abstract.zmodels.E002)r`   r~   r   	get_modelr   r@  r   Error	swappableLookupErrorsplit)r   r!  ra   r   s       r=   rt  Model._check_swappable  s     99syy001& v%  LLG))--.("   	(+		(9(9(?(?(D%	LL 99..	:G )	 	s   *A ADA5DDc                    / nU R                   R                  (       ag  U R                   R                  (       d  U R                   R                  (       a1  UR	                  [
        R                  " SU R                  -  SS95        U$ )Nz'Proxy model '%s' contains model fields.zmodels.E017r  )r`   r}   r   r   r@  r   r  rE   r   r!  s     r=   ru  Model._check_model  sY    99??yy%%)E)ELLACLLP( rA   c                     / nU R                   R                   H$  nUR                  UR                  " S0 UD65        M&     U$ )zPerform all manager checks.r:   )r`   r   r  r:  )r   r   r!  r   s       r=   rv  Model._check_managers  s:     yy))GMM'--1&12 *rA   c                    / nU R                   R                   H$  nUR                  UR                  " S0 UD65        M&     U R                   R                   H&  nUR                  UR                  " SSU 0UD65        M(     U$ )zPerform all field checks.
from_modelr:   )r`   r   r  r:  r   )r   r   r!  r   s       r=   rw  Model._check_fields  sk     YY++EMM%++//0 ,YY11EMM%++???@ 2rA   c           	         / n/ nU R                   R                  nS U 5       nS U 5       nU H  nUR                  R                  U UR                  R                  UR                  R
                  4nXR;   aR  UR                  [        R                  " SUR                  R                  R                   R                  -  U SS95        M  UR                  U5        M     U$ )zBCheck if no relationship model is used by more than one m2m field.c              3   |   #    U  H2  n[        UR                  R                  [        5      (       d  M.  Uv   M4     g 7fr   )rt   r   r   rZ   r   s     r=   rh   =Model._check_m2m_through_same_relationship.<locals>.<genexpr>1  s%     SVz!..2F2F	'R!!V   -<	<c              3   |   #    U  H2  n[        UR                  R                  [        5      (       d  M.  Uv   M4     g 7fr   )rt   r   r  rZ   r   s     r=   rh   r  4  s%     UVz!..2H2H)'T!!Vr  zWThe model has two identical many-to-many relations through the intermediate model '%s'.zmodels.E003r  )
r`   r   r   r   r  through_fieldsr@  r   r  rz   )r   r!  seen_intermediary_signaturesr   r   	signatures         r=   rx  *Model._check_m2m_through_same_relationship'  s     ')$-- TVS VVUA$$&&--	I 8LL?..0066<<=  ( -33I>% & rA   c                 `   U R                   R                   Vs/ s H1  oR                  S:X  d  M  XR                   R                  :w  d  M/  UPM3     nnU(       aO  US   R                  (       d;  U R                   R                  R                  S:X  a  [
        R                  " SU SS9/$ / $ s  snf )z%Check if `id` field is a primary key.r  r   zP'id' can only be used as a field name if the field also sets 'primary_key=True'.zmodels.E004r  )r`   r   rM   r'  r  r   r  )r   r   r   s      r=   rz  Model._check_id_fieldK  s     yy--
-!4AADUA- 	 
 &)//CIILL4E4E4M/$	  I
s   B+B+B+c                    / n0 nU R                   R                   H  nUR                   R                   H  nUR                  UR                  5      =(       d$    UR                  UR
                  5      =(       d    SnU(       ar  UR                  [        R                  " SUR                  < SUR                  R                   < SUR                  < SUR                  R                   < S3	U SS95        XBUR                  '   XBUR
                  '   M     M     U R                   R                   H9  nUR                   R                  5        H  nXB;  d  M
  XBUR                  '   M     M;     U R                   R                  R                  5        H  nU(       d  M  UR                  UR                  5      =(       d    SnU(       d  M9  UR                  [        R                  " SUR                   SUR                   SUR                  R                    S3U S	S95        M     U R                   R                   GH  nUR                  UR                  5      =(       d$    UR                  UR
                  5      =(       d    SnUR                  S
:H  =(       a.    U=(       a%    UR                  S
:H  =(       a    UR                  U :H  nU(       aa  U(       dZ  UR                  [        R                  " SUR                  < SUR                  < SUR                  R                   < S3US	S95        XBUR                  '   XBUR
                  '   GM     U$ )z2Forbid field shadowing in multi-table inheritance.NzThe field 'z' from parent model 'z' clashes with the field 'rn   zmodels.E005r  z' from model 'zmodels.E006r  )r`   r0  r   r   rM   r  r@  r   r  r   
get_fieldsr   r  )r   r!  used_fieldsr   r   clashrq   id_conflicts           r=   r{  Model._check_field_name_clashes^  sw     ii++F\\..#/U;??1993MUQUMM  %zz5;;+<+<affaggmmU !$,	 '(AFF#)*AII& / ,( ii++F\\,,.'*+' / , 99,,335KOOK$4$45=EuLL%k&6&6%7 8!JJ<~ekk6G6G5HL(	 6 ''AOOAFF+Q{qyy/IQTE $V5VUZZ4-?VEKKSVDV  [LL./ffejj%++BSBSU(	 #$%&		"' (* rA   c           
         / n/ nU R                   R                   Hg  nUR                  nU(       a@  XA;   a;  UR                  [        R
                  " SUR                  < SU< S3SU SS95        MV  UR                  U5        Mi     U$ )NzField 'z' has column name 'z ' that is used by another field.z$Specify a 'db_column' for the field.zmodels.E007r  )r`   r   r  r@  r   r  rM   )r   used_column_namesr!  r   column_names        r=   r   Model._check_column_name_clashes  s}     ''A((K {?LL,-FFKAC( "((5 (" rA   c                 2   / nU R                   nUR                  S5      (       d  UR                  S5      (       a*  UR                  [        R
                  " SU-  U SS95        U$ [        U;   a(  UR                  [        R
                  " SU-  U SS95        U$ )Nr^  zgThe model name '%s' cannot start or end with an underscore as it collides with the query lookup syntax.zmodels.E023r  zbThe model name '%s' cannot contain double underscores as it collides with the query lookup syntax.zmodels.E024)rE   
startswithendswithr@  r   r  r   )r   r!  r   s      r=   r|  )Model._check_model_name_db_lookup_clashes  s    \\
  %%)<)<S)A)AMMCEOP$	"  :%MM@BLM$	 rA   c           	          / nU R                   R                  nS U R                   R                  SS9 5       nU H2  nXB;   d  M
  UR                  [        R
                  " SU-  U SS95        M4     U$ )Nc              3   ~   #    U  H3  nUR                   (       d  M  UR                  c  M%  UR                  v   M5     g 7fr   )rd  related_modelr  r   s     r=   rh   LModel._check_property_name_related_field_accessor_clashes.<locals>.<genexpr>  s0      #
9}} !" AII9s   ===Freversez8The property '%s' clashes with a related field accessor.zmodels.E025r  )r`   r  _get_fieldsr@  r   r  )r   r!  r  related_field_accessorsaccessors        r=   r}  9Model._check_property_name_related_field_accessor_clashes  s|    22#
YY**5*9#

 0H)LL$&./(	 0 rA   c                     / n[        S U R                  R                   5       5      S:  a%  UR                  [        R
                  " SU SS95        U$ )Nc              3   J   #    U  H  oR                   (       d  M  S v   M     g7f)r  N)r  r   s     r=   rh   2Model._check_single_primary_key.<locals>.<genexpr>  s     B0QMMqq0s   #	#r  zBThe model cannot have more than one field with 'primary_key=True'.zmodels.E026r  )sumr`   r   r@  r   r  r  s     r=   r~  Model._check_single_primary_key  sN    B#))00BBQFMM*$	 rA   c                    [        U R                  R                  [        [        45      (       d  [
        R                  " SU SS9/$ [        S U R                  R                   5       5      (       a  [
        R                  " SU SS9/$ / nU R                  R                   H$  nUR                  U R                  US5      5        M&     U$ )z,Check the value of "unique_together" option.z*'unique_together' must be a list or tuple.zmodels.E010r  c              3   X   #    U  H   n[        U[        [        45      (       + v   M"     g 7fr   )rt   r|   list)rf   r   s     r=   rh   /Model._check_unique_together.<locals>.<genexpr>  s(      
3 6E4=1113s   (*z7All 'unique_together' elements must be lists or tuples.zmodels.E011r.  )
rt   r`   r.  r|   r  r   r  r   r  _check_local_fields)r   r!  r   s      r=   r  Model._check_unique_together  s     #))33eT]CC@$   
))33
 
 

 M$  F))33c55f>OPQ 4MrA   c           
         / n[        5       nU R                  R                   GH  nUR                  S   S:X  d"  UR                  S   R	                  5       (       a2  UR                  [        R                  " SUR                  -  U SS95        [        UR                  5      UR                  :  a>  UR                  [        R                  " SUR                  UR                  4-  U SS95        UR                  (       d  M  UR                   H*  nUR                  S U R                  U5       5       5        M,     GM     U GH  n[        R                  " X`5      (       d  M!  [         U   nUR"                  R$                  (       dx  S	U R                  R&                  ;   d^  [)        S
 U R                  R                   5       5      (       a3  UR                  [        R*                  " SUR,                  -  SU SS95        UR"                  R.                  (       dx  SU R                  R&                  ;   d^  [)        S U R                  R                   5       5      (       a3  UR                  [        R*                  " SUR,                  -  SU SS95        UR"                  R0                  (       a  GMn  SU R                  R&                  ;   a  GM  [)        S U R                  R                   5       5      (       d  GM  UR                  [        R*                  " SUR,                  -  SU SS95        GM     U R                  R                   VVV	s/ s H  oDR2                    H  u  pUPM	     M     n
nnn	XR                  R                   VVs/ s H  oDR4                    H  oPM     M     snn-  n
X-  n
UR7                  U R9                  U
S5      5        U$ s  sn	nnf s  snnf )z/Check fields, names, and conditions of indexes.r   r^  z@The index name '%s' cannot start with an underscore or a number.zmodels.E033r  z8The index name '%s' cannot be longer than %d characters.zmodels.E034c              3   *   #    U  H	  oS    v   M     g7f)r   Nr:   )rf   refs     r=   rh   'Model._check_indexes.<locals>.<genexpr>2  s      &*N3A*Ns   supports_partial_indexesc              3   <   #    U  H  oR                   S Lv   M     g 7fr   )	conditionrf   r   s     r=   rh   r  <  s     Q?PeooT1?Ps   z,%s does not support indexes with conditions.zLConditions will be ignored. Silence this warning if you don't care about it.zmodels.W037r  supports_covering_indexesc              3   8   #    U  H  oR                   v   M     g 7fr   )includer  s     r=   rh   r  L  s     C1Bmm1Br   z1%s does not support indexes with non-key columns.zQNon-key columns will be ignored. Silence this warning if you don't care about it.zmodels.W040supports_expression_indexesc              3   8   #    U  H  oR                   v   M     g 7fr   )contains_expressionsr  s     r=   rh   r  \  s     P>OU00>Or   z+%s does not support indexes on expressions.zKAn index won't be created. Silence this warning if you don't care about it.zmodels.W043r   )r   r`   r   rM   isdigitr@  r   r  r  max_name_lengthr  expressionsr   _get_expr_referencesr   r  r   r@  r  r  r   r  r  r  r  fields_ordersr  r  r  )r   rs  r!  
referencesr   
expressionr   r   r   r^  r   r  s               r=   r  Model._check_indexes  s3    U
YY&&E zz!}#uzz!}'<'<'>'>LL').4(	 5::!6!66LL&).U5J5J(KL(	 )))"'"3"3J%% &*-*B*B:*N&  #4- '4 B--b66$RJ##<<-1O1OOQsyy?P?PQQQNNF$112:  (	 ##==.#))2P2PPC1B1BCCCNNK$112B  (	 ##???0CII4R4RRPcii>O>OPPPNNE$112:  (	Q j  #yy00
0eATATXUEATE0 	 
 			(9(9W(9ug77(9WWc--fi@A
 Xs   !OOc                    SSK Jn  0 nU R                  R                  SS9 H2  nXTUR                  '   [        US5      (       d  M$  XTUR                  '   M4     / nU H  n XG   n[        UR                  UR                  5      (       a4  UR                  [        R                  " SU< SU< SU< S	3U S
S95        Ma  XPR                  R                  ;  aI  UR                  [        R                  " SU< SU< SU R                  R                  < S	3SU SS95        M  M     U$ ! [         a3    UR                  [        R                  " SU< SU< S	3U SS95         GM  f = f)Nr   )modelsFr  r  r  z' refers to a ManyToManyField 'z.', but ManyToManyFields are not permitted in 'rn   zmodels.E013r  z' refers to field 'z' which is not local to model 'z4This issue may be caused by multi-table inheritance.zmodels.E016r  z#' refers to the nonexistent field 'zmodels.E012)	django.dbr  r`   r  rM   rV   r  rt   r   ManyToManyRelr@  r   r  r   r7  r
  )r   r   optionr  forward_fields_mapr   r!  rx  s           r=   r  Model._check_local_fieldsq  sR   $  YY**5*9E-2uzz*ui((495==1 :
  J&*6 e00&2F2FGGMM !' * & !$,
 ))"8"88MM'-z399;P;PR!W #, 9= !P K  LL #&
  (
 
s    D%%8E"!E"c                    U R                   R                  (       a  [        R                  " SU SS9/$ U R                   R                  (       d  U R                   R
                  (       d  / $ [        U R                   R
                  [        [        45      (       d  [        R                  " SU SS9/$ / nU R                   R
                  nS U 5       nS U 5       n/ n/ nU H1  n[        U;   a  UR                  U5        M   UR                  U5        M3     UnU H  nU nSnUR                  [        5       Ht  n	 U	S	:X  a  UR                   R                  nOUR                   R                  U	5      nUR                  (       a%  UR                  S
   R                   R"                  nMr  SnMv     M     U Vs1 s H  oUS	:w  d  M
  UiM     nn/ n
U R                   n[-        [.        R0                  " S [/        UR2                  UR4                  5       5       5      5      nU
R7                  X,-
  5        U
 H+  nUR                  [        R                  " SU-  U SS95        M-     U$ ! [$        [&        4 a\    Ub$  UR)                  U	5      cB  UR+                  U	5      c,  UR                  [        R                  " SU-  U SS95         GM   GM   GM  f = fs  snf )zM
Check "ordering" option -- is it a list of strings and do all fields
exist?
z?'ordering' and 'order_with_respect_to' cannot be used together.zmodels.E021r  zQ'ordering' must be a tuple or list (even if you want to order by only one field).zmodels.E014c              3   d   #    U  H&  n[        U[        5      (       d  M  US :w  d  M"  Uv   M(     g7f)?N)rt   rB  r   s     r=   rh   (Model._check_ordering.<locals>.<genexpr>  s#     GVz!S'9!a3h!!Vs   00	0c              3   B   #    U  H  oR                  S 5      v   M     g7f)r  N)removeprefixr   s     r=   rh   r    s     6v!..%%vs   Nr'  zJ'ordering' refers to the nonexistent field, related field, or lookup '%s'.zmodels.E015c              3      #    U  HZ  nUR                   (       a  UR                  (       a  UR                  UR                  4OUR                  R                  5       4v   M\     g 7fr   )rp   concreterM   r  r   related_query_namer   s     r=   rh   r    sQ        BA NN1:: VVQYY'''44689 Bs   A"A$)r`   _ordering_clashr   r  r   rl   rt   r  r|   r   r@  r  r'  r  rd  
path_infosto_optsr   r
   AttributeErrorget_transform
get_lookupr   r   from_iterabler   ri  r  )r   r!  r   _fieldsrelated_fieldsr   r   _clsfldpartinvalid_fieldsr   valid_fieldsinvalid_fields                 r=   r  Model._check_ordering  s    99$$U$  99**#))2D2DI#)),,tUm<<'$	  ## HVG 7v6 AQ%%a(q!	 
  $EDCJ/t|"jjmm"jj2248"~~b199??# 0 $: $1VDy!V1  yy   t{{D,@,@A  	
 	f34+MMM-/<=$	 , [ *>: {))$/7CNN4<P<X"LL!ACH!I$'#0	  =Y7 2s&   :A,I#(I#6	KK#AKKc                    U(       d  / $ / nSnSnU Hw  n[         R                  " XP5      (       d  M   [        U   nUR                  R	                  5       nUb  UR
                  R                  (       a  Mc  Uc  UnUnMl  Xs:  d  Ms  UnUnMy     Uc  U$ U R                  R                   Hg  nUR                  b  M  UR                  =n	c  M#  [        U	5      U:  d  M4  UR                  [        R                  " SU	< SU< SU< S3SU SS95        Mi     U R                  R                   H  n[!        UR"                  R$                  [&        5      (       a  M.  UR"                  R$                  R                  R                   Hg  n
U
R                  b  M  U
R                  =nc  M#  [        U5      U:  d  M4  UR                  [        R                  " S	U< SU< SU< S3S
U SS95        Mi     M     U$ )z~
Check that any auto-generated column names are shorter than the limits
for each database in which the model will be created.
Nz.Autogenerated column name too long for field "z". Maximum length is "z" for database "z".z/Set the column name manually using 'db_column'.zmodels.E018r  z2Autogenerated column name too long for M2M field "z\Use 'through' to create a separate model for M2M and then set column_name using 'db_column'.zmodels.E019)r   r  r   opsr  r@  truncates_namesr`   r   	db_columnr  r  r@  r   r  r   rt   r   r  rB  )r   rs  r!  allowed_lendb_aliasr   r   r  r   r  m2mrel_names               r=   ry  Model._check_long_column_names	  s    I B--b66$RJ(nn<<>O&**=*=*M*M&"1K!H$2"1K!H   M''A #$%HH,[9${2LL 'X? O(	 (& --A!..00#66 ~~--33@@MM)%(ZZ/<H3MM  (h@!R !$,
 A .6 rA   c              #   H  #    [        U[        5      (       a  UR                   Hp  n[        U[        5      (       a?  Uu  p4[        UR	                  [
        5      5      v   U R                  U5       S h  vN   MW  U R                  U5       S h  vN   Mr     g [        U[        5      (       a+  [        UR                  R	                  [
        5      5      v   g [        US5      (       a1  UR                  5        H  nU R                  U5       S h  vN   M     g g  N N N7f)Nget_source_expressions)rt   r'   childrenr|   r  r   r  r&   rM   rV   r  )r   exprchildlookuprW   src_exprs         r=   r  Model._get_expr_referencese	  s     dAeU++$)MFZ 899"77>>>"77>>> ' a  		
344T344 77933H=== : 5 ?>
 >s7   A2D"4D5D"DBD"D D"D" D"c                     / nU Hf  n[         R                  " X05      (       d  M   [        U   nU R                  R                   H#  nUR                  UR                  X5      5        M%     Mh     U$ r   )r   r  r   r`   r7  r  _check)r   rs  r!  r   r   r<  s         r=   r  Model._check_constraintsu	  s`    B--b66$RJ!ii33
j//@A 4	  rA   )r  rZ  r  r   )NNN)FFFNN)FNFFNNr  )NTT)JrE   rF   rG   rH   r  classmethodr   r>   rC   r-  r1  r;  r4  rM  rP  rT  r   r'  rW  rq  rt  ry  r  r  alters_datar  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r#  r  r  r  rL  rC  ra  rg  rk  rj  r:  r  r  rt  ru  rv  rw  rx  rz  r{  r  r|  r}  r~  r  r  r  r  ry  r  r  rI   r]   r   s   @r=   r   r     sE   p2d 
 
<E!
1"$,.; 
+{	+B
Q/f

,$"OV L
\ D 
2 E * DL !I HL-b `D,8
4l	" F
 G
*(.$M* =*~/b>
"@*(-*^*8 " "H  >  ,  4 
 
     ! !F  $ C CJ  0  .  (    : X Xt 4 4l j jX M M^ > >  rA   r   )	metaclassc                    UR                   R                  nUR                  U 5      nUR                  R	                  U5      R
                  " S0 UD6R                  [        U5       VVs/ s H  u  pgU" XvS9PM     snnS/5        g s  snnf )N)r'  r  r  r:   )r`   r   get_forward_related_filterr   r`  rb  bulk_updater  )r<   ordered_objid_listra  	order_wrtr  r  r'  s           r=   method_set_orderr+  	  sx    !!77I66t<K""5)00?;?KK;DW;MN;Mie	);MN	
Ns   *B
c                     UR                   R                  nUR                  U 5      nUR                   R                  R                  nUR
                  R                  " S0 UD6R                  USS9$ )NT)flatr:   )r`   r   r&  r'  rM   r   rb  values_list)r<   r(  r*  r  pk_names        r=   method_get_orderr0  	  sd    !!77I66t<K""''G%%44@@t@TTrA   c                     [        USU R                  R                  5       -  [        [        U 5      5        [        USU R                  R                  5       -  [        [
        U 5      5        g )Nzget_%s_orderzset_%s_order)r   rE   lowerr   r0  r+  )r   r  s     r=   r   r   	  sZ    --//&.
 --//&.rA   c                 z    [        U [        5      (       a  [        R                  " U 6 nOU nUR	                  U5      $ )z7Used to unpickle Model subclasses with deferred fields.)rt   r|   r   r  rs   )model_idr   s     r=   r8  r8  	  s3    (E"") ==rA   Tr   )\r   rT   rI  	functoolsr   	itertoolsr   asgiref.syncr   r5  django.appsr   django.confr   django.corer   django.core.exceptionsr	   r
   r   r   r   r   r  r   r   r   r   r   r   django.db.modelsr   r   r   r   r   django.db.models.constantsr   django.db.models.deletionr   r   django.db.models.expressionsr   django.db.models.fields.relatedr   r    r!   r"   django.db.models.functionsr#   django.db.models.managerr$   django.db.models.optionsr%   django.db.models.queryr&   r'   django.db.models.signalsr(   r)   r*   r+   r,   django.db.models.utilsr-   r.   django.utils.deprecationr/   django.utils.encodingr0   django.utils.hashabler1   django.utils.textr2   r3   django.utils.translationr4   r^  r6   r   rQ   rX   rL   rZ   r   r   r   r+  r0  r   r8  __safe_for_unpickle__r:   rA   r=   <module>rM     s       #  &        W V 1 8 8  0 , , '  @ = + / 5 6" " :$P
X) X)v
 	5 	5sJ) sz=U
$  (, $rA   