ó
    ®RjvÂ  ã                   ó"  • 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
  S SKJr  S SKJ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  S SKJr  S SKJr  S SKJr  S rS r S r!S r" " S S5      r# " S S\#5      r$ " S S\#5      r%S r&S r'S r(g)é    N)Úchain)Úapps)Úsettings)ÚNotRelationFieldÚflattenÚget_fields_from_path)Úchecks)ÚFieldDoesNotExist)Úmodels)Ú
LOOKUP_SEP)Ú
Combinable)ÚBaseModelFormÚBaseModelFormSetÚ_get_foreign_key)Úengines)ÚDjangoTemplates)Úimport_stringc                 ó:   •  [        X5      $ ! [         a     gf = f)zL
issubclass() variant that doesn't raise an exception if cls isn't a
class.
F)Ú
issubclassÚ	TypeError)ÚclsÚ	classinfos     ÚGD:\diplom_project\venv\Lib\site-packages\django/contrib/admin/checks.pyÚ_issubclassr      s$   € ð
Ü˜#Ó)Ð)øÜó Ùðús   ‚
 �
™c                 óŠ   • [        U 5      nU H!  n [        U5      n[        XB5      (       d  M!    g   g! [         a     M3  f = f)zp
Return whether or not a dotted class path (or a subclass of that class) is
found in a list of candidate paths.
TF)r   ÚImportErrorr   )Ú
class_pathÚcandidate_pathsr   ÚpathÚcandidate_clss        r   Ú_contains_subclassr!      sP   € ô
 ˜
Ó
#€CÛˆð	Ü)¨$Ó/ˆMô �}×*Ó*Ùñ  ð øô ó 	âð	ús   ’4´
AÁAc                 óh   • SSK Jn  / nU H#  nUR                  UR                  U 5      5        M%     U$ )Nr   ©Ú	all_sites)Údjango.contrib.admin.sitesr$   ÚextendÚcheck)Úapp_configsÚkwargsr$   ÚerrorsÚsites        r   Úcheck_admin_appr,   .   s.   € Ý4à€FÛˆØ�‰�d—j‘j Ó-Ö.ñ à€Mó    c                  ó  • SSK Jn  [        R                  " S5      (       d  / $ / nSnU HL  u  pE[        R                  " U5      (       a  M"  UR	                  [
        R                  " SU-  SU-  S95        MN     [        R                  " 5        H&  n[        U[        5      (       d  M  UR                  n  O   SnU(       d%  UR	                  [
        R                  " S	S
S95        OÔSUR                  ;  aC  [        S[        R                  5      (       a$  UR	                  [
        R                  " SSS95        SUR                  ;  a$  UR	                  [
        R                  " SSS95        [!        S U 5       5      nU(       a4  SUR                  ;  a$  UR	                  [
        R"                  " SSS95        [        S[        R$                  5      (       d$  UR	                  [
        R                  " SSS95        [        S[        R$                  5      (       d$  UR	                  [
        R                  " SSS95        [        S[        R$                  5      (       d%  UR	                  [
        R                  " SSSS 95        U$ )!z>
Check that the admin's dependencies are correctly installed.
r   r#   zdjango.contrib.admin))zdjango.contrib.contenttypesi‘  )zdjango.contrib.authi•  )zdjango.contrib.messagesi–  zE'%s' must be in INSTALLED_APPS in order to use the admin application.z	admin.E%d)ÚidNzƒA 'django.template.backends.django.DjangoTemplates' instance must be configured in TEMPLATES in order to use the admin application.z
admin.E403z+django.contrib.auth.context_processors.authz)django.contrib.auth.backends.ModelBackendz¥'django.contrib.auth.context_processors.auth' must be enabled in DjangoTemplates (TEMPLATES) if using the default auth backend in order to use the admin application.z
admin.E402z3django.contrib.messages.context_processors.messagesz‹'django.contrib.messages.context_processors.messages' must be enabled in DjangoTemplates (TEMPLATES) in order to use the admin application.z
admin.E404c              3   ó8   #   • U  H  oR                   v •  M     g 7f©N)Úenable_nav_sidebar)Ú.0r+   s     r   Ú	<genexpr>Ú%check_dependencies.<locals>.<genexpr>z   s   é € ÐLÂ)¸$×5Ö5Â)ùs   ‚z*django.template.context_processors.requestz‰'django.template.context_processors.request' must be enabled in DjangoTemplates (TEMPLATES) in order to use the admin navigation sidebar.z
admin.W411z7django.contrib.auth.middleware.AuthenticationMiddlewarezv'django.contrib.auth.middleware.AuthenticationMiddleware' must be in MIDDLEWARE in order to use the admin application.z
admin.E408z4django.contrib.messages.middleware.MessageMiddlewarezs'django.contrib.messages.middleware.MessageMiddleware' must be in MIDDLEWARE in order to use the admin application.z
admin.E409z4django.contrib.sessions.middleware.SessionMiddlewarezs'django.contrib.sessions.middleware.SessionMiddleware' must be in MIDDLEWARE in order to use the admin application.zInsert 'django.contrib.sessions.middleware.SessionMiddleware' before 'django.contrib.auth.middleware.AuthenticationMiddleware'.z
admin.E410)Úhintr/   )r%   r$   r   Úis_installedÚappendr	   ÚErrorr   ÚallÚ
isinstancer   ÚengineÚcontext_processorsr!   r   ÚAUTHENTICATION_BACKENDSÚanyÚWarningÚ
MIDDLEWARE)	r)   r$   r*   Úapp_dependenciesÚapp_nameÚ
error_coder<   Údjango_templates_instanceÚsidebar_enableds	            r   Úcheck_dependenciesrG   7   sm  € õ 5ä×ÒÐ3×4Ñ4Øˆ	Ø€FðÐó
 !1ÑˆÜ× Ò  ×*Ó*Ø�M‰MÜ—’ð#Ø%-ñ.à" ZÑ/ñöñ !1ô —+’+–-ˆÜ�fœo×.Ó.Ø(.¯©Ð%Ùñ  ð
 %)Ð!Þ$Ø�‰Ü�LŠLðð  ñ	õ	
ð :Ø,×?Ñ?ó@ä"Ø;Ü×0Ñ0÷ñ ð
 �M‰MÜ—’ðJð $ñ	ôð BØ,×?Ñ?ó@ð �M‰MÜ—’ð-ð $ñ	ôô ÑLÁ)ÓLÓLˆæØ<Ø,×?Ñ?ó@ð �M‰MÜ—’ð*ð $ñ	ôô ØAÄ8×CVÑCV÷ñ ð 	�‰Ü�LŠLðJàñô	
ô Ø>Ä×@SÑ@S÷ñ ð 	�‰Ü�LŠLðJàñô	
ô Ø>Ä×@SÑ@S÷ñ ð 	�‰Ü�LŠLðJðQð
  ñ
ô	
ð €Mr-   c                   ó¶   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚBaseModelAdminChecksé°   c                 óÀ  • / U R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R	                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      Q$ r1   )Ú_check_autocomplete_fieldsÚ_check_raw_id_fieldsÚ_check_fieldsÚ_check_fieldsetsÚ_check_excludeÚ_check_formÚ_check_filter_verticalÚ_check_filter_horizontalÚ_check_radio_fieldsÚ_check_prepopulated_fieldsÚ_check_view_on_site_urlÚ_check_orderingÚ_check_readonly_fields)ÚselfÚ	admin_objr)   s      r   r'   ÚBaseModelAdminChecks.check±   s  € ð
Ø×,Ñ,¨YÓ7ð
à×&Ñ& yÓ1ð
ð ×Ñ 	Ó*ð
ð ×"Ñ" 9Ó-ð	
ð
 × Ñ  Ó+ð
ð ×Ñ˜iÓ(ð
ð ×(Ñ(¨Ó3ð
ð ×*Ñ*¨9Ó5ð
ð ×%Ñ% iÓ0ð
ð ×,Ñ,¨YÓ7ð
ð ×)Ñ)¨)Ó4ð
ð ×!Ñ! )Ó,ð
ð ×(Ñ(¨Ó3ð
ð 	
r-   c                 ó$  • [        UR                  [        [        45      (       d  [	        SSUSS9$ [        [
        R                  " [        UR                  5       VVs/ s H  u  p#U R                  XSU-  5      PM     snn5      5      $ s  snnf )zF
Check that `autocomplete_fields` is a list or tuple of model fields.
úa list or tupleÚautocomplete_fieldsz
admin.E036©ÚoptionÚobjr/   zautocomplete_fields[%d])	r;   r^   ÚlistÚtupleÚmust_ber   Úfrom_iterableÚ	enumerateÚ_check_autocomplete_fields_item)rY   ra   ÚindexÚ
field_names       r   rL   Ú/BaseModelAdminChecks._check_autocomplete_fieldsÂ   s�   € ô ˜#×1Ñ1´D¼%°=×AÑAÜØ!Ø,ØØñ	ð ô Ü×#Ò#ô
 2;¸3×;RÑ;RÔ1Sô	ò 2TÑ-˜Eð ×<Ñ<ØÐ-FÈÑ-Nöñ 2Tò	óó	ð 	ùós   Á!Bc                 óð  •  UR                   R                  R                  U5      nUR                  (       d+  [	        U[
        R                  5      (       d  [        SUUSS9$ UR                  R                  R                  UR                  R                   5      nUc[  [        R                  " SUR                  R                   R                  < S[        U5      R                  < S3UR                   SS9/$ UR"                  (       dP  [        R                  " UR                   R                  < S	[        U5      R                  < S3UR                   S
S9/$ / $ ! [$         a    ['        X#USS9s $ f = f)z™
Check that an item in `autocomplete_fields` is a ForeignKey or a
ManyToManyField and that the item has a related ModelAdmin with
search_fields defined.
ú%a foreign key or a many-to-many fieldz
admin.E038r_   zAn admin for model "z+" has to be registered to be referenced by z.autocomplete_fields.z
admin.E039©ra   r/   z9 must define "search_fields", because it's referenced by z
admin.E040z
admin.E037©Úfieldr`   ra   r/   )ÚmodelÚ_metaÚ	get_fieldÚmany_to_manyr;   r   Ú
ForeignKeyrd   Ú
admin_siteÚ	_registryÚgetÚremote_fieldr	   r9   Ú__name__ÚtypeÚ	__class__Úsearch_fieldsr
   Úrefer_to_missing_field)rY   ra   ri   Úlabelro   Úrelated_admins         r   rg   Ú4BaseModelAdminChecks._check_autocomplete_fields_itemÙ   sK  € ð)	Ø—I‘I—O‘O×-Ñ-¨jÓ9ˆEð ×%×%¬j¸Ä×@QÑ@Q×.RÑ.RÜØ;Ø ØØ#ñ	ð ð  ŸN™N×4Ñ4×8Ñ8¸×9KÑ9K×9QÑ9QÓRˆMØÑ$ä—L“Lð "×.Ñ.×4Ñ4×=Ô=Ü  ›I×.Ô.ð	ð  ŸM™MØ'ñ	ðð ð #×0×0ä—L’Lð *×3Ñ3×<Ô<Ü  ›I×.Ô.ð	ð  ŸM™MØ'ñ	ðð ð ˆIøôO !ó 	Ü)Ø °C¸Lñò ð	ús   ‚%E ÅE5Å4E5c                 óâ   ^ ^• [        TR                  [        [        45      (       d  [	        SSTSS9$ [        [
        R                  " UU 4S j[        TR                  5       5       5      5      $ )zRCheck that `raw_id_fields` only contains field names that are listed
on the model.r]   Úraw_id_fieldsz
admin.E001r_   c              3   óT   >#   • U  H  u  pTR                  TUS U-  5      v •  M     g7f)zraw_id_fields[%d]N)Ú_check_raw_id_fields_item©r3   rh   ri   ra   rY   s      €€r   r4   Ú<BaseModelAdminChecks._check_raw_id_fields.<locals>.<genexpr>  s>   øé € ð $ò .JÑ)˜ð ×2Ñ2Ø˜ZÐ)<¸uÑ)D÷ð ò .Jùó   ƒ%()r;   r‚   rb   rc   rd   r   re   rf   ©rY   ra   s   ``r   rM   Ú)BaseModelAdminChecks._check_raw_id_fields
  si   ù€ ô ˜#×+Ñ+¬d´E¨]×;Ñ;ÜØ!¨/¸sÀ|ñð ô Ü×#Ò#õ $ô .7°s×7HÑ7HÔ-Ió	$ó óð r-   c                 ó8  •  UR                   R                  R                  U5      nUR                  U:w  a  [	        UUUSS9$ UR
                  (       d+  [        U[        R                  5      (       d  [        SUUSS9$ / $ ! [         a    [	        X#USS9s $ f = f)zŒCheck an item of `raw_id_fields`, i.e. check that field named
`field_name` exists in model `model` and is a ForeignKey or a
ManyToManyField.z
admin.E002rn   rl   z
admin.E003r_   )rp   rq   rr   Únamer}   rs   r;   r   rt   rd   r
   ©rY   ra   ri   r~   ro   s        r   r„   Ú.BaseModelAdminChecks._check_raw_id_fields_item  s¨   € ð
	Ø—I‘I—O‘O×-Ñ-¨jÓ9ˆEð �z‰z˜ZÓ'Ü-Ø$Ø ØØ#ñ	ð ð ×%×%¬j¸Ä×@QÑ@Q×.RÑ.RÜØ;Ø ØØ#ñ	ð ð �	øô+ !ó 	Ü)Ø °C¸Lñò ð	ús   ‚%B ÂBÂBc                 ó   ^ ^• TR                   c  / $ [        TR                   [        [        45      (       d  [	        SSTSS9$ TR
                  (       a!  [        R                  " STR                  SS9/$ [        TR                   5      n[        U5      [        [        U5      5      :w  a!  [        R                  " STR                  S	S9/$ [        [        R                  " UU 4S
 jTR                    5       5      5      $ )zŒCheck that `fields` only refer to existing fields, doesn't contain
duplicates. Check if at most one of `fields` and `fieldsets` is defined.
r]   Úfieldsz
admin.E004r_   z,Both 'fieldsets' and 'fields' are specified.z
admin.E005rm   z2The value of 'fields' contains duplicate field(s).z
admin.E006c              3   óJ   >#   • U  H  nTR                  TUS 5      v •  M     g7f)r�   N©Ú_check_field_spec)r3   ri   ra   rY   s     €€r   r4   Ú5BaseModelAdminChecks._check_fields.<locals>.<genexpr>V  s*   øé € ð  â",�Jð ×&Ñ& s¨J¸×AÐAÚ",ùs   ƒ #)r�   r;   rb   rc   rd   Ú	fieldsetsr	   r9   r{   r   ÚlenÚsetr   re   )rY   ra   r�   s   `` r   rN   Ú"BaseModelAdminChecks._check_fields:  sÛ   ù€ ð
 �:‰:ÑØˆIÜ˜CŸJ™J¬¬u¨×6Ñ6ÜÐ,°XÀ3È<ÑXÐXØ�]�]ä—’ØBØŸ™Ø#ñðð ô ˜Ÿ™Ó$ˆÜˆv‹;œ#œc &›kÓ*Ó*ä—’ØHØŸ™Ø#ñðð ô Ü×Òõ  à"%§*¢*ó ó ó
ð 	
r-   c                 ó  ^ ^^• TR                   c  / $ [        TR                   [        [        45      (       d  [	        SSTSS9$ / m[        [
        R                  " UUU 4S j[        TR                   5       5       5      5      $ )zJCheck that fieldsets is properly formatted and doesn't contain
duplicates.r]   r”   z
admin.E007r_   c              3   óV   >#   • U  H  u  pTR                  TUS U-  T5      v •  M      g7f)zfieldsets[%d]N)Ú_check_fieldsets_item)r3   rh   Úfieldsetra   Úseen_fieldsrY   s      €€€r   r4   Ú8BaseModelAdminChecks._check_fieldsets.<locals>.<genexpr>i  s>   øé € ð $ò ,D™˜ð ×.Ñ.Ø˜X ¸Ñ'>À÷ð ò ,Dùs   ƒ&))r”   r;   rb   rc   rd   r   re   rf   )rY   ra   rœ   s   ``@r   rO   Ú%BaseModelAdminChecks._check_fieldsets\  sy   ú€ ð �=‰=Ñ ØˆIÜ˜CŸM™M¬D´%¨=×9Ñ9ÜØ!¨+¸3À<ñð ð ˆKÜÜ×#Ò#ö $ô ,5°S·]±]Ô+Có	$ó óð r-   c                 óÀ  ^ ^^• [        U[        [        45      (       d  [        STTSS9$ [	        U5      S:w  a  [        STTSS9$ [        US   [
        5      (       d  [        SS	T-  TS
S9$ SUS   ;  a$  [        R                  " ST-  TR                  SS9/$ [        US   S   [        [        45      (       d  [        SST-  TSS9$ UR                  [        US   S   5      5        [	        U5      [	        [        U5      5      :w  a$  [        R                  " ST-  TR                  SS9/$ [        [        R                  " UUU 4S jUS   S    5       5      5      $ )ztCheck an item of `fieldsets`, i.e. check that this is a pair of a
set name and a dictionary containing "fields" key.r]   z
admin.E008r_   é   zof length 2z
admin.E009é   úa dictionaryú%s[1]z
admin.E010r�   z3The value of '%s[1]' must contain the key 'fields'.z
admin.E011rm   z%s[1]['fields']z(There are duplicate field(s) in '%s[1]'.z
admin.E012c              3   óP   >#   • U  H  nTR                  TUS T-  5      v •  M     g7f)z%s[1]["fields"]Nr‘   )r3   Úfieldset_fieldsr~   ra   rY   s     €€€r   r4   Ú=BaseModelAdminChecks._check_fieldsets_item.<locals>.<genexpr>—  s1   øé € ð  â'<�Oð ×&Ñ& s¨OÐ=NÐQVÑ=V×WÐWÚ'<ùs   ƒ#&)r;   rb   rc   rd   r•   Údictr	   r9   r{   r&   r   r–   r   re   )rY   ra   r›   r~   rœ   s   `` ` r   rš   Ú*BaseModelAdminChecks._check_fieldsets_itemq  sp  ú€ ô ˜(¤T¬5 M×2Ñ2ÜÐ,°UÀÈÑUÐUÜ�‹]˜aÓÜ˜=°¸CÀLÑQÐQÜ˜H Q™K¬×.Ñ.ÜØ w°¡¸CÀLñð ð ˜X a™[Ó(ä—’ØIÈEÑQØŸ™Ø#ñðð ô ˜H Q™K¨Ñ1´D¼%°=×AÑAÜØ!Ø(¨5Ñ0ØØñ	ð ð 	×Ñœ7 8¨A¡;¨xÑ#8Ó9Ô:Üˆ{Óœs¤3 {Ó#3Ó4Ó4ä—’Ø>ÀÑFØŸ™Ø#ñðð ô Ü×Òö  à'/°¡{°8Ò'<ó ó ó
ð 	
r-   c                 óÀ   ^ ^^• [        U[        5      (       a4  [        [        R                  " UUU 4S j[        U5       5       5      5      $ T R                  TUT5      $ )z¢`fields` should be an item of `fields` or an item of
fieldset[1]['fields'] for any `fieldset` in `fieldsets`. It should be a
field name or a tuple of field names.c              3   óX   >#   • U  H  u  pTR                  TUS TU4-  5      v •  M!     g7f)z%s[%d]N)Ú_check_field_spec_item)r3   rh   ri   r~   ra   rY   s      €€€r   r4   Ú9BaseModelAdminChecks._check_field_spec.<locals>.<genexpr>¤  s?   øé € ð $ò .?Ñ)˜ð ×/Ñ/Ø˜Z¨°U¸E°NÑ)B÷ð ò .?ùs   ƒ'*)r;   rc   rb   r   re   rf   r«   )rY   ra   r�   r~   s   `` `r   r’   Ú&BaseModelAdminChecks._check_field_spec�  sX   ú€ ô
 �fœe×$Ñ$ÜÜ×#Ò#ö $ô .7°vÔ->ó	$ó óð ð ×.Ñ.¨s°F¸EÓBÐBr-   c                 óˆ  • X!R                   ;   a  / $  UR                  R                  R                  U5      n[	        U[
        R                  5      (       aY  UR                  R                  R                  R                  (       d*  [        R                  " SU< SU< S3UR                  SS9/$ / $ ! [         a    / s $ f = f)NúThe value of 'z&' cannot include the ManyToManyField 'z>', because that field manually specifies a relationship model.z
admin.E013rm   )Úreadonly_fieldsrp   rq   rr   r;   r   ÚManyToManyFieldrx   ÚthroughÚauto_createdr	   r9   r{   r
   rŒ   s        r   r«   Ú+BaseModelAdminChecks._check_field_spec_item®  s²   € Ø×,Ñ,Ó,ð ˆIðØŸ	™	Ÿ™×1Ñ1°*Ó=�ô ˜u¤f×&<Ñ&<×=Ñ=Ø!×.Ñ.×6Ñ6×<Ñ<×I×Iô Ÿ›ó 6;»JðHð !$§¡Ø+ñðð ð �Iøô' %ó ð ’	ðús   “%B2 Â2CÃ Cc                 ó2  • UR                   c  / $ [        UR                   [        [        45      (       d  [	        SSUSS9$ [        UR                   5      [        [        UR                   5      5      :”  a!  [        R                  " SUR                  SS9/$ / $ )z4Check that exclude is a sequence without duplicates.r]   Úexcludez
admin.E014r_   z3The value of 'exclude' contains duplicate field(s).z
admin.E015rm   )
r¶   r;   rb   rc   rd   r•   r–   r	   r9   r{   rˆ   s     r   rP   Ú#BaseModelAdminChecks._check_excludeÌ  s‰   € ð �;‰;ÑØˆIÜ˜CŸK™K¬$´¨×7Ñ7ÜØ!¨)¸Àñð ô �—‘Ó¤¤C¨¯©Ó$4Ó 5Ó5ä—’ØIØŸ™Ø#ñðð ð ˆIr-   c                 ó\   • [        UR                  [        5      (       d  [        SSUSS9$ / $ )z)Check that form subclasses BaseModelForm.r   Úformz
admin.E016©Úparentr`   ra   r/   )r   r¹   r   Úmust_inherit_fromrˆ   s     r   rQ   Ú BaseModelAdminChecks._check_formà  s0   € ä˜3Ÿ8™8¤]×3Ñ3Ü$Ø&¨v¸3À<ñð ð ˆIr-   c                 óâ   ^ ^• [        TR                  [        [        45      (       d  [	        SSTSS9$ [        [
        R                  " UU 4S j[        TR                  5       5       5      5      $ )z8Check that filter_vertical is a sequence of field names.r]   Úfilter_verticalz
admin.E017r_   c              3   óT   >#   • U  H  u  pTR                  TUS U-  5      v •  M     g7f)zfilter_vertical[%d]N©Ú_check_filter_itemr…   s      €€r   r4   Ú>BaseModelAdminChecks._check_filter_vertical.<locals>.<genexpr>ñ  s>   øé € ð $ò .LÑ)˜ð ×+Ñ+Ø˜ZÐ)>ÀÑ)F÷ð ò .Lùr‡   )r;   r¿   rb   rc   rd   r   re   rf   rˆ   s   ``r   rR   Ú+BaseModelAdminChecks._check_filter_verticalé  sh   ù€ ä˜#×-Ñ-´´e¨}×=Ñ=ÜØ!Ð*;ÀÈñð ô Ü×#Ò#õ $ô .7°s×7JÑ7JÔ-Kó	$ó óð r-   c                 óâ   ^ ^• [        TR                  [        [        45      (       d  [	        SSTSS9$ [        [
        R                  " UU 4S j[        TR                  5       5       5      5      $ )z:Check that filter_horizontal is a sequence of field names.r]   Úfilter_horizontalz
admin.E018r_   c              3   óT   >#   • U  H  u  pTR                  TUS U-  5      v •  M     g7f)zfilter_horizontal[%d]NrÁ   r…   s      €€r   r4   Ú@BaseModelAdminChecks._check_filter_horizontal.<locals>.<genexpr>  s>   øé € ð $ò .NÑ)˜ð ×+Ñ+Ø˜ZÐ)@À5Ñ)H÷ð ò .Nùr‡   )r;   rÆ   rb   rc   rd   r   re   rf   rˆ   s   ``r   rS   Ú-BaseModelAdminChecks._check_filter_horizontalù  sh   ù€ ä˜#×/Ñ/´$¼°×?Ñ?ÜØ!Ð*=À3È<ñð ô Ü×#Ò#õ $ô .7°s×7LÑ7LÔ-Mó	$ó óð r-   c                 óÀ   •  UR                   R                  R                  U5      nUR                  (       d  [	        SX1SS9$ / $ ! [
         a    [        X#USS9s $ f = f)zxCheck one item of `filter_vertical` or `filter_horizontal`, i.e.
check that given field exists and is a ManyToManyField.za many-to-many fieldz
admin.E020r_   z
admin.E019rn   )rp   rq   rr   rs   rd   r
   r}   rŒ   s        r   rÂ   Ú'BaseModelAdminChecks._check_filter_item	  sj   € ð	Ø—I‘I—O‘O×-Ñ-¨jÓ9ˆEð ×%×%ÜØ*°5Àlñð ð �	øô !ó 	Ü)Ø °C¸Lñò ð	ús   ‚%A ÁAÁAc                 óà   ^ ^• [        TR                  [        5      (       d  [        SSTSS9$ [	        [
        R                  " UU 4S jTR                  R                  5        5       5      5      $ )z*Check that `radio_fields` is a dictionary.r¢   Úradio_fieldsz
admin.E021r_   c              3   ó|   >#   • U  H1  u  pTR                  TUS 5      TR                  TUSU-  5      -   v •  M3     g7f)rÍ   zradio_fields["%s"]N)Ú_check_radio_fields_keyÚ_check_radio_fields_value©r3   ri   Úvalra   rY   s      €€r   r4   Ú;BaseModelAdminChecks._check_radio_fields.<locals>.<genexpr>#  sO   øé € ð $ò
 ,D™˜
ð	 ×0Ñ0°°jÀ.ÓQØ×4Ñ4Ø˜SÐ"6¸Ñ"Cóöò ,Dùó   ƒ9<)r;   rÍ   r§   rd   rb   r   re   Úitemsrˆ   s   ``r   rT   Ú(BaseModelAdminChecks._check_radio_fields  sg   ù€ ä˜#×*Ñ*¬D×1Ñ1ÜØ ~¸3À<ñð ô Ü×#Ò#õ $ð
 ,/×+;Ñ+;×+AÑ+AÔ+Có$ó óð r-   c                 ó<  •  UR                   R                  R                  U5      n[        U[        R
                  5      (       d;  UR                  (       d*  [        R                  " SU< SU< S3UR                  SS9/$ / $ ! [         a    [        X#USS9s $ f = f)z„Check that a key of `radio_fields` dictionary is name of existing
field and that the field is a ForeignKey or has `choices` defined.r¯   ú' refers to 'zT', which is not an instance of ForeignKey, and does not have a 'choices' definition.z
admin.E023rm   z
admin.E022rn   )rp   rq   rr   r;   r   rt   Úchoicesr	   r9   r{   r
   r}   rŒ   s        r   rÏ   Ú,BaseModelAdminChecks._check_radio_fields_key,  s”   € ð	Ø—I‘I—O‘O×-Ñ-¨jÓ9ˆEô ˜u¤f×&7Ñ&7×8Ñ8¸E¿M¿Mä—L“Ló */³
ð<ð  ŸM™MØ'ñðð ð �	øô! !ó 	Ü)Ø °C¸Lñò ð	ús   ‚%B ÂBÂBc                 ól   • SSK JnJn  X$U4;  a$  [        R                  " SU-  UR
                  SS9/$ / $ )z3Check type of a value of `radio_fields` dictionary.r   )Ú
HORIZONTALÚVERTICALzDThe value of '%s' must be either admin.HORIZONTAL or admin.VERTICAL.z
admin.E024rm   )Údjango.contrib.admin.optionsrÜ   rÝ   r	   r9   r{   )rY   ra   rÒ   r~   rÜ   rÝ   s         r   rÐ   Ú.BaseModelAdminChecks._check_radio_fields_valueD  sG   € ÷ 	Fà 8Ð,Ó,ä—’ð&Ø(-ñ.àŸ™Ø#ñ	ðð ð ˆIr-   c                 óº   • [        UR                  5      (       d@  [        UR                  [        5      (       d!  [        R
                  " SUR                  SS9/$ / $ )NzBThe value of 'view_on_site' must be a callable or a boolean value.z
admin.E025rm   )ÚcallableÚview_on_siter;   Úboolr	   r9   r{   rˆ   s     r   rV   Ú,BaseModelAdminChecks._check_view_on_site_urlU  sQ   € Ü˜×(Ñ(×)Ñ)´*¸S×=MÑ=MÌt×2TÑ2Tä—’ðàŸ™Ø#ñ	ðð ð ˆIr-   c                 óà   ^ ^• [        TR                  [        5      (       d  [        SSTSS9$ [	        [
        R                  " UU 4S jTR                  R                  5        5       5      5      $ )zPCheck that `prepopulated_fields` is a dictionary containing allowed
field types.r¢   Úprepopulated_fieldsz
admin.E026r_   c              3   ó|   >#   • U  H1  u  pTR                  TUS 5      TR                  TUSU-  5      -   v •  M3     g7f)ræ   zprepopulated_fields["%s"]N)Ú_check_prepopulated_fields_keyÚ _check_prepopulated_fields_valuerÑ   s      €€r   r4   ÚBBaseModelAdminChecks._check_prepopulated_fields.<locals>.<genexpr>k  sU   øé € ð $ò ,K™˜
ð ×7Ñ7Ø˜ZÐ)>óð ×;Ñ;Ø˜SÐ"=À
Ñ"Jóöò ,KùrÔ   )r;   ræ   r§   rd   rb   r   re   rÕ   rˆ   s   ``r   rU   Ú/BaseModelAdminChecks._check_prepopulated_fieldsb  sj   ù€ ô ˜#×1Ñ1´4×8Ñ8ÜØÐ'<À#È,ñð ô Ü×#Ò#õ $ð ,/×+BÑ+B×+HÑ+HÔ+Jó$ó ó
ð 
r-   c                 óX  •  UR                   R                  R                  U5      n[        U[        R
                  [        R                  [        R                  45      (       a*  [        R                  " SU< SU< S3UR                  SS9/$ / $ ! [         a    [        X#USS9s $ f = f)z‹Check a key of `prepopulated_fields` dictionary, i.e. check that it
is a name of existing field and the field is one of the allowed types.
r¯   rØ   zZ', which must not be a DateTimeField, a ForeignKey, a OneToOneField, or a ManyToManyField.z
admin.E028rm   z
admin.E027rn   )rp   rq   rr   r;   r   ÚDateTimeFieldrt   r±   r	   r9   r{   r
   r}   rŒ   s        r   rè   Ú3BaseModelAdminChecks._check_prepopulated_fields_keyv  s©   € ð
	Ø—I‘I—O‘O×-Ñ-¨jÓ9ˆEô Øœ×,Ñ,¬f×.?Ñ.?Ä×AWÑAWÐX÷ñ ô —L“Ló /4³ZðAð  ŸM™MØ'ñðð ð �	øô% !ó 	Ü)Ø °C¸Lñò ð	ús   ‚%B ÂB)Â(B)c                 ó¾   ^ ^^• [        U[        [        45      (       d  [        STTSS9$ [        [        R
                  " UUU 4S j[        U5       5       5      5      $ )z\Check a value of `prepopulated_fields` dictionary, i.e. it's an
iterable of existing fields.r]   z
admin.E029r_   c           	   3   ó^   >#   • U  H"  u  pTR                  TUT< S U< S35      v •  M$     g7f)Ú[Ú]N)Ú%_check_prepopulated_fields_value_item)r3   rh   Úsubfield_namer~   ra   rY   s      €€€r   r4   ÚHBaseModelAdminChecks._check_prepopulated_fields_value.<locals>.<genexpr>™  s;   øé € ð $ò 1?Ñ,˜ð ×>Ñ>Ø˜]»»uÐ,E÷ð ò 1?ùs   ƒ*-)r;   rb   rc   rd   r   re   rf   )rY   ra   rÒ   r~   s   `` `r   ré   Ú5BaseModelAdminChecks._check_prepopulated_fields_value‘  sV   ú€ ô ˜#¤¤e˜}×-Ñ-ÜÐ,°UÀÈÑUÐUäÜ×#Ò#ö $ô 1:¸#´ó	$ó óð r-   c                 óˆ   •  UR                   R                  R                  U5        / $ ! [         a    [	        X#USS9s $ f = f)zQFor `prepopulated_fields` equal to {"slug": ("title",)},
`field_name` is "title".z
admin.E030rn   )rp   rq   rr   r
   r}   ©rY   ra   ri   r~   s       r   ró   Ú:BaseModelAdminChecks._check_prepopulated_fields_value_item¡  sI   € ð	Ø�I‰I�O‰O×%Ñ% jÔ1ð ˆIøô !ó 	Ü)Ø °C¸Lñò ð	ús   ‚%) ©AÁ Ac                 ó   ^ ^• TR                   c  / $ [        TR                   [        [        45      (       d  [	        SSTSS9$ [        [
        R                  " UU 4S j[        TR                   5       5       5      5      $ )z;Check that ordering refers to existing fields or is random.r]   Úorderingz
admin.E031r_   c              3   óT   >#   • U  H  u  pTR                  TUS U-  5      v •  M     g7f)zordering[%d]N)Ú_check_ordering_itemr…   s      €€r   r4   Ú7BaseModelAdminChecks._check_ordering.<locals>.<genexpr>º  s3   øé € ð $â-DÑ)˜ð ×-Ñ-¨c°:¸~ÐPUÑ?U×VÐVÚ-Dùr‡   )rû   r;   rb   rc   rd   r   re   rf   rˆ   s   ``r   rW   Ú$BaseModelAdminChecks._check_ordering®  sr   ù€ ð �<‰<ÑØˆIÜ˜CŸL™L¬4´¨-×8Ñ8ÜØ!¨*¸#À,ñð ô Ü×#Ò#õ $ä-6°s·|±|Ô-Dó$ó óð r-   c                 ó¤  • [        U[        [        R                  45      (       aq  [        U[        R                  5      (       d  UR	                  5       n[        UR
                  [        R                  5      (       a  UR
                  R                  nO/ $ US:X  a;  [        UR                  5      S:w  a"  [        R                  " SSUR                  SS9/$ US:X  a  / $ [        U;   a  / $ UR                  S5      (       a  USS nUS	:X  a  / $  UR                  R                   R#                  U5        / $ ! [$         a    ['        X#US
S9s $ f = f)z0Check that `ordering` refers to existing fields.Ú?r¡   z^The value of 'ordering' has the random ordering marker '?', but contains other fields as well.z2Either remove the "?", or remove the other fields.z
admin.E032)r6   ra   r/   Ú-NÚpkz
admin.E033rn   )r;   r   r   ÚOrderByÚascÚ
expressionÚFr‹   r•   rû   r	   r9   r{   r   Ú
startswithrp   rq   rr   r
   r}   rø   s       r   rý   Ú)BaseModelAdminChecks._check_ordering_itemÀ  s0  € ä�j¤:¬v¯~©~Ð">×?Ñ?Ü˜j¬&¯.©.×9Ñ9Ø'Ÿ^™^Ó-�
Ü˜*×/Ñ/´·±×:Ñ:Ø'×2Ñ2×7Ñ7‘
à�	Ø˜Ó¤ S§\¡\Ó!2°aÓ!7ä—’ð9àMØŸ™Ø#ñðð ð ˜3ÓØˆIÜ˜:Ó%ð ˆIà×$Ñ$ S×)Ñ)Ø'¨¨˜^�
Ø˜TÓ!Ø�	ðØ—	‘	—‘×)Ñ)¨*Ô5ð �	øô %ó Ü-Ø$¸Àñò ðús   Ä%D7 Ä7EÅEc                 ó  ^ ^• TR                   S:X  a  / $ [        TR                   [        [        45      (       d  [	        SSTSS9$ [        [
        R                  " UU 4S j[        TR                   5       5       5      5      $ )z?Check that readonly_fields refers to proper attribute or field.© r]   r°   z
admin.E034r_   c              3   óT   >#   • U  H  u  pTR                  TUS U-  5      v •  M     g7f)zreadonly_fields[%d]N)Ú_check_readonly_fields_itemr…   s      €€r   r4   Ú>BaseModelAdminChecks._check_readonly_fields.<locals>.<genexpr>ò  s>   øé € ð $ò .LÑ)˜ð ×4Ñ4Ø˜ZÐ)>ÀÑ)F÷ð ò .Lùr‡   )r°   r;   rb   rc   rd   r   re   rf   rˆ   s   ``r   rX   Ú+BaseModelAdminChecks._check_readonly_fieldsç  s}   ù€ ð ×Ñ "Ó$ØˆIÜ˜C×/Ñ/´$¼°×?Ñ?ÜØ!Ð*;ÀÈñð ô Ü×#Ò#õ $ô .7°s×7JÑ7JÔ-Kó	$ó óð r-   c           
      ó´  • [        U5      (       a  / $ [        X5      (       a  / $ [        UR                  U5      (       a  / $  UR                  R                  R	                  U5        / $ ! [
         ac    [        R                  " SU< SUR                  R                  < SUR                  R                  R                  < S3UR                  SS9/s $ f = f)Nr¯   z&' is not a callable, an attribute of 'z', or an attribute of 'ú'.z
admin.E035rm   )rá   Úhasattrrp   rq   rr   r
   r	   r9   r{   ry   r~   rø   s       r   r  Ú0BaseModelAdminChecks._check_readonly_fields_itemú  sµ   € Ü�J×ÑØˆIÜ�S×%Ñ%ØˆIÜ�S—Y‘Y 
×+Ñ+ØˆIðØ—	‘	—‘×)Ñ)¨*Ô5ð  �	øô %ó ä—L“Ló "ØŸM™M×2Ô2ØŸI™IŸO™O×1Ô1ðð  ŸM™MØ'ñ
ðò ðús   Á%A* Á*A*CÃCr  N) ry   Ú
__module__Ú__qualname__Ú__firstlineno__r'   rL   rg   rM   r„   rN   rO   rš   r’   r«   rP   rQ   rR   rS   rÂ   rT   rÏ   rÐ   rV   rU   rè   ré   ró   rW   rý   rX   r  Ú__static_attributes__r  r-   r   rI   rI   °   sŽ   † ò
ò"ò./òbò$ò< 
òDò**
òXCò"ò<ò(òò ò ò$ò"ò0ò"òò(ò6ò òò$%òNõ&r-   rI   c                   óš   ^ • \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrU =r$ )ÚModelAdminChecksi  c                 ó  >• / [         TU ]  U5      QU R                  U5      QU R                  U5      QU R	                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      Q$ r1   )Úsuperr'   Ú_check_save_asÚ_check_save_on_topÚ_check_inlinesÚ_check_list_displayÚ_check_list_display_linksÚ_check_list_filterÚ_check_list_select_relatedÚ_check_list_per_pageÚ_check_list_max_show_allÚ_check_list_editableÚ_check_search_fieldsÚ_check_date_hierarchyÚ _check_action_permission_methodsÚ_check_actions_uniqueness)rY   rZ   r)   r{   s      €r   r'   ÚModelAdminChecks.check  sB  ø€ ð
Ü‰W‰]˜9Ó%ð
à× Ñ  Ó+ð
ð ×$Ñ$ YÓ/ð
ð × Ñ  Ó+ð	
ð
 ×%Ñ% iÓ0ð
ð ×+Ñ+¨IÓ6ð
ð ×$Ñ$ YÓ/ð
ð ×,Ñ,¨YÓ7ð
ð ×&Ñ& yÓ1ð
ð ×*Ñ*¨9Ó5ð
ð ×&Ñ& yÓ1ð
ð ×&Ñ& yÓ1ð
ð ×'Ñ'¨	Ó2ð
ð ×2Ñ2°9Ó=ð
ð ×+Ñ+¨IÓ6ð
ð 	
r-   c                 ó\   • [        UR                  [        5      (       d  [        SSUSS9$ / $ )zCheck save_as is a boolean.ú	a booleanÚsave_asz
admin.E101r_   )r;   r-  rã   rd   rˆ   s     r   r  ÚModelAdminChecks._check_save_as*  s+   € ô ˜#Ÿ+™+¤t×,Ñ,Ü˜;¨y¸cÀlÑSÐSàˆIr-   c                 ó\   • [        UR                  [        5      (       d  [        SSUSS9$ / $ )zCheck save_on_top is a boolean.r,  Úsave_on_topz
admin.E102r_   )r;   r0  rã   rd   rˆ   s     r   r  Ú#ModelAdminChecks._check_save_on_top2  s+   € ô ˜#Ÿ/™/¬4×0Ñ0Ü˜;¨}À#È,ÑWÐWàˆIr-   c                 óâ   ^ ^• [        TR                  [        [        45      (       d  [	        SSTSS9$ [        [
        R                  " UU 4S j[        TR                  5       5       5      5      $ )z%Check all inline model admin classes.r]   Úinlinesz
admin.E103r_   c              3   óT   >#   • U  H  u  pTR                  TUS U-  5      v •  M     g7f)zinlines[%d]N)Ú_check_inlines_item©r3   rh   Úitemra   rY   s      €€r   r4   Ú2ModelAdminChecks._check_inlines.<locals>.<genexpr>C  s1   øé € ð $â'=™˜ð ×,Ñ,¨S°$¸ÈÑ8M×NÐNÚ'=ùr‡   )r;   r3  rb   rc   rd   r   re   rf   rˆ   s   ``r   r  ÚModelAdminChecks._check_inlines:  sc   ù€ ô ˜#Ÿ+™+¬¬e }×5Ñ5ÜØ!¨)¸Àñð ô Ü×#Ò#õ $ä'0°·±Ô'=ó$ó óð r-   c                 óH  •  UR                   S-   UR                  -   nSSKJn  [        X%5      (       d$  [        R                  " SU-  UR
                  SS9/$ UR                  (       d$  [        R                  " SU-  UR
                  SS9/$ [        UR                  [        R                  5      (       d  [        S	S
U-  USS9$ U" UR                  UR                  5      R                  5       $ ! [         a'    [        R                  " SU-  UR
                  SS9/s $ f = f)zCheck one inline model admin.Ú.z*'%s' must inherit from 'InlineModelAdmin'.z
admin.E104rm   r   )ÚInlineModelAdminz#'%s' must have a 'model' attribute.z
admin.E105za Modelz%s.modelz
admin.E106r_   )r  ry   ÚAttributeErrorr	   r9   r{   rÞ   r<  r   rp   r   ÚModelrd   ru   r'   )rY   ra   Úinliner~   Úinline_labelr<  s         r   r5  Ú$ModelAdminChecks._check_inlines_itemI  s  € ð		Ø!×,Ñ,¨sÑ2°V·_±_ÑDˆLõ 	Bä˜6×4Ñ4ä—’Ø@À<ÑOØŸ™Ø#ñðð ð ——ä—’Ø9¸LÑHØŸ™Ø#ñðð ô ˜VŸ\™\¬6¯<©<×8Ñ8ÜØ *¨|Ñ";ÀÈñð ñ ˜#Ÿ)™) S§^¡^Ó4×:Ñ:Ó<Ð<øôA ó 	ä—’Ø@À3ÑFØŸ™Ø#ñðò ð	ús   ‚C0 Ã0.D!Ä D!c                 óâ   ^ ^• [        TR                  [        [        45      (       d  [	        SSTSS9$ [        [
        R                  " UU 4S j[        TR                  5       5       5      5      $ )zBCheck that list_display only contains fields or usable attributes.r]   Úlist_displayz
admin.E107r_   c              3   óT   >#   • U  H  u  pTR                  TUS U-  5      v •  M     g7f)zlist_display[%d]N)Ú_check_list_display_itemr6  s      €€r   r4   Ú7ModelAdminChecks._check_list_display.<locals>.<genexpr>x  s3   øé € ð $â'B™˜ð ×1Ñ1°#°tÐ=OÐRWÑ=W×XÐXÚ'Bùr‡   )r;   rC  rb   rc   rd   r   re   rf   rˆ   s   ``r   r  Ú$ModelAdminChecks._check_list_displayo  sg   ù€ ô ˜#×*Ñ*¬T´5¨M×:Ñ:ÜØ!¨.¸cÀlñð ô Ü×#Ò#õ $ä'0°×1AÑ1AÔ'Bó$ó óð r-   c                 óZ  • [        U5      (       a  / $ [        X5      (       a  / $  UR                  R                  R	                  U5      n[        U[        R                  5      (       a$  [        R                  " SU-  UR                  S	S9/$ / $ ! [
         a�     [        UR                  U5      n Nh! [         ai    [        R                  " SU< SU< SUR                  R                  < SUR                  R                  R                  < S3	UR                  SS9/s s $ f = ff = f)
Nr¯   rØ   z-', which is not a callable, an attribute of 'z!', or an attribute or method on 'r  z
admin.E108rm   z0The value of '%s' must not be a ManyToManyField.z
admin.E109)rá   r  rp   rq   rr   r
   Úgetattrr=  r	   r9   r{   ry   r~   r;   r   r±   )rY   ra   r7  r~   ro   s        r   rE  Ú)ModelAdminChecks._check_list_display_item~  s  € Ü�D�>‰>ØˆIÜ�S×ÑØˆIð	Ø—I‘I—O‘O×-Ñ-¨dÓ3ˆEô( �eœV×3Ñ3×4Ñ4ä—’ØFÈÑNØŸ™Ø#ñðð ð ˆ	øô7 !ó 	ðÜ §	¡	¨4Ó0’øÜ!ó ä—L“Ló
 "Û ØŸM™M×2Ô2ØŸI™IŸO™O×1Ô1ðð  ŸM™MØ'ñðô ðúð	ús*   ¦%B Â
D*ÂB3Â3A.D&Ä!D*Ä%D&Ä&D*c                 óV  ^ ^• SSK Jn  TR                  c  / $ [        TR                  [        [
        45      (       d  [        SSTSS9$ TR                  R                  UR                  L a=  [	        [        R                  " UU 4S j[        TR                  5       5       5      5      $ / $ )zACheck that list_display_links is a unique subset of list_display.r   )Ú
ModelAdminza list, a tuple, or NoneÚlist_display_linksz
admin.E110r_   c              3   óT   >#   • U  H  u  pTR                  TUS U-  5      v •  M     g7f)zlist_display_links[%d]N)Ú_check_list_display_links_itemr…   s      €€r   r4   Ú=ModelAdminChecks._check_list_display_links.<locals>.<genexpr>²  s>   øé € ð $ò .OÑ)˜ð ×7Ñ7Ø˜ZÐ)AÀEÑ)I÷ð ò .Oùr‡   )rÞ   rL  rM  r;   rb   rc   rd   Úget_list_displayÚ__func__r   re   rf   )rY   ra   rL  s   `` r   r   Ú*ModelAdminChecks._check_list_display_links¢  sŸ   ù€ å;à×!Ñ!Ñ)ØˆIÜ˜C×2Ñ2´T¼5°M×BÑBÜØ*Ø+ØØñ	ð ð ×!Ñ!×*Ñ*¨j×.IÑ.IÒIÜÜ×#Ò#õ $ô .7°s×7MÑ7MÔ-Nó	$ó óð ð ˆ	r-   c                 óx   • X!R                   ;  a*  [        R                  " SU< SU< S3UR                  SS9/$ / $ )Nr¯   rØ   z*', which is not defined in 'list_display'.z
admin.E111rm   )rC  r	   r9   r{   rø   s       r   rO  Ú/ModelAdminChecks._check_list_display_links_item»  s?   € Ø×-Ñ-Ó-ä—“ã).³
ð<àŸ™Ø#ñ	ðð ð ˆIr-   c                 óâ   ^ ^• [        TR                  [        [        45      (       d  [	        SSTSS9$ [        [
        R                  " UU 4S j[        TR                  5       5       5      5      $ )Nr]   Úlist_filterz
admin.E112r_   c              3   óT   >#   • U  H  u  pTR                  TUS U-  5      v •  M     g7f)zlist_filter[%d]N)Ú_check_list_filter_itemr6  s      €€r   r4   Ú6ModelAdminChecks._check_list_filter.<locals>.<genexpr>Ï  s3   øé € ð $â'A™˜ð ×0Ñ0°°dÐ<MÐPUÑ<U×VÐVÚ'Aùr‡   )r;   rW  rb   rc   rd   r   re   rf   rˆ   s   ``r   r!  Ú#ModelAdminChecks._check_list_filterÈ  sa   ù€ Ü˜#Ÿ/™/¬D´%¨=×9Ñ9ÜØ!¨-¸SÀ\ñð ô Ü×#Ò#õ $ä'0°·±Ô'Aó$ó óð r-   c                 óH  • SSK JnJn  [        U5      (       ap  [	        U[
        R                  5      (       dQ  [        X%5      (       d  [        SX1SS9$ [        X$5      (       a$  [        R                  " SU-  UR                  SS9/$ / $ [	        U[        [        45      (       a%  Uu  pg[        Xt5      (       d  [        S	S
U-  USS9$ / $ Un [        UR                   U5        / $ ! ["        [$        4 a-    [        R                  " SU< SU< S3UR                  SS9/s $ f = f)a  
Check one item of `list_filter`, i.e. check if it is one of three options:
1. 'field' -- a basic field filter, possibly w/ relationships (e.g.
   'field__rel')
2. ('field', SomeFieldListFilter) - a field-based list filter class
3. SomeListFilter - a non-field list filter class
r   )ÚFieldListFilterÚ
ListFilterr^  z
admin.E113rº   z:The value of '%s' must not inherit from 'FieldListFilter'.z
admin.E114rm   r]  r£   z
admin.E115r¯   rØ   z#', which does not refer to a Field.z
admin.E116)Údjango.contrib.adminr]  r^  rá   r;   r   ÚFieldr   r¼   r   r	   r9   r{   rc   rb   r   rp   r   r
   )rY   ra   r7  r~   r]  r^  ro   Úlist_filter_classs           r   rY  Ú(ModelAdminChecks._check_list_filter_itemÕ  s*  € ÷ 	Eä�D�>‰>¤*¨T´6·<±<×"@Ñ"@ä˜t×0Ñ0Ü(Ø'°À<ñð ô ˜D×2Ñ2ä—L’LØTØñ àŸM™MØ'ñ	ðð ð �	Ü˜œu¤d˜m×,Ñ,à'+Ñ$ˆEÜÐ0×BÑBÜ(Ø,Ø" U™?ØØ#ñ	ð ð �	ð ˆEðÜ$ S§Y¡Y°Ô6ð �	øô %Ô&7Ð8ó ä—L“Lã$)«5ð2àŸM™MØ'ñ	ðò ðús   ÃC$ Ã$:D!Ä D!c                 ór   • [        UR                  [        [        [        45      (       d  [        SSUSS9$ / $ )z?Check that list_select_related is a boolean, a list or a tuple.za boolean, tuple or listÚlist_select_relatedz
admin.E117r_   )r;   rd  rã   rb   rc   rd   rˆ   s     r   r"  Ú+ModelAdminChecks._check_list_select_related  s>   € ô ˜#×1Ñ1´D¼$ÄÐ3F×GÑGÜØ*Ø,ØØñ	ð ð ˆIr-   c                 ó\   • [        UR                  [        5      (       d  [        SSUSS9$ / $ )z'Check that list_per_page is an integer.ú
an integerÚlist_per_pagez
admin.E118r_   )r;   rh  Úintrd   rˆ   s     r   r#  Ú%ModelAdminChecks._check_list_per_page  s4   € ô ˜#×+Ñ+¬S×1Ñ1ÜØ _¸#À,ñð ð ˆIr-   c                 ó\   • [        UR                  [        5      (       d  [        SSUSS9$ / $ )z+Check that list_max_show_all is an integer.rg  Úlist_max_show_allz
admin.E119r_   )r;   rl  ri  rd   rˆ   s     r   r$  Ú)ModelAdminChecks._check_list_max_show_all'  s5   € ô ˜#×/Ñ/´×5Ñ5ÜØÐ%8¸cÀlñð ð ˆIr-   c                 óâ   ^ ^• [        TR                  [        [        45      (       d  [	        SSTSS9$ [        [
        R                  " UU 4S j[        TR                  5       5       5      5      $ )zbCheck that list_editable is a sequence of editable fields from
list_display without first element.r]   Úlist_editablez
admin.E120r_   c              3   óT   >#   • U  H  u  pTR                  TUS U-  5      v •  M     g7f)zlist_editable[%d]N)Ú_check_list_editable_itemr6  s      €€r   r4   Ú8ModelAdminChecks._check_list_editable.<locals>.<genexpr>;  s=   øé € ð $ò (D™˜ð ×2Ñ2Ø˜TÐ#6¸Ñ#>÷ð ò (Dùr‡   )r;   ro  rb   rc   rd   r   re   rf   rˆ   s   ``r   r%  Ú%ModelAdminChecks._check_list_editable1  si   ù€ ô ˜#×+Ñ+¬d´E¨]×;Ñ;ÜØ!¨/¸sÀ|ñð ô Ü×#Ò#õ $ô (1°×1BÑ1BÔ'Có	$ó óð r-   c                 óê  •  UR                   R                  R                  U5      nX!R                  ;  a*  [        R
                  " SU< SU< S3UR                  SS9/$ UR                  (       a3  X!R                  ;   a$  [        R
                  " SU-  UR                  SS9/$ UR                  S   U:X  aU  UR                  (       dD  UR                  b7  [        R
                  " SU< S	UR                  S   < S
3UR                  SS9/$ UR                  (       a  UR                  (       a*  [        R
                  " SU< SU< S3UR                  SS9/$ / $ ! [         a    [        X#USS9s $ f = f)Nr¯   rØ   z,', which is not contained in 'list_display'.z
admin.E122rm   zMThe value of '%s' cannot be in both 'list_editable' and 'list_display_links'.z
admin.E123r   z0' refers to the first field in 'list_display' ('z<'), which cannot be used unless 'list_display_links' is set.z
admin.E124z+', which is not editable through the admin.z
admin.E125z
admin.E121rn   )rp   rq   rr   rC  r	   r9   r{   rM  ÚeditableÚprimary_keyr
   r}   rŒ   s        r   rq  Ú*ModelAdminChecks._check_list_editable_itemC  si  € ð3	Ø—I‘I—O‘O×-Ñ-¨jÓ9ˆEð ×!1Ñ!1Ó1ä—L“Lã:?ÃðMàŸM™MØ'ñ	ðð ð ×'×'¨J×:PÑ:PÓ,Pä—L’Lð0Ø2<ñ=àŸM™MØ'ñ	ðð ð × Ñ  Ñ# zÓ1Ø×.×.Ø×*Ñ*Ñ6ô —L“Ló #(¨×)9Ñ)9¸!Ô)<ð>ð  ŸM™MØ'ñðð ð —^—^ u×'8×'8ä—L“Lã05³zðCàŸM™MØ'ñ	ðð ð �	øôc !ó 	Ü)Ø °C¸Lñò ð	ús   ‚%E ÅE2Å1E2c                 óh   • [        UR                  [        [        45      (       d  [	        SSUSS9$ / $ )z"Check search_fields is a sequence.r]   r|   z
admin.E126r_   )r;   r|   rb   rc   rd   rˆ   s     r   r&  Ú%ModelAdminChecks._check_search_fieldsy  s8   € ô ˜#×+Ñ+¬d´E¨]×;Ñ;ÜØ!¨/¸sÀ|ñð ð ˆIr-   c                 ój  • UR                   c  / $  [        UR                  UR                   5      S   n[        U[        R
                  [        R                  45      (       d  [        SSUSS9$ / $ ! [        [        4 a1    [        R                  " SUR                   -  UR                  SS9/s $ f = f)	z?Check that date_hierarchy refers to DateField or DateTimeField.éÿÿÿÿza DateField or DateTimeFieldÚdate_hierarchyz
admin.E128r_   zNThe value of 'date_hierarchy' refers to '%s', which does not refer to a Field.z
admin.E127rm   )r|  r   rp   r;   r   Ú	DateFieldrí   rd   r   r
   r	   r9   r{   )rY   ra   ro   s      r   r'  Ú&ModelAdminChecks._check_date_hierarchyƒ  sÀ   € ð ×ÑÑ%ØˆIðÜ,¨S¯Y©Y¸×8JÑ8JÓKÈBÑO�ô " %¬&×*:Ñ*:¼F×<PÑ<PÐ)Q×RÑRÜ"Ø6Ø/ØØ'ñ	ð ð �Iøô% %Ô&7Ð8ó ä—L’Lð5Ø7:×7IÑ7IñJàŸM™MØ'ñ	ðò ðús   ‘#A1 Á1>B2Â1B2c                 ón  • UR                  5       n/ nU Hœ  u  pEn[        US5      (       d  M  UR                   Hs  nSU-  n[        X5      (       a  M  UR                  [        R
                  " UR                  R                  < SU< SUR                  < S3UR                  SS95        Mu     Mž     U$ )zˆ
Actions with an allowed_permission attribute require the ModelAdmin to
implement a has_<perm>_permission() method for each permission.
Úallowed_permissionszhas_%s_permissionz must define a z() method for the z action.z
admin.E129rm   )Ú_get_base_actionsr  r€  r8   r	   r9   r{   ry   )	rY   ra   Úactionsr*   Úfuncr‹   Ú_Ú
permissionÚmethod_names	            r   r(  Ú1ModelAdminChecks._check_action_permission_methodsŸ  s¤   € ð
 ×'Ñ'Ó)ˆØˆÛ$‰MˆD˜Ü˜4Ð!6×7Ñ7ÙØ"×6Ô6�
Ø1°JÑ>�Ü˜s×0Ó0Ø—M‘MÜŸšð !$§¡× 6Ô 6Û +Ø $§¤ð	ð !$§¡Ø+ñ	öó 7ñ %ð$ ˆr-   c           
      ó:  • / n[         R                  " S UR                  5        5       5      nUR                  5        HY  u  pEUS:”  d  M  UR	                  [
        R                  " SUR                  R                  < SU< S3UR                  SS95        M[     U$ )z.Check that every action has a unique __name__.c              3   ó*   #   • U  H	  u  pov •  M     g 7fr1   r  )r3   r„  r‹   s      r   r4   Ú=ModelAdminChecks._check_actions_uniqueness.<locals>.<genexpr>½  s   é € Ð#SÒ;R©Z¨Q°a¤DÒ;Rùs   ‚r¡   z*__name__ attributes of actions defined in z must be unique. Name z is not unique.z
admin.E130rm   )	ÚcollectionsÚCounterr�  rÕ   r8   r	   r9   r{   ry   )rY   ra   r*   Únamesr‹   Úcounts         r   r)  Ú*ModelAdminChecks._check_actions_uniquenessº  s�   € àˆÜ×#Ò#Ñ#S¸3×;PÑ;PÔ;RÓ#SÓSˆØ Ÿ;™;ž=‰KˆDØ�q�yØ—‘Ü—L“Lð  ŸM™M×2Ô2Û ð	ð  ŸM™MØ'ñ	öñ )ð ˆr-   r  )ry   r  r  r  r'   r  r  r  r5  r  rE  r   rO  r!  rY  r"  r#  r$  r%  rq  r&  r'  r(  r)  r  Ú__classcell__©r{   s   @r   r  r    sp   ø† õ
ò&òòò$=òLò"òHò2òò9òvòòòò$4òlòò8÷6ð r-   r  c                   óR   ^ • \ rS rSrU 4S jrU 4S jrS rS rS rS r	S r
S	rU =r$ )
ÚInlineModelAdminChecksiÏ  c                 ó
  >• UR                   n/ [        TU ]	  U5      QU R                  X5      QU R	                  X5      QU R                  U5      QU R                  U5      QU R                  U5      QU R                  U5      Q$ r1   )	Úparent_modelr  r'   Ú_check_relationÚ_check_exclude_of_parent_modelÚ_check_extraÚ_check_max_numÚ_check_min_numÚ_check_formset)rY   Ú
inline_objr)   r•  r{   s       €r   r'   ÚInlineModelAdminChecks.checkÐ  s¥   ø€ Ø!×.Ñ.ˆð
Ü‰W‰]˜:Ó&ð
à×!Ñ! *Ó;ð
ð ×0Ñ0°ÓJð
ð ×Ñ˜zÓ*ð	
ð
 × Ñ  Ó,ð
ð × Ñ  Ó,ð
ð × Ñ  Ó,ð
ð 	
r-   c                 ó†  >• [         TU ]  U5      nU(       a  / $ U R                  X5      (       a  / $ UR                  c  / $ [	        X!R
                  UR                  S9nUR                  UR                  ;   aH  [        R                  " SUR                  < SUR                  R                  < S3UR                  SS9/$ / $ )N©Úfk_namezCannot exclude the field 'z6', because it is the foreign key to the parent model 'r  z
admin.E201rm   )r  rP   r–  r¶   r   rp   r   r‹   r	   r9   rq   r~   r{   )rY   ra   r•  r*   Úfkr{   s        €r   r—  Ú5InlineModelAdminChecks._check_exclude_of_parent_modelÜ  s­   ø€ ô ‘Ñ'¨Ó,ˆÞØˆIð ×Ñ ×2Ñ2ØˆIà�;‰;ÑØˆIä˜l¯I©I¸s¿{¹{ÑKˆØ�7‰7�c—k‘kÓ!ä—“ð ŸœØ$×*Ñ*×0Ô0ð	ð Ÿ™Ø#ñ	ðð ð ˆIr-   c                 óÎ   •  [        X!R                  UR                  S9  / $ ! [         a8  n[        R
                  " UR                  S   UR                  SS9/s S nA$ S nAff = f)NrŸ  r   z
admin.E202rm   )r   rp   r   Ú
ValueErrorr	   r9   Úargsr{   )rY   ra   r•  Úes       r   r–  Ú&InlineModelAdminChecks._check_relationû  sV   € ð	Ü˜\¯9©9¸c¿k¹kÒJð ˆIøô ó 	QÜ—L’L §¡¨¡°·±À,ÑOÐPÕPûð	Qús   ‚" ¢
A$¬-AÁA$ÁA$c                 ó\   • [        UR                  [        5      (       d  [        SSUSS9$ / $ )zCheck that extra is an integer.rg  Úextraz
admin.E203r_   )r;   r©  ri  rd   rˆ   s     r   r˜  Ú#InlineModelAdminChecks._check_extra  s+   € ô ˜#Ÿ)™)¤S×)Ñ)Ü˜<°¸SÀ\ÑRÐRàˆIr-   c                 óz   • UR                   c  / $ [        UR                   [        5      (       d  [        SSUSS9$ / $ )z!Check that max_num is an integer.rg  Úmax_numz
admin.E204r_   )r¬  r;   ri  rd   rˆ   s     r   r™  Ú%InlineModelAdminChecks._check_max_num  ó:   € ð �;‰;ÑØˆIÜ˜CŸK™K¬×-Ñ-Ü˜<°	¸sÀ|ÑTÐTàˆIr-   c                 óz   • UR                   c  / $ [        UR                   [        5      (       d  [        SSUSS9$ / $ )z!Check that min_num is an integer.rg  Úmin_numz
admin.E205r_   )r°  r;   ri  rd   rˆ   s     r   rš  Ú%InlineModelAdminChecks._check_min_num  r®  r-   c                 ó\   • [        UR                  [        5      (       d  [        SSUSS9$ / $ )z0Check formset is a subclass of BaseModelFormSet.r   Úformsetz
admin.E206rº   )r   r³  r   r¼   rˆ   s     r   r›  Ú%InlineModelAdminChecks._check_formset  s3   € ô ˜3Ÿ;™;Ô(8×9Ñ9Ü$Ø)°)ÀÈñð ð ˆIr-   r  )ry   r  r  r  r'   r—  r–  r˜  r™  rš  r›  r  r�  r‘  s   @r   r“  r“  Ï  s+   ø† õ

õò>òòò÷ð r-   r“  c                 óV   • [         R                  " SU< SU < S3UR                  US9/$ )Nr¯   z
' must be r;  rm   ©r	   r9   r{   )rz   r`   ra   r/   s       r   rd   rd   *  s*   € ä�‹Û/5³tÐ<Ø—‘Øñ	
ðð r-   c                 óV   • [         R                  " SU< SU < S3UR                  US9/$ )Nr¯   z' must inherit from 'r  rm   r¶  rº   s       r   r¼   r¼   4  s*   € ä�‹Û;AÃ6ÐJØ—‘Øñ	
ðð r-   c           	      óš   • [         R                  " SU< SU < SUR                  R                  R                  < S3UR
                  US9/$ )Nr¯   rØ   z', which is not a field of 'r  rm   )r	   r9   rp   rq   r~   r{   rn   s       r   r}   r}   >  s<   € ä�‹ã“u˜cŸi™iŸo™o×3Ô3ð5à—‘Øñ		
ðð r-   ))r‹  Ú	itertoolsr   Údjango.appsr   Údjango.confr   Údjango.contrib.admin.utilsr   r   r   Údjango.corer	   Údjango.core.exceptionsr
   Ú	django.dbr   Údjango.db.models.constantsr   Údjango.db.models.expressionsr   Údjango.forms.modelsr   r   r   Údjango.templater   Údjango.template.backends.djangor   Údjango.utils.module_loadingr   r   r!   r,   rG   rI   r  r“  rd   r¼   r}   r  r-   r   Ú<module>rÆ     s‡   ðÛ Ý å Ý  ß VÑ VÝ Ý 4Ý Ý 1Ý 3ß QÑ QÝ #Ý ;Ý 5òòò"òv÷rc	ñ c	ôLvÐ+ô vôrXÐ1ô Xòvòór-   