a
    Dgo%                     @   s   d dl Z d dlmZmZmZmZ eddd Zeejdd Zeejdd	 Z	ed
dd Z
dddZeddd Zeddd Zeddd ZdS )    N)ErrorTagsWarningregisterZstaticfilesc                 K   sL   g }t jt jtdddd}t j|sHd| }|td|dd |S )	NZstaticZwagtailadmincsszcore.cssa  
            Most likely you are running a development (non-packaged) copy of
            Wagtail and have not built the static assets -
            see https://docs.wagtail.org/en/latest/contributing/developing.html

            File not found: %s
        z$CSS for the Wagtail admin is missingzwagtailadmin.W001hintid)ospathjoindirname__file__isfileappendr   )app_configskwargserrorsZcss_path
error_hint r   S/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/checks.pycss_install_check   s"    r   c              	   K   sf   ddl m} ddlm} g }| D ]>}t|j|s"|td|j	d|jj
|jj	|dd q"|S )Nr   WagtailAdminPageFormget_page_modelsz7{}.base_form_class does not extend WagtailAdminPageFormz.Ensure that {}.{} extends WagtailAdminPageFormzwagtailadmin.E001r   objr	   )wagtail.admin.formsr   wagtail.modelsr   
issubclassZbase_form_classr   r   format__name__
__module__)r   r   r   r   r   clsr   r   r   base_form_class_check$   s$    
r%   c              	   K   sl   ddl m} ddlm} g }| D ]D}| }t| |s"|tdj	|j
ddj	|j
d|dd q"|S )	Nr   r   r   zN{cls}.get_edit_handler().get_form_class() does not extend WagtailAdminPageForm)r$   zUEnsure that the panel definition for {cls} creates a subclass of WagtailAdminPageFormzwagtailadmin.E002r   )r   r   r   r   get_edit_handlerr    Zget_form_classr   r   r!   r"   )r   r   r   r   r   r$   edit_handlerr   r   r   get_form_class_check=   s&    
r(   Zpanelsc                 K   s^   ddl m} g }| }|D ]}|t| qg }|D ]"}|jdd |D vr6|| q6|S )Nr   r   c                 S   s   g | ]
}|j qS r   )msg).0er   r   r   
<listcomp>d       z3inline_panel_model_panels_check.<locals>.<listcomp>)r   r   extendcheck_panels_in_modelr)   r   )r   r   r   r   Zpage_modelsr$   Zunique_errorserrorr   r   r   inline_panel_model_panels_checkW   s    r1   modelc                    s  ddl m m} ddlm} g }t| dr||  }|jD ]B}t||r8 fdd|jD }|D ]}|	t
|jjdd q^q8t| |st| d	r|S g d
}	|	D ]t}
| j}t| |
sq|
dd }d||
|}d|v rd||
}nd||
||
}t||| dd}|| q|S )zHCheck panels configuration uses `panels` when `edit_handler` not in use.r   )InlinePanel
PanelGroup)Pager&   c                    s   g | ]}t | r|qS r   )
isinstance)r*   Zpanelr3   r   r   r,   u   s   z)check_panels_in_model.<locals>.<listcomp>zInlinePanel model)contextr'   )Zcontent_panelsZpromote_panelsZsettings_panelsZ_panels z'{}.{} will have no effect on {} editingr3   znEnsure that {} uses `panels` instead of `{}`.
There are no tabs on non-Page model editing within InlinePanels.zEnsure that {} uses `panels` instead of `{}` or set up an `edit_handler` if you want a tabbed editing interface.
There are no default tabs on non-Page models so there will be no {} tab for the {} to render in.zwagtailadmin.W002r   )Zwagtail.admin.panelsr3   r4   r   r5   hasattrr&   childrenr6   r.   r/   Zdb_fieldZrelated_modelr    r"   replacetitler!   r   r   )r$   r8   r4   r5   r   r'   tabZinline_panel_childrenZinline_panel_childZtabbed_panelsZ
panel_name
class_nameZpanel_name_shortZerror_titler   r0   r   r7   r   r/   i   sL    




r/   Zwagtailadmin_base_urlc                 K   s8   ddl m} g }t|dd d u r4|tdddd |S )Nr   settingsZWAGTAILADMIN_BASE_URLz0The WAGTAILADMIN_BASE_URL setting is not definedzThis should be the base URL used to access the Wagtail admin site. Without this, URLs in notification emails will not display correctly.zwagtailadmin.W003r   )django.confrA   getattrr   r   )r   r   rA   r   r   r   r   wagtail_admin_base_url_check   s    	rD   Zfile_overwritec                 K   s   ddl m} ddlm} |dkr4t|dd d }n6zt|dd d }W n tyh   t|dd }Y n0 g }|d	krt|d
dr|tdddd |dkrt|ddr|tdddd |dkrt|ddr|tdddd |S )Nr   )VERSIONr@   )      ZSTORAGESdefaultZBACKENDZDEFAULT_FILE_STORAGEz(storages.backends.s3boto3.S3Boto3StorageZAWS_S3_FILE_OVERWRITETz0The AWS_S3_FILE_OVERWRITE setting is set to TruezThis should be set to False. The incorrect setting can cause documents and other user-uploaded files to be silently overwritten or deleted.zwagtailadmin.W004r   z,storages.backends.azure_storage.AzureStorageZAZURE_OVERWRITE_FILESFz0The AZURE_OVERWRITE_FILES setting is set to Truez+storages.backends.gcloud.GoogleCloudStorageZGS_FILE_OVERWRITEz,The GS_FILE_OVERWRITE setting is set to True)ZdjangorE   rB   rA   rC   AttributeErrorr   r   )r   r   ZDJANGO_VERSIONrA   Zfile_storager   r   r   r   file_overwrite_check   sP    


	rJ   Zdatetime_formatc                 K   s   ddl m} ddlm} g }t|dds,|S |jD ]r\}}dD ]d\}}t||d}	|	du r\q>|j||d}
|	|
vr>|td	d
|	 d| d| d| d	|dd q>q2|S )aK  
    If L10N is enabled, check if WAGTAIL_* formats are compatible with Django input formats.
    See https://docs.djangoproject.com/en/stable/topics/i18n/formatting/#creating-custom-format-files
    See https://docs.wagtail.org/en/stable/reference/settings.html#wagtail-date-format-wagtail-datetime-format-wagtail-time-format
    r   r@   )formatsZUSE_L10NF))ZWAGTAIL_DATE_FORMATZDATE_INPUT_FORMATS)ZWAGTAIL_DATETIME_FORMATZDATETIME_INPUT_FORMATS)ZWAGTAIL_TIME_FORMATZTIME_INPUT_FORMATSN)langzConfiguration error'z' must be in z for language z (z).zwagtailadmin.E003r   )	rB   rA   Zdjango.utilsrK   rC   Z	LANGUAGESZ
get_formatr   r   )r   r   rA   rK   r   codelabelZwagtail_settingZdjango_settingZwagtail_format_valueZinput_formatsr   r   r   datetime_format_check   s*    	rP   )r2   )r
   Zdjango.core.checksr   r   r   r   r   Zadminr%   r(   r1   r/   rD   rJ   rP   r   r   r   r   <module>   s    




@

3