U
    {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k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   f/var/www/dating/data/www/fatepal.com/env/lib/python3.8/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                       sr   e Zd ZdZedZdZ f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.htmlz-The setting could not be saved due to errors.Zchangec                    sN   || _ || _t||| _t| j| _|| j| _t	 j
|||f|| 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   W   s    zEditView.setupNc                 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_object_   s
    zEditView.get_objectc                 C   s   t | j S r-   )r!   r   get_form_classr1   r   r   r   r7   g   s    zEditView.get_form_classc                 C   s   t d| j| j| jfdS )Nr"   )r2   )r   r   r   r'   r8   r   r   r   get_edit_urlj   s    zEditView.get_edit_urlc                 C   s   d S r-   r   r8   r   r   r   get_success_buttonsp   s    zEditView.get_success_buttonsc                 C   s   t | jjjS r-   )r   r   _metaverbose_namer8   r   r   r   get_page_subtitles   s    zEditView.get_page_subtitlec                    s   t  jf |}d }| jrDtj dkrDt| j| j}|d|j	 }| 
 }t| jj| j| j|d}|j	|j	 }tj| j}|||||d |S )Nr   media)instancer*   form)r   site_switcherr>   header_icon)r/   get_context_datar   r   r#   countr   r   r.   r>   Zget_formr!   Zget_bound_panelobjectr*   r   Z_model_iconsupdate)r1   r3   contextrA   r>   r@   r   rB   r4   r   r   rC   v   s*    
  	zEditView.get_context_datac                 C   s   |   S r-   )r9   r8   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<   r8   r   r   r   get_success_message   s
    zEditView.get_success_message)N)__name__
__module____qualname__Ztemplate_namer	   error_messageZpermission_requiredr0   r6   r7   r9   r:   r=   rC   rH   rI   __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&   
