U
    |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   _/var/www/dating/data/www/fatepal.com/env/lib/python3.8/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   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    
r8   c                 C   sx   ddl m} t| trt| } t|tr0t|}t| tr\t| tjr\|d krR|}|| d} t	| rj|  } t
|  d S )Nr   )SnippetViewSet)r   )Zwagtail.snippets.views.snippetsr9   
isinstancestrr   typer   r	   ZModelcallabler   register)r6   r7   r9   r   r   r   r4   T   s    


r4   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)r1   r2   r4   r5   r   r   r   register_deferred_snippetsq   s    r?   )usingr   c          
         s  | j }z&||} |dd |dd W n tk
rB   Y d S X t|tsTd 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 krd S t||d| d| jj d d S )NzCan  )rB   rC   name)r   _metar+   r3   r   Zverbose_name_raw)r   rB   rE   rC   Z	all_permsZpermissionsr   r   add_permission   s    z0create_extra_permissions.<locals>.add_permissionpublishlockunlock)labelZget_app_configZ	get_modelLookupErrorr
   Zallow_migrate_modelr   r   objectsZ
db_managerZget_for_modelsr   setr@   filtervaluesZvalues_listitemsr   r   r   Zbulk_create)
Z
app_configr@   r   r*   kwargsZ	app_labelZ	model_ctsrH   r   ctr   rG   r   create_extra_permissions|   s>    
 

rU   )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   r1   r2   r   r   r%   r&   r8   r4   r?   rU   r   r   r   r   <module>   s2   	



 