a
    Dgo                     @   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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mZ g Zdag Zdd Z edddd Z!dd Z"G dd dZ#d!ddZ$d"ddZ%dd Z&eeddd Z'dS )#    )	lru_cache)apps)quote)get_permission_codename)
Permission)ContentType)DEFAULT_DB_ALIASmodelsrouter)reverse)import_string)viewsets)search_for_hooks)DraftStateMixinLockableMixinWorkflowMixinTc                   C   s
   t   tS N)r   SNIPPET_MODELS r   r   V/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/snippets/models.pyget_snippet_models   s    r   N)maxsizec                   C   s   dd t  D S )Nc                 S   s   g | ]}t |tr|qS r   )
issubclassr   .0modelr   r   r   
<listcomp>'       z/get_workflow_enabled_models.<locals>.<listcomp>)r   r   r   r   r   get_workflow_enabled_models%   s    r   c                    s"   ddl m   fddt D S )Nr   get_permission_namec                    s    g | ]}  d |r|qS )change)has_permr   r    userr   r   r   -   s   z'get_editable_models.<locals>.<listcomp>)wagtail.snippets.permissionsr    r   )r$   r   r#   r   get_editable_models*   s    r&   c                   @   s   e Zd ZdddZdd ZdS )SnippetAdminURLFinderNc                 C   s0   |r&ddl m} ||d| j| _nd| _d S )Nr   r   r!   T)r%   r    r"   r   user_can_edit)selfr$   r    r   r   r   __init__6   s    
zSnippetAdminURLFinder.__init__c                 C   s&   | j r"t|jdt|jgdS d S )NZedit)args)r(   r   Zsnippet_viewsetZget_url_namer   pk)r)   instancer   r   r   get_edit_urlA   s
    

z"SnippetAdminURLFinder.get_edit_url)N)__name__
__module____qualname__r*   r.   r   r   r   r   r'   4   s   
r'   c                 C   s"   t rt| |f n
t| | | S r   )DEFER_REGISTRATIONDEFERRED_REGISTRATIONSappend_register_snippet_immediatelyregisterableviewsetr   r   r   register_snippetI   s    
r9   c                 C   sx   ddl m} t| trt| } t|tr0t|}t| tr\t| tjr\|d u rR|}|| d} t	| rj|  } t
|  d S )Nr   )SnippetViewSet)r   )Zwagtail.snippets.views.snippetsr:   
isinstancestrr   typer   r	   ZModelcallabler   register)r7   r8   r:   r   r   r   r5   T   s    


r5   c                  C   s    da tD ]\} }t| | qdS )z
    Called from WagtailSnippetsAppConfig.ready(), at which point we can be sure all models
    have been loaded and register_snippet can safely construct viewsets.
    FN)r2   r3   r5   r6   r   r   r   register_deferred_snippetsq   s    r@   )usingr   c          
         s  | j }z&||} |dd |dd W n ty@   Y d S 0 t|tsRd S tj	|j
t ddi}ttj|j| ddd	 g  fd
d}| D ]@\}}	t|tr|||	d t|tr|||	d |||	d qtj| d S )NZcontenttypesr   authr   Zfor_concrete_modelsF)Zcontent_type__incontent_typecodenamec              	      sF   t || j}|j|f v rd S t||d| d| jj d d S )NzCan  )rC   rD   name)r   Z_metar,   r4   r   Zverbose_name_raw)r   rC   rF   rD   Z	all_permsZpermissionsr   r   add_permission   s    z0create_extra_permissions.<locals>.add_permissionpublishlockZunlock)labelZget_app_configZ	get_modelLookupErrorr
   Zallow_migrate_modelr   r   ZobjectsZ
db_managerZget_for_modelsr   setrA   filtervaluesZvalues_listitemsr   r   r   Zbulk_create)
Z
app_configrA   r   r+   kwargsZ	app_labelZ	model_ctsrH   r   ctr   rG   r   create_extra_permissions|   s<    


rS   )N)N)(	functoolsr   Zdjango.appsr   Zglobal_appsZdjango.contrib.admin.utilsr   Zdjango.contrib.authr   Zdjango.contrib.auth.modelsr   Z"django.contrib.contenttypes.modelsr   Z	django.dbr   r	   r
   Zdjango.urlsr   Zdjango.utils.module_loadingr   Zwagtail.admin.viewsetsr   Zwagtail.hooksr   Zwagtail.modelsr   r   r   r   r2   r3   r   r   r&   r'   r9   r5   r@   rS   r   r   r   r   <module>   s0   	



