o
    ho                     @   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   W/var/www/html/ndineBlogger/venv/lib/python3.10/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>'   s    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   s2   |rddl m} ||d| j| _d S 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 )Nedit)args)r'   r   snippet_viewsetget_url_namer   pk)r(   instancer   r   r   get_edit_urlA   s   

z"SnippetAdminURLFinder.get_edit_urlr   )__name__
__module____qualname__r)   r0   r   r   r   r   r&   4   s    
r&   c                 C   s$   t rt| |f | S t| | | S r   )DEFER_REGISTRATIONDEFERRED_REGISTRATIONSappend_register_snippet_immediatelyregisterableviewsetr   r   r   register_snippetI   s
   
r;   c                 C   sx   ddl m} t| trt| } t|trt|}t| tr.t| tjr.|d u r)|}|| d} t	| r5|  } t
|  d S )Nr   )SnippetViewSet)r   )wagtail.snippets.views.snippetsr<   
isinstancestrr   typer   r	   Modelcallabler   register)r9   r:   r<   r   r   r   r7   T   s   


r7   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)r4   r5   r7   r8   r   r   r   register_deferred_snippetsq   s   rD   )usingr   c          
         s  | j }z||} |dd |dd W n
 ty    Y d S w t|ts)d S tj	|j
t ddi}ttj|j| ddd	 g  fd
d}| D ] \}}	t|trd|||	d t|tru|||	d |||	d qUtj| d S )Ncontenttypesr   authr   for_concrete_modelsF)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  )rJ   rK   name)r   _metar.   r6   r   verbose_name_raw)r   rJ   rM   rK   	all_permspermissionsr   r   add_permission   s   z0create_extra_permissions.<locals>.add_permissionpublishlockunlock)labelget_app_config	get_modelLookupErrorr
   allow_migrate_modelr   r   objects
db_managerget_for_modelsr   setrE   filtervaluesvalues_listitemsr   r   r   bulk_create)

app_configrE   r   r+   kwargs	app_label	model_ctsrS   r   ctr   rP   r   create_extra_permissions|   s>   



rj   r   )(	functoolsr   django.appsr   global_appsdjango.contrib.admin.utilsr   django.contrib.authr   django.contrib.auth.modelsr   "django.contrib.contenttypes.modelsr   	django.dbr   r	   r
   django.urlsr   django.utils.module_loadingr   wagtail.admin.viewsetsr   wagtail.hooksr   wagtail.modelsr   r   r   r   r4   r5   r   r   r%   r&   r;   r7   rD   rj   r   r   r   r   <module>   s2    	



