a
    Dg(                     @   s   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 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 G dd deZG dd deZG dd deZG dd deZe ZejZdS )    )warn)apps)
Permission)reverse)capfirst)hooks)ModelAdminURLFinderregister_admin_url_finder)MenuItem)ModelPermissionPolicy)RemovedInWagtail70Warning   )user_can_edit_setting_typec                       s&   e Zd Zd fdd	Zdd Z  ZS )SettingMenuItemcog c                    sZ   |rt dtd |p|}|| _t jf t|jjtd|jj	|jj
gd||d| d S )NzSThe `classnames` kwarg for SettingMenuItem is deprecated - use `classname` instead.)categorywagtailsettings:editargs)labelurl	classnameZ	icon_name)r   r   modelsuper__init__r   _metaZverbose_namer   	app_label
model_name)selfr   iconr   Z
classnameskwargs	__class__ `/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/contrib/settings/registry.pyr      s$    
zSettingMenuItem.__init__c                 C   s   t |j| jS N)r   userr   )r   requestr$   r$   r%   is_shown)   s    zSettingMenuItem.is_shown)r   r   r   )__name__
__module____qualname__r   r)   __classcell__r$   r$   r"   r%   r      s   r   c                   @   s   e Zd Zdd ZdS )SiteSettingAdminURLFinderc                 C   s    t d| jjj| jjj|jgdS Nr   r   )r   r   r   r   r   Zsite_idr   instancer$   r$   r%   construct_edit_url.   s    z,SiteSettingAdminURLFinder.construct_edit_urlNr*   r+   r,   r2   r$   r$   r$   r%   r.   -   s   r.   c                   @   s   e Zd Zdd ZdS )GenericSettingAdminURLFinderc                 C   s    t d| jjj| jjj|jgdS r/   )r   r   r   r   r   idr0   r$   r$   r%   r2   :   s    z/GenericSettingAdminURLFinder.construct_edit_urlNr3   r$   r$   r$   r%   r4   9   s   r4   c                   @   s0   e Zd Zdd ZdddZdddZd	d
 ZdS )Registryc                 C   s
   i | _ d S r&   )_model_icons)r   r$   r$   r%   r   F   s    zRegistry.__init__r   c           
         s   ddl m}m} |r|j< v r*S  td fdd}tdfdd}t}t|rt	d	t
f|d
}	n$t|rt	dtf|d
}	ntt|	 S )Nr   )BaseGenericSettingBaseSiteSettingZregister_settings_menu_itemc                      s   t fdji S Nr    )r   r7   getr$   r!   r   r   r$   r%   	menu_hookX   s    z$Registry.register.<locals>.menu_hookZregister_permissionsc                      s   t jj jjd jj dS )NZchange_)Zcontent_type__app_labelcodename)r   Zobjectsfilterr   r   r   r$   r   r$   r%   permissions_hook\   s    z+Registry.register.<locals>.permissions_hookZ_SiteSettingAdminURLFinder)r   permission_policyZ_GenericSettingAdminURLFinder)modelsr8   r9   r7   appendr   registerr   
issubclasstyper.   r4   NotImplementedErrorr	   )
r   r   r    r!   r8   r9   r=   rA   rB   Zfinder_classr$   r<   r%   rE   I   s4    




zRegistry.registerNc                    s.   |du r fddS j |fd iS )zD
        Register a model as a setting in the Wagtail admin
        Nc                    s   j | fd iS r:   rE   r@   r    r!   r   r$   r%   <lambda>~       z-Registry.register_decorator.<locals>.<lambda>r    rI   )r   r   r    r!   r$   rJ   r%   register_decoratory   s    zRegistry.register_decoratorc                 C   s:   zt ||}W n ty$   Y dS 0 |tvr2dS |S dS )z
        Get a setting model using its app_label and model_name.

        If the app_label.model_name combination is not a valid model, or the
        model is not registered as a setting, returns None.
        N)r   Z	get_modelLookupErrorregistry)r   r   r   ZModelr$   r$   r%   get_by_natural_key   s    zRegistry.get_by_natural_key)r   )Nr   )r*   r+   r,   r   rE   rM   rP   r$   r$   r$   r%   r6   E   s   
0
r6   N)warningsr   Zdjango.appsr   Zdjango.contrib.auth.modelsr   Zdjango.urlsr   Zdjango.utils.textr   Zwagtailr   Zwagtail.admin.admin_url_finderr   r	   Zwagtail.admin.menur
   Zwagtail.permission_policiesr   Zwagtail.utils.deprecationr   Zpermissionsr   r   r.   r4   listr6   rO   rM   Zregister_settingr$   r$   r$   r%   <module>   s    M