o
    ho%                     @   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registerstaticfilesc                 K   sL   g }t jt jtdddd}t j|s$d| }|td|dd |S )	Nstatic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errorscss_path
error_hint r   T/var/www/html/ndineBlogger/venv/lib/python3.10/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|s0|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   
issubclass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 ]"}| }t| |s3|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$   get_form_classr   r   r&   r'   )r   r   r   r   r   r)   edit_handlerr   r   r   get_form_class_check=   s(   
r.   panelsc                 K   s^   ddl m} g }| }|D ]	}|t| qg }|D ]}|jdd |D vr,|| q|S )Nr   r   c                 S   s   g | ]}|j qS r   )msg).0er   r   r   
<listcomp>d   s    z3inline_panel_model_panels_check.<locals>.<listcomp>)r#   r   extendcheck_panels_in_modelr0   r   )r   r   r   r   page_modelsr)   unique_errorserrorr   r   r   inline_panel_model_panels_checkW   s   
r9   modelc                    s  ddl m m} ddlm} g }t| dr>|  }|jD ]!}t||r= fdd|jD }|D ]}|	t
|jjdd q/qt| |sHt| d	rJ|S g d
}	|	D ]:}
| j}t| |
s[qP|
dd }d||
|}d|v rud||
}nd||
||
}t||| dd}|| qP|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)r1   panelr;   r   r   r3   u   s
    
z)check_panels_in_model.<locals>.<listcomp>zInlinePanel model)contextr-   )content_panelspromote_panelssettings_panels_panels z'{}.{} will have no effect on {} editingr;   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    )wagtail.admin.panelsr;   r<   r#   r=   hasattrr+   childrenr>   r4   r5   db_fieldrelated_modelr$   r'   replacetitler&   r   r   )r)   rA   r<   r=   r   r-   tabinline_panel_childreninline_panel_childtabbed_panels
panel_name
class_namepanel_name_shorterror_titler   r8   r   r@   r   r5   i   sV   




r5   wagtailadmin_base_urlc                 K   s8   ddl m} g }t|dd d u r|tdddd |S )Nr   settings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.confrX   getattrr   r   )r   r   rX   r   r   r   r   wagtail_admin_base_url_check   s   	r\   file_overwritec                 K   s   ddl m} ddlm} |dkrt|dd d }nzt|dd d }W n ty4   t|dd }Y nw g }|d	krKt|d
drK|tdddd |dkr_t|ddr_|tdddd |dkrst|ddrs|tdddd |S )Nr   )VERSIONrW   )      STORAGESdefaultBACKENDDEFAULT_FILE_STORAGEz(storages.backends.s3boto3.S3Boto3Storage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.AzureStorageAZURE_OVERWRITE_FILESFz0The AZURE_OVERWRITE_FILES setting is set to Truez+storages.backends.gcloud.GoogleCloudStorageGS_FILE_OVERWRITEz,The GS_FILE_OVERWRITE setting is set to True)djangor^   rZ   rX   r[   AttributeErrorr   r   )r   r   DJANGO_VERSIONrX   file_storager   r   r   r   file_overwrite_check   sR   


	rl   datetime_formatc                 K   s   ddl m} ddlm} g }t|dds|S |jD ]9\}}dD ]2\}}t||d}	|	du r.q|j||d}
|	|
vrQ|td	d
|	 d| d| d| d	|dd qq|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   rW   )formatsUSE_L10NF))WAGTAIL_DATE_FORMATDATE_INPUT_FORMATS)WAGTAIL_DATETIME_FORMATDATETIME_INPUT_FORMATS)WAGTAIL_TIME_FORMATTIME_INPUT_FORMATSN)langzConfiguration error'z' must be in z for language z (z).zwagtailadmin.E003r    )	rZ   rX   django.utilsrn   r[   	LANGUAGES
get_formatr   r   )r   r   rX   rn   r   codelabelwagtail_settingdjango_settingwagtail_format_valueinput_formatsr   r   r   datetime_format_check   s.   r   )r:   )r   django.core.checksr   r   r   r   r   adminr*   r.   r9   r5   r\   rl   r   r   r   r   r   <module>   s"    




@

3