
    MȂix}                    b   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	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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/  S SK0J1r1J2r2J3r3J4r4  S SK5J6r6  S SK7J8r8  S SK9J:r:  S SK;J<r<J=r=  S SK>J?r?J@r@JArAJBrBJCrC  S SKDJErEJFrF  S SKGJHrH  S SKIJJrJ  S SKKJLrLJMrM  S SKNJOrP   " S S5      rQ\Q" 5       rRS rSS rT " S S \U5      rV " S! S"5      rW " S# S$5      rX " S% S&\E\VS'9rYS-S( jrZS) r[S* r\S+ r]S,\]l^        g).    N)defaultdict)partialmethod)chain)sync_to_async)apps)settings)checks)NON_FIELD_ERRORSFieldDoesNotExist
FieldErrorMultipleObjectsReturnedObjectDoesNotExistObjectNotUpdatedValidationError)DJANGO_VERSION_PICKLE_KEYDatabaseError
connectionconnectionsroutertransaction)NOT_PROVIDEDExpressionWrapperIntegerFieldMaxValue
LOOKUP_SEP)CASCADE	Collector)DatabaseDefault)CompositePrimaryKey)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)	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    FD:\sksbv-state-backend\venv\Lib\site-packages\django/db/models/base.py__repr__Deferred.__repr__=       !    c                     gr;   r<   r=   s    r?   __str__Deferred.__str__@   rB   rC   r<   N)__name__
__module____qualname____firstlineno__r@   rE   __static_attributes__r<   rC   r?   r8   r8   <   s    ""rC   r8   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.
.)rH   rI   )typerI   )namebasesmoduleattached_tos       r?   subclass_exceptionrS   G   s-      '2'?'?F	
 rC   c                 ^    [         R                  " U 5      (       + =(       a    [        U S5      $ )Ncontribute_to_class)inspectisclasshasattr)values    r?   _has_contribute_to_classrZ   Y   s!    u%%O'%9N*OOrC   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(       G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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R0                  UR.                  l        UR.                  R2                  nU(       a5  U(       a.  UR4                  (       a  [7        U< SUR4                  < S35      eUR                  5        H  u  pUR                  X5        M     [9        UR.                  R:                  UR.                  R<                  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.                  RB                  (       a  [7        SU-  5      eMI  Uc  UnMP  UR.                  RD                  UR.                  RD                  Ld  M  [7        SU-  5      e   Uc  [7        SU-  5      eUR.                  RG                  U5        UR.                  RD                  UR.                  l"        OXR.                  l"        0 n[I        U/UQ5       H  n[+        US5      (       d  M  UU:w  a  UR.                  R(                  (       d  M9  UR.                  R:                   He  n[        U[J        5      (       d  M  URL                  RN                  (       d  M7  [Q        UURL                  RR                  5      nUU[U        U5      '   Mg     M     [W        5       nURY                  5        GH  nUU;  d  [+        US5      (       d  UR[                  UR\                  5        M8  UR.                  R:                  UR.                  R<                  -   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Rc                  UR@                  5        M\     UR.                  RD                  n[U        U5      n!U!U;   a  UU!   nOU(       dv  SUR.                  Rd                  -  n"[K        U[f        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.                  Rh                  U'   OUR.                  Rh                  Rk                  5       n#U  H  nUR@                  U;  d  M  UR@                  UR\                  ;  d  M1  UR@                  U;  d  MC  [j        Rl                  " U5      n$UR                  UR@                  U$5        URn                  (       d  M  U#R                  5        H  u  nn%UU%:X  d  M  U$U#U'   M     M     UR.                  Rh                  R[                  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\  UR@                  UR\                  ;  d  Mx  UR@                  U;  d  M  [j        Rl                  " U5      nUR.                  R(                  (       d  SUl8        UR                  UR@                  U5        M     GM     UR.                  Rr                   V&s/ sH  n&[j        Rl                  " U&5      PM     sn&UR.                  l9        U(       a  SUl        Xl:        U$ URw                  5         UR.                  R                  Ry                  UR.                  Rz                  U5        U$ s  snf s  snf s  snf s  sn&f )#NrH   __classcell__MetaabstractF_meta	app_labelzModel class rM   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rb   N)rX   rb   ra   rd   .0xs     r?   	<genexpr>$ModelBase.__new__.<locals>.<genexpr>   s9      !(A"1g. '78ww7G7G '!(   A
A
A
)rR   r   c              3      #    U HA  n[        US 5      (       d  M  UR                  R                  (       a  M3  UR                  v   MC     g7frf   )rX   rb   ra   r   rg   s     r?   rj   rk      s;      !(A"1g. 278ww7G7G 211!(rl   
NotUpdatedc              3      #    U HA  n[        US 5      (       d  M  UR                  R                  (       a  M3  UR                  v   MC     g7frf   )rX   rb   ra   rn   rg   s     r?   rj   rk      s9      !(A"1g. %78ww7G7G %!(rl   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_deleterO   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__
isinstancer\   popitemsrZ   getattrr   get_containing_app_configRuntimeErrorlabeladd_to_classr(   rS   tupler   r   r   r   ra   rX   rp   rb   rq   proxyswapped	TypeErrorr   local_fieldslocal_many_to_manyprivate_fieldsrO   fieldsconcrete_modelsetup_proxyreversedr#   remote_fieldru   r%   modelr1   setmroupdate__dict__r   rG   add
model_namer   parentscopydeepcopy
one_to_onemti_inheritedindexesr`   _prepareregister_modelrc   )(clsrO   rP   attrskwargs	super_newbr   rQ   	new_attrs	classcell	attr_metacontributable_attrsobj_nameobj	new_classra   meta	base_metarc   
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_fieldru   idx	__class__s(                                          r?   rw   ModelBase.__new__a   si   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 )
 """  !(  9 )-8 )" !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2'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::,::..( !&

 $ $  / JJi&8&88

*>> MM%0E::...2+**5::u=' 3g $V +4//*A*A#
*A3DMM#*A#
	  "'I&N++IOO,E,EyQ An 3
 Lj#
s"   f>f>g9gg+gc                 `    [        U5      (       a  UR                  X5        g [        XU5        g N)rZ   rU   setattr)r   rO   rY   s      r?   r   ModelBase.add_to_class  s%    #E**%%c0Cu%rC   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   6   #    U H  oR                   v   M     g 7fr   rO   rh   r   s     r?   rj   %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?   rj   r     s     <166Y&s   zOModel %s must specify a custom Manager, because it has a field named 'objects'.r   )sender)rb   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__rG   joinr   r   ABSOLUTE_URL_OVERRIDESgetlabel_lowerr   managersany
ValueErrorr'   rt   r   r   rO   set_name_with_modelr+   send)r   optswrtremoteget_absolute_url_overridemanagerindexs          r?   r   ModelBase._prepare  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'rC   c                 .    U R                   R                  $ r   )rb   base_managerr   s    r?   _base_managerModelBase._base_manager  s    yy%%%rC   c                 .    U R                   R                  $ r   )rb   default_managerr   s    r?   _default_managerModelBase._default_manager  s    yy(((rC   r<   )rG   rH   rI   rJ   r   rw   r   r   propertyr   r   rK   r_   r   s   @r?   r\   r\   ^   s@    #dL	&5(n & & ) )rC   r\   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&((#
rC   r<   r   )rG   rH   rI   rJ   r   rK   r<   rC   r?   r   r     s    rC   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<   )
rG   rH   rI   rJ   r   dbaddingr   r   rK   r<   rC   r?   r   r     s    %	B
 F24LrC   r   c                   Z  ^  \ 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SHS jrS r\" \\5      rSHS jrS rSIS jrSIS j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     SJS jrS\l         SHS jr      SKS jrS rS rS r SHS jr!SLS  jr"S\"l        SLS! jr#S\#l        S" r$S# r%S$ r&SHS% jr'S& r(S' r)SHS( jr*SLS) jr+S* r,S+ r-S, r.S- r/S. r0SHS/ jr1SMS0 jr2SHS1 j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       rG\SF 5       rHSGrIU =rJ$ )N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*                  b  U	R,                  (       a  M%  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 'rr   FTr<   r   c              3   6   #    U H  n[        U5      v   M     g 7fr   repr)rh   ns     r?   rj   !Model.__init__.<locals>.<genexpr>M  s     ,IjT!WWjr   z%() got unexpected keyword arguments: )r   r   )%r   rb   r   DEFERREDra   r   r.   r   r   _statelenconcrete_fields
IndexErroriterzipattnamer   ry   rO   r   rI   column	generatedrx   r   r"   KeyErrorget_default_property_namesrz   	get_fieldr   r   rG   rv   __init__r,   )r>   r   r   r   r   _setattr	_DEFERREDfields_itervalr   is_related_objectrel_objproperty_names
unexpectedproprY   unexpected_namesr   s                    r?   r  Model.__init__  s+   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 %||#ue002BCC
6"(**UZZ"8,0)2$jj7 '') 
 )+T::w7 , i'T==#6O !R !11NJ%||~ )- U3 .8t, !1$T7 2  . #'99,Ij,I#I ||n$I'(*  	c1m $ 66 #)**U]]";C' 6"'"3"3"5C66 $ 2
 $//12@ - ."g-
.sN   9LMM6
ML//M	MMMM32M36N
	N
c                 R   [        U5      [        U R                  R                  5      :w  aO  [        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  rb   r  r
  r  nextr  r  r   r   )r   r   r   valuesvalues_iterr   news          r?   from_dbModel.from_dbU  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   rG   r=   s    r?   r@   Model.__repr__b  s    !^^44d;;rC   c                 R    U R                   R                  < SU R                  < S3$ )Nz	 object (r   )r   rG   pkr=   s    r?   rE   Model.__str__e  s    #'>>#:#:DGGDDrC   c                     [        U[        5      (       d  [        $ U R                  R                  UR                  R                  :w  a  gU R
                  nUc  XL $ X!R
                  :H  $ r   )rx   r   NotImplementedrb   r   r,  )r>   othermy_pks      r?   __eq__Model.__eq__h  sW    %''!!::$$(B(BB==   rC   c                 l    U R                  5       (       d  [        S5      e[        U R                  5      $ )Nz8Model instances without primary key value are unhashable)
_is_pk_setr   hashr,  r=   s    r?   __hash__Model.__hash__r  s)      VWWDGG}rC   c                     U R                  5       n[        R                  U[        '   U R                  R
                  U R                  R                  4n[        U4U4$ r   )__getstate__django__version__r   rb   rc   object_namemodel_unpickle)r>   dataclass_ids      r?   
__reduce__Model.__reduce__w  sN      "*0*<*<&'::'')?)??{D00rC   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   rz   rx   
memoryviewappendbytesry   )r>   staterD  attrrY   s        r?   r:  Model.__getstate__}  s    ""$))E(O4h',X'C'C'H'H'Jh$  ;;=KD%,,!(($e)=> ) ):%&0		$  1rC   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 rM      )
stacklevelz9Pickled model instance's Django version is not specified.rD  )r   r   r;  r<  warningswarnRuntimeWarningry   rE  r   r   )r>   rH  pickled_versionrI  rY   s        r?   __setstate__Model.__setstate__  s    ))$=>&"4"44 '(:(:< #  MMK
 %'$yy)<=(/  >U#rC   Nc                 j    U=(       d    U R                   n[        XR                  R                  5      $ r   )rb   r{   r,  r  )r>   r   s     r?   _get_pk_valModel._get_pk_val  s#    !tzztWW__--rC   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   )rb   r   r"  r,  r   target_fieldr  )r>   rY   ru   s      r?   _set_pk_valModel._set_pk_val  sd    ::--446K{{jjmm;66>>F 7 tZZ]]22E::rC   c                     U R                  U5      nUS L =(       d)    [        U[        5      =(       a    [        S U 5       5      (       + $ )Nc              3   &   #    U H  oS L v   M
     g 7fr   r<   r   s     r?   rj   #Model._is_pk_set.<locals>.<genexpr>  s     1LVt)Vs   )rU  rx   r   r   )r>   r   pk_vals      r?   r5  Model._is_pk_set  sC    !!$'dN N65)Lc1LV1L.L
 	
rC   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.
)rb   r  r  r   )r>   r   s     r?   get_deferred_fieldsModel.get_deferred_fields  sI     ZZ//
/yy- AII/
 	
 
s
   AAc           	         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OVU(       aO  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  UR*                  (       a)  [-        XR$                  [        XR$                  5      5        UR.                  (       d  Mb  UR1                  U
5      (       a"  UR3                  XR5                  U
5      5        M  UR1                  U 5      (       d  M  UR7                  U 5        M     U R                   R8                   HA  nUb  UR:                  U;   d  M  UR1                  U 5      (       d  M0  UR7                  U 5        MC     U R                   R<                   HT  nUb  UR:                  U;   d  M  UR.                  (       d  M+  UR1                  U 5      (       d  MC  UR7                  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   2   #    U H  n[         U;   v   M     g 7fr   r   r   s     r?   rj   (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,  )!rd  r{   r   r   remover   r   r   r   r   
db_managerusingfilterr,  ra  onlyrb   r  r  r   r   concreter   is_relation	is_cachedset_cached_valueget_cached_valuedelete_cached_valuerelated_objectsrO   r   r  r   )r>   rk  r   from_querysetprefetched_objects_cacher   rg  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~~mmW[---PQ   ??;//**41G1G1TU__T**--d3 ' ::--C#((f"4#--:M:M''- .
 ZZ..E5::#7%%%OOD))))$/ / %++..Is   ,MMc                 R   #    [        U R                  5      " XUS9I S h  vN $  N7f)N)rk  r   ru  )r   r|  )r>   rk  r   ru  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.
)rb   r  r   r{   r  )r>   
field_namer   s      r?   serializable_valueModel.serializable_value  sH    	-JJ((4E t]]++ ! 	-4,,	-s   2 A
	A
Fforce_insertforce_updaterk  update_fieldsc                   U 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  U R!                  5       (       a  [#        5       nU R
                  R$                  n	U R
                  R                   H8  n
X;  d  M
  ['        U
S	5      (       a  M  UR)                  U
R                  5        M:     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)operation_namer   z6Cannot force both insert and updating in model saving.FNzmThe following fields do not exist in this model, are m2m fields, primary keys, or are non-concrete fields: %sr   through)rk  r  r  r  ) _prepare_related_fields_for_saver   db_for_writer   r   rb   r  r  r   r  	frozenset_non_pk_concrete_field_names
differencer   r  r   r5  r   	pk_fieldsrX   r   	save_base)r>   r  r  rk  r  r   deferred_non_generated_fieldsr   not_updatable_fieldsr  r   loaded_fieldss               r?   r  
Model.save+  s   " 	--V-DK,,T^^dK\]UVV ZZ//)
/yy- 23++2F AII/ 	& )

 $ !%m4M**AAK#0#;#;K#H # Kii 456  $ -'!!%K

,,I33)'%2K2KOOEMM2 4 (223PQM )- 8%%'	 	 	
Q)
s   0G:G:"G:Tc                V   #    [        U R                  5      " UUUUS9I S h  vN $  N7f)Nr  )r   r  )r>   r  r  rk  r  s        r?   asaveModel.asaves  s3      #499-%%'	
 
 	
 
s    )')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 rM   )rx   r   r   r\   
issubclassrI   )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  # rC   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   rawrk  r  F)rk  	savepoint)rk  )r   r   createdr  r  rk  )r   r  r   rb   r   r   rt   r/   r   r   r   atomicmark_for_rollback_on_errorr  _save_parents_save_tabler  r   r   r-   )r>   r  r  r  rk  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   rk  r  r  updated_parents)r   rk  r  r  T)rb   r   rz   r{   r,  r  r   r   r  r  r  rU  rp  rs  )r>   r   rk  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 rC   c           
      
   UR                   nUR                  nUR                   V	s/ sH  n	X;  d  M
  U	R                  (       a  M  U	PM!     n
n	U(       a3  U
 V	s/ sH'  n	U	R                  U;   d  U	R
                  U;   d  M%  U	PM)     n
n	U R                  U5      (       d;  UR                  R                  U 5      n[        XR                  R
                  U5        U R                  U5      nU(       d  U(       d  U(       a  [        S5      eSnU(       dL  U(       dE  U(       d>  U R                  R                  (       a#  [        S UR                   5       5      (       a  SnU(       Ga  U(       G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%                  U5      nUR                   V	s/ sH:  n	U	R                  (       d  M  U	R&                  R)                  U
5      (       d  M8  U	PM<     nn	U H@  u  nnnUb  UR                  U;   d  M  [+        US5      (       d  M/  UR-                  U5        MB     U R/                  UUUUUUU5      n[1        U5      =n(       a  U R3                  US   U5        O0U(       a  U R5                  S5      eU(       a  U R5                  S	5      eU(       Gd  UR6                  (       a  UR6                  nUR9                  U 5      nUR                  R                  U5      R:                  " S0 UD6R=                  [?        [A        [C        S
5      [E        S5      -   [G        5       S9[E        S5      5      S9S   U l$        UR                   V	s/ sH/  n	U	R                  (       a  M  U(       d  XRJ                  Ld  M-  U	PM1     nn	[M        URN                  5      n[P        U   RR                  RT                  nU H  nU(       a  [!        U UR
                  5      OUR#                  U SS9n[+        US5      (       a  UU;  a  UR-                  U5        MZ  M\  URV                  (       d  Mo  U(       a  Mx  U(       a  UURJ                  L a  M  URY                  U5        M     U R[                  UR                  UUUU5      nU(       a  U R3                  US   U5        U$ s  sn	f 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.
z5Cannot force an update in save() with no primary key.Fc              3   l   #    U H+  oR                  5       =(       d    UR                  5       v   M-     g 7fr   )has_defaulthas_db_defaultr   s     r?   rj   $Model._save_table.<locals>.<genexpr>8  s%     R>aMMO9q'7'7'99>s   24TNresolve_expressionr   z&Forced update did not affect any rows.z0Save with update_fields did not affect any rows._order   )output_field)_order__maxr  )r   r<   ).rb   r  local_concrete_fieldsr  rO   r  r5  r,  get_pk_value_on_saver   r   r  r   allr   rk  r{   r/   rU  referenced_fieldsintersectionrX   rF  
_do_updatebool_assign_returned_valuesrn   r   get_filter_kwargs_for_objectrl  	aggregater&   r   r   r   r   r  
auto_fieldlistdb_returning_fieldsr   featurescan_return_columns_from_insertdb_returningri  
_do_insert)r>   r  r   r  r  rk  r  r   r  r   non_pks_non_generatedr^  pk_setr  base_qsr"  forced_updatereturning_fieldsr   _modelrY   resultsfilter_argsinsert_fieldsr  s                            r?   r  Model._save_table  s    yyNN	 //!
/! *+++ / 	 !
  /%.A66]*aii=.H . " % t$$WW11$7FD''//62&<=TUU   ""R4>>RRRL ,''--e4G / /A	 14WT99-!**T5:Q
 /   *9\M%%d+F 33 3AKK  ++889NO	 3    )/$vu!)UZZ=-Hg/O O %++E2	 )/
 oo G w-'w',,WQZ9IJoo&NOOooF  )) 22#@@F%%++E2V +)+Y$,- #Ha 8|~ "!H	%   $	%  333A{{ (.!??2J 3  
  $D$<$<=-8.h55 + '  D%--0$7 
 5"677$44(//6 5 &&&::#(@$++E2 ' oo!!5-9I3G ,,WQZ9IJq!
%4 `sF   S4S4S4#S9 S9:S>4TT.T'T?TTc                 d   UR                  US9nU(       d  Uc  UR                  5       (       a  S/$ / $ U R                  R                  (       aR  U(       dK  UR                  5       (       d  / $ UR	                  XG5      =n	(       a  U	$ UR                  5       (       a  S/$ / $ UR	                  XG5      $ )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).
rh  r<   )rl  existsrb   select_on_save_update)
r>   r  rk  r^  r"  r  r  r  filteredr  s
             r?   r  Model._do_update  s     >>V>, (HOO,=,=tI::$$] ??$$	"**6DDwD#??,,B44"499rC   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  rk  r  )_insert)r>   r   rk  r   r  r  s         r?   r  Model._do_insert  s+    
 F-  
 	
rC   c                     [        U5      n[        X5       H  u  pE[        XR                  U5        M     U H)  nU R                  R                  UR                  S 5        M+     g r   )r
  r  r   r  r   ry   )r>   returned_valuesr  returning_fields_iterrY   r   s         r?   r  Model._assign_returned_values  sR     $%5 6GLED--/ H +EMMemmT2 +rC   c                 ,   U R                   R                   GHG  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                  5       (       dS  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M6  UR                  U 5        GMJ     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                  5       (       a  M  [        U SUR
                   S35      e   g )NzB() prohibited to prevent data loss due to unsaved related object 'rr   fk_field)default)rb   r  ro  rp  r{   rO   r5  r   multiplers  r   r  empty_valuesr   rX  r   rX   rr  )r>   r  r   r   r   s        r?   r  &Model._prepare_related_fields_for_save  s   
 ZZ//E%-    U__T%:%:dJJ5 ~~'' --66**>>sC$2@%**N  T==1U5G5GG D**c2 3 2 2 : :;w--@  --d3A 0D ZZ..E%-!!!OOD))E:..,,T4,@3s~~//$)* +338::,bB  /rC   c                 Z   U R                  5       (       dE  [        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  )rk  r  )keep_parents)r5  r   rb   r=  r,  r  r   r  r   r   collectdelete)r>   rk  r  	collectors       r?   r  Model.delete  s      "jj44djjmm6K6KM  K,,T^^dKE7	4&|<!!rC   c                 R   #    [        U R                  5      " UUS9I S h  vN $  N7f)N)rk  r  )r   r  )r>   rk  r  s      r?   adeleteModel.adelete  s+     "4;;/%
 
 	
 
r  c                     [        XR                  5      n[        [        UR                  5      5      n[        UR                  [        U5      U5      SS9$ )NT)strings_only)r{   r  dictr3   flatchoicesr2   r   )r>   r   rY   choices_dicts       r?   _get_FIELD_displayModel._get_FIELD_display   sI    mm,M%*;*;<=]5159
 	
rC   c                    U R                  5       (       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<   )r5  r   r{   r  r*   createrO   r,  ANDORr   r   rk  r  r   rl  order_byr	  rd   rb   r=  )	r>   r   r   r   oporderparamqqss	            r?   _get_next_or_previous_by_FIELD$Model._get_next_or_previous_by_FIELD(  s=     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   =E =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<   )rX   rb   r   r  r   r   rl  r"  r,  rO   r  r   r   r{   )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''rC   c                 :  ^ ^ Tc
  [        5       mU=(       d    T R                  n0 n/ nUR                   GH:  nUR                  T;   a  M  UR                  (       aH  [        U4S jT R                  UR                  5       5       5      (       a  M\  UR                  U5        Mo  [        UR                  [        5      (       aC  XQR                  ;  a4  [        U 4S jUR                   5       5      n[        U5      S:X  a  US   nO*UR                   (       a  [#        T UR$                  5      nOM  U(       a  ['        US5      (       d  [)        Xe5      nXcUR                  '   XcUR$                  '   GM=     ST;  a#  [)        T R*                  UR*                  5      US'   U(       aq  UR-                  5        VVs0 sH  u  pv[/        U5      U_M     nnnU H>  n	[1        U	R                  R3                  U5      U	R4                  5      X9R                  '   M@     U$ s  snnf )Nc              3   2   >#    U H  nUS    T;   v   M     g7f)r   Nr<   )rh   refexcludes     r?   rj   2Model._get_field_expression_map.<locals>.<genexpr>^  s!      J Fg%Js   c              3   :   >#    U H  n[        TU5      v   M     g 7fr   )r{   )rh   
from_fieldr>   s     r?   rj   r  i  s      @Q*GD*--@Qs   r  r   r  r,  )r   rb   r   rO   r  r   _get_expr_references
expressionrF  rx   r   r"   r  r   from_fieldsr  rn  r{   r  rX   r   r,  rz   r)   r   replace_expressionsr  )
r>   r   r  	field_mapgenerated_fieldsr   rY   rO   replacementsgenerated_fields
   ` `       r?   _get_field_expression_mapModel._get_field_expression_mapT  s   ?eG!tzz	&&EzzW$ #889I9IJ    ''.5--/?@@!;!;; @E@Q@Q  u:?!!HEemm4/C D De+$)ejj!',emm$7 '8 w#DGGTWW5IdO>Goo>OP>O{tAdGUN>OLP#32C#..BB<P#003	../ $4  Qs   7Hc                     U R                  5       (       d  [        SU -  5      e[        XR                  R	                  5       R
                  5      $ )Nz9Unsaved model instance %r cannot be used in an ORM query.)r5  r   r{   r   get_related_fieldr  )r>   r   s     r?   prepare_database_saveModel.prepare_database_save  sF      KdR  t//AACKKLLrC   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.clean  s     	rC   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_checksrz   
setdefaultextendr   )r>   r  unique_checksdate_checkserrorsdate_errorskvs           r?   validate_uniqueModel.validate_unique  s    
 &*%<%<W%<%M",,];//<%%'DAa$++A. ( !&)) rC   c                 "  ^ 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Hl  u  p~U GH_  nUR                  nUT;   a  M  [        U[        5      (       aG  [        S UR                   5       5      nTR                  U5      (       a  UR                  UU45        Mt  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  GM-  UR$                  T;  d  GM@  UR                  USUUR$                  45        GMb     GMo     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<   rh   rO   r  s     r?   rj   +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?   rj   r=    s     M;L4w;Lr>  c              3   6   #    U H  oR                   v   M     g 7fr   r   rh   r   s     r?   rj   r=    s     !C(**(r   dateyearmonth)r   r   rb   unique_togethertotal_unique_constraintsall_parentsrF  r   r   r   r   rO   rx   r!   
isdisjointuniqueunique_for_dateunique_for_yearunique_for_month)r>   r  include_meta_constraintsr2  unique_togethersconstraintsparent_classmodel_classrE  checkmodel_constraints
constraintr3  fields_with_classr   r   rO   namess    `                r?   r-  Model._get_unique_checks  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?a!455!!C!((!CCE))%00%,,k5-AB88!((+w)?@$$):):')I&&VT1CTCT'UV$$):):')I&&VT1CTCT'UV%%%!*<*<G*K&&WdADVDV'WX!  $5$ ))rC   c                 p   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]  XsR                   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 R                  UR                   5      (       a  U	R!                  U
S9n	U	R#                  5       (       d  GMa  [        U5      S:X  a  US   nO[$        nUR'                  U/ 5      R)                  U R+                  X45      5        GM     U$ )Nr  rh  r  r   r<   )rb   r  r{   r  r   r  !interprets_empty_strings_as_nullsr  r  r   strr  r   rl  rU  r5  r  r  r
   r0  rF  unique_error_message)r>   r2  r4  rQ  unique_checklookup_kwargsr  r   lookup_valuer  model_class_pkkeys               r?   r.  Model._perform_unique_checks  sg   )6%K M*
JJ((4&tYY7' B&"++MM ))333DKK<N<N1=c*o. +  < C$66--44E}EB "--k.?.?@N;;%%$//+:K:K*L*LZZ>Z2yy{{|$)&q/C*C!!#r*11--kHQ *7X rC   c                 `   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                  5       (       a  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$ )NrB  z%s__dayz	%s__monthz%s__yearr  rh  r<   )r{   dayrD  rC  r   rl  r  r   r5  r  r,  r  r0  rF  date_error_message)
r>   r3  r4  rQ  lookup_typer   
unique_forr]  rB  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 rC   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$ )NrJ  )r   r   re  r   field_label
date_fielddate_field_labelmessagecodeparams)rb   r  r   error_messagesr4   verbose_name)r>   re  r  rf  r   r   s         r?   rd  Model.date_error_message7  s|    zzz*(():;"&t'8'89*#'(:(:;($,T^^J-G-T-T$U
 	
rC   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   rQ  r   r\  r  r   ri  rI  rl  andfield_labelsz9%(model_name)s with this %(field_labels)s already exists.rE  )	rb   r4   rq  r  r  r   rp  r5   _)r>   rQ  r\  r   ro  r   r   ru  s           r?   r[  Model.unique_error_messageH  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   rb   rO  rG  rF  )r>   rO  rP  s      r?   get_constraintsModel.get_constraintsh  sh    

(>(>?@ JJ22L!!---""L2D2D2P2P#QR 3 rC   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  rk  rn  rI  r  r   )ry  r   r  r   validater   r{   r  r   r0  rF  update_error_dict)	r>   r  rO  rk  r4  rQ  rS  rT  es	            r?   validate_constraintsModel.validate_constraintso  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   r}  r)  r
   r   r8  r  )r>   r  r8  r  r4  r~  rO   s          r?   
full_cleanModel.full_clean  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   rb   r   rO   r  r{   r  blankr  rx   r    r   r)  r   
error_list)r>   r  r4  r   	raw_valuer~  s         r?   r  Model.clean_fields  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)                  U5      QU R+                  5       Q-  nU$ )N	databasesr<   )_check_swappable_check_model_check_managersrb   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_keyr1  _check_column_name_clashes_check_unique_together_check_indexes_check_ordering_check_constraints_check_db_table_comment_check_composite_pk)r   r   r4  r  clash_errorss        r?   rR  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 rC   c           
      ~   / nU R                   nUR                  nUR                  (       d  [        U[        5      (       d  U$ [        [        5      nUR                   H  nS n UR                  U5      nU(       d  U< S3nO{UR                  (       d  U< S3nOcUR                  (       a  U< S3nOKUR                  (       a  U< S3nO3XrR                  ;  a  U< S3nOXGR                     R                  U5        U(       d  M  UR                  [        R                   " U< S3UU SS95        M     UR#                  5        Ha  u  p[%        U	5      S	:  d  M  U	tpZS
R'                  S U
 5       5      nUR                  [        R                   " U S3U SU< S3U SS95        Mc     U$ ! [         a    S n GNFf = f)Nz is not a valid field.z field has no column.z field may not set 'null=True'.z field is a generated field.z field is not a local field.z1 cannot be included in the composite primary key.zmodels.E042hintr   idr  r   c              3   6   #    U H  n[        U5      v   M     g 7fr   r  rA  s     r?   rj   ,Model._check_composite_pk.<locals>.<genexpr>!  s     &EutE{{r   z and z are the same fields.)rb   r,  r   rx   r!   r   r  r   r  r   r  nullr  r   rF  r	   Errorrz   r  r   )r   r4  r   r,  seen_columnsr  r  r   r  r   rest
duplicatess               r?   r  Model._check_composite_pk  s   yyWW::Z,?@@M"4(..JDz2 $'=>\\$'<=$'FG$'CD///$'CD\\*11*=tLL%. ) !(- )@ $0#5#5#7F;!#$/!
!YY&E&EE
LL%, '  *|5>ST(	 $8 S % s   $F,,F<;F<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  )rb   db_table_commentr   allow_migrate_modelr   r  r  required_db_featuresrF  r	   Warningdisplay_name)r   r  r4  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(	   rC   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  rM   'z' references 'z0', which has not been installed, or is abstract.zmodels.E002)rb   r   r   	get_modelr   rF  r	   r  	swappableLookupErrorsplit)r   r4  rc   r   s       r?   r  Model._check_swappableE  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  )rb   r   r   r   rF  r	   r  rG   r   r4  s     r?   r  Model._check_model`  sY    99??yy%%)E)ELLACLLP( rC   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<   )rb   r   r1  rR  )r   r   r4  r   s       r?   r  Model._check_managersm  s:     yy))GMM'--1&12 *rC   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<   )rb   r   r1  rR  r   )r   r   r4  r   s       r?   r  Model._check_fieldsu  sk     YY++EMM%++//0 ,YY11EMM%++???@ 2rC   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$ )zD
Check if no relationship model is used by more than one m2m field.
c              3   z   #    U H2  n[        UR                  R                  [        5      (       d  M.  Uv   M4     g 7fr   )rx   r   r   r\   r   s     r?   rj   =Model._check_m2m_through_same_relationship.<locals>.<genexpr>  s%     SVz!..2F2F	'R!!V   ,;	;c              3   z   #    U H2  n[        UR                  R                  [        5      (       d  M.  Uv   M4     g 7fr   )rx   r   r  r\   r   s     r?   rj   r    s%     UVz!..2H2H)'T!!Vr  zWThe model has two identical many-to-many relations through the intermediate model '%s'.zmodels.E003r  )
rb   r   r   r   r  through_fieldsrF  r	   r  r~   )r   r4  seen_intermediary_signaturesr   r   	signatures         r?   r  *Model._check_m2m_through_same_relationship  s     ')$-- TVS VVUA$$&&--	I 8LL?..0066<<=  ( -33I>% & rC   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  )rb   r   rO   r,  primary_keyr	   r  )r   r   r   s      r?   r  Model._check_id_field  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 'rr   zmodels.E005r  z' from model 'zmodels.E006r  )rb   rG  r   r   rO   r  rF  r	   r  r   
get_fieldsr   r"  )r   r4  used_fieldsr   r   clashru   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(	 #$%&		"' (* rC   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  )rb   r   r  rF  r	   r  rO   )r   used_column_namesr4  r   column_names        r?   r   Model._check_column_name_clashes  s}     ''A((K {?LL,-FFKAC( "((5 (" rC   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$ )Nrv  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)rG   
startswithendswithrF  r	   r  r   )r   r4  r   s      r?   r  )Model._check_model_name_db_lookup_clashes  s    \\
  %%)<)<S)A)AMMCEOP$	"  :%MM@BLM$	 rC   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   )ro  related_modelr  r   s     r?   rj   LModel._check_property_name_related_field_accessor_clashes.<locals>.<genexpr>4  s0      #
9}} !" AII9s   <<<Freversez8The property '%s' clashes with a related field accessor.zmodels.E025r  )rb   r  _get_fieldsrF  r	   r  )r   r4  r  related_field_accessorsaccessors        r?   r  9Model._check_property_name_related_field_accessor_clashes0  s|    22#
YY**5*9#

 0H)LL$&./(	 0 rC   c                     / n[        S U R                  R                   5       5      S:  a%  UR                  [        R
                  " SU SS95        U$ )Nc              3   H   #    U H  oR                   (       d  M  S v   M     g7f)r  N)r  r   s     r?   rj   2Model._check_single_primary_key.<locals>.<genexpr>H  s     B0QMMqq0s   "	"r  zBThe model cannot have more than one field with 'primary_key=True'.zmodels.E026r  )sumrb   r   rF  r	   r  r  s     r?   r  Model._check_single_primary_keyE  sN    B#))00BBQFMM*$	 rC   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   V   #    U H   n[        U[        [        45      (       + v   M"     g 7fr   )rx   r   r  )rh   r   s     r?   rj   /Model._check_unique_together.<locals>.<genexpr>_  s(      
3 6E4=1113s   ')z7All 'unique_together' elements must be lists or tuples.zmodels.E011rE  )
rx   rb   rE  r   r  r	   r  r   r1  _check_local_fields)r   r4  r   s      r?   r  Model._check_unique_togetherS  s     #))33eT]CC@$   
))33
 
 

 M$  F))33c55f>OPQ 4MrC   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   rb   r   r1  rR  )r   r  r4  r   r   r   s         r?   r  Model._check_indexesq  s^    B--b66$RJ**ekk#:; +	  rC   c                 l   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 G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        Mb  [        XSR                  5      (       a3  UR                  [        R                  " U< SU< SU< S3U SS95        M  [        UR                  [        5      (       ab  XPR                  R                  ;  aI  [!        UR"                  5      S:  a0  UR                  [        R                  " U< SU< S3U SS95        GM0  XPR                  R$                  ;  aJ  UR                  [        R                  " SU< SU< SU R                  R&                  < S	3SU SS95        GM  G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 'rr   zmodels.E013r  z! refers to a CompositePrimaryKey z0, but CompositePrimaryKeys are not permitted in rM   zmodels.E048r  z refers to a ForeignObject zE with multiple 'from_fields', which is not supported for that option.zmodels.E049z' 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  rb   r  rO   rX   r  rx   r   ManyToManyRelrF  r	   r  r!   r"   r  r  r  r   r=  r  )r   r   optionr  forward_fields_mapr   r4  r  s           r?   r  Model._check_local_fields|  s   $  YY**5*9E-2uzz*ui((495==1 :
  J>*6 e00&2F2FGGMM !' * & !$,
  'A'ABBMM%j(I)n -,,2:Q8 !$, u113CDDYY%D%DDE--.2MM%j(CJ> R& & !$, ))"8"88MM'-z399;P;PR!W #, 9m !@ {  LL #&
  (
 
s   !G668H32H3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   b   #    U H&  n[        U[        5      (       d  M  US :w  d  M"  Uv   M(     g7f)?N)rx   rZ  r   s     r?   rj   (Model._check_ordering.<locals>.<genexpr>  s#     GVz!S'9!a3h!!Vs   //	/c              3   @   #    U H  oR                  S 5      v   M     g7f)r   N)removeprefixr   s     r?   rj   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   )rt   rn  rO   r  r   related_query_namer   s     r?   rj   r  !	  sQ        BA NN1:: VVQYY'''44689 Bs   A!A#)rb   _ordering_clashr	   r  r   rp   rx   r  r   r   rF  r  r,  r  ro  
path_infosto_optsr   r   AttributeErrorget_transform
get_lookupr   r   from_iterabler   rt  r1  )r   r4  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   opsmax_name_lengthr  truncates_namesrb   r   	db_columnr  r  rF  r	   r  r   rx   r   r  rZ  )r   r  r4  allowed_lendb_aliasr   r   r  r   r  m2mrel_names               r?   r  Model._check_long_column_names8	  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 rC   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)rx   r*   childrenr   r  r   r  r)   rO   rX   r   )r   exprchildlookuprY   src_exprs         r?   r  Model._get_expr_references	  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   rb   rO  r1  rR  )r   r  r4  r   r   rT  s         r?   r  Model._check_constraints	  s`    B--b66$RJ!ii33
j..s?@ 4	  rC   )r  rd  r  r   )NNN)FFFNN)FNFFNNr   )NTT)KrG   rH   rI   rJ   r  classmethodr%  r@   rE   r2  r7  rA  r:  rR  rU  rY  r   r,  r5  ra  r|  r  r  r  alters_datar  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r&  r)  r8  r-  r.  r/  rd  r[  ry  r  r  r  rR  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rK   r_   r   s   @r?   r   r     sK   q2f 
 
<E!
1"$,.; 
+{	+B

R/h

,( D
L D
 
 E * DL !I HL-b GR%:N
34l	" F
 G
*(.,\M* B*H/b>
"@*(-*^*8 " "H 8 8t  ,  4 
 
     # #J  $ C CJ  2  .  (    :   L L\ j jX M M^ > >  rC   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<   )rb   r   get_forward_related_filterr   rj  rl  bulk_update	enumerate)r>   ordered_objid_listrk  	order_wrtr  r	  r,  s           r?   method_set_orderr3  	  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<   )rb   r   r-  r,  rO   r   rl  values_list)r>   r0  r2  r  pk_names        r?   method_get_orderr8  	  sd    !!77I66t<K""''G%%44@@t@TTrC   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   rG   lowerr   r8  r3  )r   r  s     r?   r   r   	  sZ    --//&.
 --//&.rC   c                 z    [        U [        5      (       a  [        R                  " U 6 nOU nUR	                  U5      $ )z7Used to unpickle Model subclasses with deferred fields.)rx   r   r   r  rw   )model_idr   s     r?   r>  r>  	  s3    (E"") ==rC   Tr   )_r   rV   rN  collectionsr   	functoolsr   	itertoolsr   asgiref.syncr   r;  django.appsr   django.confr   django.corer	   django.core.exceptionsr
   r   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.compositer!   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.utilsr0   r1   django.utils.encodingr2   django.utils.hashabler3   django.utils.textr4   r5   django.utils.translationr6   rv  r8   r  rS   rZ   rN   r\   r   r   r   r3  r8  r   r>  __safe_for_unpickle__r<   rC   r?   <module>rV     s       # #  &         W V 1 8 8 A  0 , , '  @ + / 5 6" " :$P
l) l)^ 	5 	5@J) @T>U
$  (, $rC   