a
    Dg                     @   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   Zget_by_natural_keyr   )app_name
model_namemodel r   ]/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/contrib/settings/views.pyget_model_from_url_params   s    r   N)maxsizec                 C   sT   t | dr| j}n8t| tr*t| dg}nt| tr>t| }ntt|}|| S )Nedit_handlersite)	hasattrr   
issubclassr   r   r   NotImplementedErrorr   Zbind_to_model)r   r   Zpanelsr   r   r   get_setting_edit_handler#   s    



r!   c                 C   s   t ||}t|trXt| }|p*tj }|sHt| t	d t
dS t
d|||jS t|trzt
d|||j| djS td S )NzBThis setting could not be opened because there is no site defined.Zwagtailadmin_homewagtailsettings:edit)Zrequest_or_site)r   r   r   r   Zfind_for_requestobjectsfirstr
   error_r   pkr   loadidr    )requestr   r   r   Zsite_requestr   r   r   r   redirect_to_relevant_instance3   s0    



r+   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.Zchangec                    sT   || _ || _t||| _t| j| _|| j| _t	 j
|||g|R i | d S N)r   r   r   r   r   Zpermission_policygetZpk_url_kwargr'   supersetup)selfr*   r   r   argskwargs	__class__r   r   r0   X   s    zEditView.setupc                 C   s   t j| jS r-   )r   Z_model_iconsr.   r   r1   r   r   r   get_header_icon`   s    zEditView.get_header_iconNc                 C   sD   d | _ t| jtr0tt| jd| _ | j| j S t| j| jdS d S )N)r'   )r   r   r   r   r   r   r'   Zfor_site)r1   Zquerysetr   r   r   
get_objectc   s
    zEditView.get_objectc                 C   s
   t | jS r-   )r!   r   r6   r   r   r   	get_panelk   s    zEditView.get_panelc                 C   s   t | j| j| j| jfdS )N)r2   )r   edit_url_namer   r   r'   r6   r   r   r   get_edit_urln   s    zEditView.get_edit_urlc                 C   s   d S r-   r   r6   r   r   r   get_success_buttonst   s    zEditView.get_success_buttonsc                 C   s   t | jjjS r-   )r   r   _metaverbose_namer6   r   r   r   get_page_subtitlew   s    zEditView.get_page_subtitlec                    sV   t  jf i |}d }| jrJtj dkrJt| j| j}|d  |j7  < ||d< |S )Nr   mediasite_switcher)	r/   get_context_datar   r   r#   countr   r   r@   )r1   r3   contextrA   r4   r   r   rB   z   s    zEditView.get_context_datac                 C   s   |   S r-   )r;   r6   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.Zsetting_type)r   r&   r   r=   r>   r6   r   r   r   get_success_message   s
    zEditView.get_success_message)N)__name__
__module____qualname__Ztemplate_namer:   r	   error_messageZpermission_requiredr0   r7   r8   r9   r;   r<   r?   rB   rE   rF   __classcell__r   r   r4   r   r,   R   s   
r,   )$	functoolsr   Zdjango.httpr   Zdjango.shortcutsr   r   Zdjango.urlsr   Zdjango.utils.textr   Zdjango.utils.translationr   r&   r	   Zwagtail.adminr
   Zwagtail.admin.panelsr   r   Zwagtail.admin.viewsr   Zwagtail.modelsr   Zwagtail.permission_policiesr   Zformsr   modelsr   r   r   r   r!   r+   r,   r   r   r   r   <module>   s&   
