o
    h                     @   s   d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ d dlmZ ddlmZ ddlmZmZ ddlmZ dd Z edddd Z!dd Z"G dd dej#Z#dS )    )	lru_cache)Http404)get_object_or_404redirect)reverse)capfirst)gettext)gettext_lazy)messages)
ObjectList*extract_panel_definitions_from_model_class)generic)Site)ModelPermissionPolicy   )SiteSwitchForm)BaseGenericSettingBaseSiteSetting)registryc                 C   s   t | |}|du rt|S )zt
    retrieve a content type from an app_name / model_name combo.
    Throw Http404 if not a valid setting type
    N)r   get_by_natural_keyr   )app_name
model_namemodel r   ^/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/contrib/settings/views.pyget_model_from_url_params   s   r   N)maxsizec                 C   sT   t | dr	| j}nt| trt| dg}nt| trt| }ntt|}|| S )Nedit_handlersite)	hasattrr   
issubclassr   r   r   NotImplementedErrorr   bind_to_model)r   r   panelsr   r   r   get_setting_edit_handler#   s   




r$   c                 C   s~   t ||}t|tr,t| }|ptj }|s$t| t	d t
dS t
d|||jS t|tr=t
d|||j| djS t)NzBThis setting could not be opened because there is no site defined.wagtailadmin_homewagtailsettings:edit)request_or_site)r   r    r   r   find_for_requestobjectsfirstr
   error_r   pkr   loadidr!   )requestr   r   r   site_requestr   r   r   r   redirect_to_relevant_instance3   s0   



r2   c                       s~   e Zd ZdZdZedZdZ fddZdd Z	dd
dZ
dd Zdd Zdd Zdd Z fddZdd Zdd Z  ZS )EditViewzwagtailsettings/edit.htmlr&   z-The setting could not be saved due to errors.changec                    sT   || _ || _t||| _t| j| _|| j| _t	 j
|||g|R i | d S N)r   r   r   r   r   permission_policygetpk_url_kwargr-   supersetup)selfr0   r   r   argskwargs	__class__r   r   r:   X   s   "zEditView.setupc                 C   s   t j| jS r5   )r   _model_iconsr7   r   r;   r   r   r   get_header_icon`      zEditView.get_header_iconNc                 C   s@   d | _ t| jtrtt| jd| _ | j| j S t| j| jdS )N)r-   )r   r    r   r   r   r   r-   for_site)r;   querysetr   r   r   
get_objectc   s
   zEditView.get_objectc                 C   s
   t | jS r5   )r$   r   rA   r   r   r   	get_panelk   s   
zEditView.get_panelc                 C   s   t | j| j| j| jfdS )N)r<   )r   edit_url_namer   r   r-   rA   r   r   r   get_edit_urln   s   zEditView.get_edit_urlc                 C   s   d S r5   r   rA   r   r   r   get_success_buttonst   s   zEditView.get_success_buttonsc                 C   s   t | jjjS r5   )r   r   _metaverbose_namerA   r   r   r   get_page_subtitlew   rC   zEditView.get_page_subtitlec                    sV   t  jdi |}d }| jr%tj dkr%t| j| j}|d  |j7  < ||d< |S )Nr   mediasite_switcherr   )	r9   get_context_datar   r   r)   countr   r   rN   )r;   r=   contextrO   r>   r   r   rP   z   s   zEditView.get_context_datac                 C   s   |   S r5   )rI   rA   r   r   r   get_success_url   s   zEditView.get_success_urlc                 C   s   t tdd| jjji S )Nz%(setting_type)s updated.setting_type)r   r,   r   rK   rL   rA   r   r   r   get_success_message   s
   zEditView.get_success_messager5   )__name__
__module____qualname__template_namerH   r	   error_messagepermission_requiredr:   rB   rF   rG   rI   rJ   rM   rP   rS   rU   __classcell__r   r   r>   r   r3   R   s    
r3   )$	functoolsr   django.httpr   django.shortcutsr   r   django.urlsr   django.utils.textr   django.utils.translationr   r,   r	   wagtail.adminr
   wagtail.admin.panelsr   r   wagtail.admin.viewsr   wagtail.modelsr   wagtail.permission_policiesr   formsr   modelsr   r   r   r   r$   r2   r3   r   r   r   r   <module>   s(    
