U
    {h                     @   sV  d dl 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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  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l0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@ d dlAmBZB d dlCmDZDmEZEmFZFmGZGmHZHmIZI d dlJmKZKmLZLmMZM d dlNmOZO d dlPmQZQ e,eLZRG d d! d!e;ZSG d"d# d#e;ZTG d$d% d%e9ZUG d&d' d'e/ZVG d(d) d)eVZWG d*d+ d+e@ZXG d,d- d-e=ZYG d.d/ d/e?ZZG d0d1 d1e>Z[d2d3 Z\e&d4d5 Z]e&dVd6d7Z^G d8d9 d9e;Z_G d:d; d;e:Z`G d<d= d=eVZaG d>d? d?e@Zbd@dA ZcG dBdC dCe=ZdG dDdE dEe?ZeG dFdG dGe>Zfe&dHdI ZgdJdK ZhG dLdM dMe(ZiG dNdO dOeiZjG dPdQ dQeiZkG dRdS dSeiZldTdU ZmdS )W    N)forms)ContentType)PermissionDenied)	Paginator)transaction)CountPrefetch)Lower)Http404HttpResponseBadRequest)get_object_or_404redirectrender)render_to_string)reverse)cached_property)url_has_allowed_host_and_scheme)capfirst)gettext_lazy)ngettext)require_POST)TemplateView)messages)PermissionPolicyChecker)MultipleContentTypeFilterWagtailFilterSet)TaskChooserSearchFormWorkflowContentTypeFormWorkflowPagesFormSetget_task_form_classget_workflow_edit_handler)render_modal_workflow)
BaseColumnColumnTitleColumn)
CreateView
DeleteViewEditView	IndexView)resolve_model_string)PageTask	TaskStateWorkflowWorkflowStateWorkflowTask)page_permission_policytask_permission_policyworkflow_permission_policy)get_workflow_enabled_models)get_task_typesc                   @   s   e Zd ZdZdS )WorkflowTitleColumnz8wagtailadmin/workflows/includes/workflow_title_cell.htmlN__name__
__module____qualname__cell_template_name r;   r;   e/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/views/workflows.pyr5   6   s   r5   c                       s    e Zd ZdZ fddZ  ZS )WorkflowUsedByColumnz:wagtailadmin/workflows/includes/workflow_used_by_cell.htmlc                    s   t  ||}t |d< |S )NZworkflow_enabled_models)superget_cell_context_datar3   selfinstanceZparent_contextcontext	__class__r;   r<   r?   =   s    
z*WorkflowUsedByColumn.get_cell_context_data)r7   r8   r9   r:   r?   __classcell__r;   r;   rD   r<   r=   :   s   r=   c                       s$   e Zd ZdZdZ fddZ  ZS )WorkflowTasksColumnz8wagtailadmin/workflows/includes/workflow_tasks_cell.html   c                    s>   t  ||}|j d | j |d< |j | j |d< |S )NtasksZextra_count)r>   r?   workflow_tasksall	num_taskscountr@   rD   r;   r<   r?   G   s    z)WorkflowTasksColumn.get_cell_context_data)r7   r8   r9   r:   rL   r?   rF   r;   r;   rD   r<   rG   C   s   rG   c                       s^   e Zd ZejedddedfdedffejdddZdddd	 fd
dZ	dd Z
  ZS )BaseWorkflowFilterSetzShow disabledfilter_show_disabledtrueZYesfalseZNoN)labelmethodchoiceswidgetZempty_labelinitialrequestprefixc                   sN   |d k	r6| dd kr6| jd }| }|jd |d< t j||||d d S )Nshow_disabledrV   rW   )getZbase_filterscopyextrar>   __init__)rA   dataquerysetrX   rY   filterrD   r;   r<   r^   X   s    
zBaseWorkflowFilterSet.__init__c                 C   s   |dkr|S |j ddS )NrP   Tactive)ra   )rA   r`   namevaluer;   r;   r<   rO   `   s    z*BaseWorkflowFilterSet.filter_show_disabled)NN)r7   r8   r9   django_filtersZChoiceFilter_r   ZRadioSelectrZ   r^   rO   rF   r;   r;   rD   r<   rN   N   s   	rN   c                   @   s   e Zd ZG dd dZdS )WorkflowFilterSetc                   @   s   e Zd ZeZg ZdS )zWorkflowFilterSet.MetaN)r7   r8   r9   r-   modelfieldsr;   r;   r;   r<   Metag   s   rk   N)r7   r8   r9   rk   r;   r;   r;   r<   rh   f   s   rh   c                       s   e Zd ZeZeZdZdZdZ	dZ
dZdZdZedZed	Zd
Zededddddededddded
eddgZdZdgZeZdZdZdd Z fddZ fddZ  ZS )IndexZ	workflowsz!wagtailadmin/workflows/index.htmlz)wagtailadmin/workflows/index_results.htmlwagtailadmin_workflows:addwagtailadmin_workflows:editwagtailadmin_workflows:indexz$wagtailadmin_workflows:index_results	WorkflowszAdd a workflowrI   rd   Name25%)rR   url_namewidthsort_keyusagezUsed byzwagtailadmin_workflows:usagez15%)rR   rs   rt   ZTasks)rR   T   c                 C   s   | j jjddkS NrZ   rP   filtersformcleaned_datar[   rA   r;   r;   r<   rZ      s    zIndex.show_disabledc                    s*   t   }|jtdd}|ddddS )NZworkflow_content_types)Zcontent_typesZworkflow_pagesZworkflow_pages__pagerJ   Zworkflow_tasks__task)r>   get_base_querysetZannotater   prefetch_relatedrA   r`   rD   r;   r<   r~      s    
zIndex.get_base_querysetc                    s   t  jf |}|  |d< |S NZshowing_disabledr>   get_context_datarZ   rA   kwargsrC   rD   r;   r<   r      s    zIndex.get_context_data) r7   r8   r9   r2   permission_policyr-   ri   context_object_nametemplate_nameresults_template_nameadd_url_nameedit_url_nameindex_url_nameindex_results_url_namerg   
page_titleadd_item_labelheader_iconr5   r=   rG   columnsdefault_orderingsearch_fieldsrh   filterset_class_show_breadcrumbspaginate_byrZ   r~   r   rF   r;   r;   rD   r<   rl   l   sF   
rl   c                       sx   e Zd ZeZeZedZdZ	edZ
dZdZdZdZdZd	Zd
d Zdd Zdd Zdd Z fddZdd Z  ZS )CreatezNew workflowz"wagtailadmin/workflows/create.htmlzWorkflow '%(object)s' created.rm   rn   ro   rI   NTc                 C   s   | j st | _ | j S Nedit_handlerr    r}   r;   r;   r<   get_edit_handler   s    zCreate.get_edit_handlerc                 C   s   |    S r   r   get_form_classr}   r;   r;   r<   r      s    zCreate.get_form_classc                 C   s2   | j jdkr t| j j| jddS t| jddS d S NPOSTpages)rB   rY   )rX   rS   r   r   objectr}   r;   r;   r<   get_pages_formset   s      zCreate.get_pages_formsetc                 C   s.   | j jdkrt| j j| jdS t| jdS d S Nr   )workflowrX   rS   r   r   r   r}   r;   r;   r<   get_content_type_form   s    zCreate.get_content_type_formc                    sx   t  jf |}|d }| jj||j| jd}|  }||d< ||d< tt |d< | 	 |d< |j
|j
 |j
 |d< |S )Nr{   r{   rB   rX   r   pages_formsethas_workflow_enabled_modelscontent_type_formmedia)r>   r   r   get_bound_panelrB   rX   r   boolr3   r   r   rA   r   rC   r{   Zbound_panelr   rD   r;   r<   r      s      zCreate.get_context_datac              
   C   s   || _ t  |  | _|  }|  }| r| r|  |  | 	| j}|d k	rt
j| j|t
t| j| jjfdtdgd t|  W  5 Q R  S td W 5 Q R X | |S )NargsEditZbuttonsT)r{   r   atomicsave_instancer   r   r   is_validsaveget_success_messager   successrX   buttonr   r   idrg   r   get_success_urlset_rollbackform_invalid)rA   r{   r   r   success_messager;   r;   r<   
form_valid   s,    


zCreate.form_valid)r7   r8   r9   r2   r   r-   ri   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   r;   r;   rD   r<   r      s"   r   c                       s   e Zd ZeZeZedZdZ	edZ
dZdZdZedZdZed	Zd
ZdZdZdZdZdd Zdd Zdd Zdd Zdd Z fddZedd Ze dd Z   Z!S )r   zEditing workflowz wagtailadmin/workflows/edit.htmlzWorkflow '%(object)s' updated.rm   rn   wagtailadmin_workflows:disableDisablero   Enablezwagtailadmin_workflows:enablerI   NrH   Tc                 C   s   | j st | _ | j S r   r   r}   r;   r;   r<   r     s    zEdit.get_edit_handlerc                 C   s   |    S r   r   r}   r;   r;   r<   r     s    zEdit.get_form_classc                 C   s6   | j jdkr"t| j j|  ddS t|  ddS d S r   )rX   rS   r   r   
get_objectr}   r;   r;   r<   r     s      zEdit.get_pages_formsetc                 C   s.   | j jdkrt| j j| jdS t| jdS d S r   r   r}   r;   r;   r<   r     s    zEdit.get_content_type_formc                 C   sD   t jj|  d}t|| j|_t| jj	
dd}|j|}|S )N)Zworkflowpage__workflowp   )r*   objectsra   r   r   	MAX_PAGES	paginatorintrX   GETr[   page)rA   r   Zpage_numberZpaginated_pagesr;   r;   r<   get_paginated_pages  s
    zEdit.get_paginated_pagesc                    s   t  jf |}|d }| jj||j| jd}|  }||d< |  |d< ||d< tt	 |d< | 
 |d< | jd ks| j| jjdo| jj|d	< | jd ks| j| jjd
o| jj |d< |j|j |j |d< |S )Nr{   r   r   r   r   r   r   deletecan_disableadd
can_enabler   )r>   r   r   r   rB   rX   r   r   r   r3   r   r   user_has_permissionuserr   rc   r   r   rD   r;   r<   r   $  s2      

zEdit.get_context_datac                 C   s   t | j| jjfdS Nr   r   enable_url_namer   pkr}   r;   r;   r<   get_enable_url;  s    zEdit.get_enable_urlc              
   C   s   || _ t  |  | _d}| jjrf|  }|  }| rX| rX|	  |	  nt
d d}|r|  }|d k	rtj| j|tt| j| jjfdtdgd t|  W  5 Q R  S W 5 Q R X | |S )NTFr   r   r   )r{   r   r   r   r   rc   r   r   r   r   r   r   r   r   rX   r   r   r   r   rg   r   r   r   )rA   r{   Z
successfulr   r   r   r;   r;   r<   r   ?  s4    




"zEdit.form_valid)"r7   r8   r9   r2   r   r-   ri   rg   r   r   r   r   r   delete_url_namedelete_item_labelr   enable_item_labelr   r   r   r   r   r   r   r   r   r   r   propertyr   r   r   r   rF   r;   r;   rD   r<   r      s4   
r   c                       s`   e Zd ZeZeZedZdZ	edZ
dZdZdZdZdZed	d
 Z fddZdd Z  ZS )r   zDisable workflowz+wagtailadmin/workflows/confirm_disable.htmlzWorkflow '%(object)s' disabled.rm   rn   r   ro   rI   c                 C   s   t | j| jd fdS Nr   r   r   r   r   r}   r;   r;   r<   get_edit_urlq  s    zDisable.get_edit_urlc                    sF   t  jf |}tjj| jtjd }|rBtdd|d|i |d< |S )N)r   statuszThis workflow is in progress on %(states_in_progress)d page/snippet. Disabling this workflow will cancel moderation on this page/snippet.zThis workflow is in progress on %(states_in_progress)d pages/snippets. Disabling this workflow will cancel moderation on these pages/snippets.states_in_progresswarning_message)	r>   r   r.   r   ra   r   STATUS_IN_PROGRESSrM   r   rA   r   rC   r   rD   r;   r<   r   u  s      
 zDisable.get_context_datac                 C   s   | j j| jjd d S N)r   r   Z
deactivaterX   r   r}   r;   r;   r<   delete_action  s    zDisable.delete_action)r7   r8   r9   r2   r   r-   ri   rg   r   r   r   r   r   r   r   r   r   r   r   r   rF   r;   r;   rD   r<   r   e  s   
r   c                 C   sV   t t|d}t| jd}| |@ }t|dd}|| j	d}t
| d||dS )Nr   change
   Zper_pager   z!wagtailadmin/workflows/usage.html)r   Zused_by)r   r-   r0   Z!instances_user_has_permission_forr   Z	all_pagesr   get_pager   r[   r   )rX   r   r   Zeditable_pagesr   r   r;   r;   r<   rv     s     rv   c                 C   s   t t|d}t| jdst|jsLd|_|  t	| t
dd|ji  | jdd }|rxt||  hdrxt|S td|jS d S )	Nr   r   Tz%Workflow '%(workflow_name)s' enabled.Zworkflow_namenexturlZallowed_hostsrn   )r   r-   r2   r   r   r   rc   r   r   r   rg   rd   r   r[   r   get_hostr   r   )rX   r   r   redirect_tor;   r;   r<   enable_workflow  s&     r   c                 C   s   t t|d}t| jdstt|dr`|r:||jjj	kr`|j
  t| tdd| i  | jdd }|rt||  hdrt|S td|jS d S )	Nr   r   workflowpagez,Workflow removed from Page '%(page_title)s'.r   r   r   Zwagtailadmin_explore)r   r*   r2   r   r   r   hasattrr   r   r   r   r   r   rg   Zget_admin_display_titler   r[   r   r   r   r   )rX   Zpage_pkZworkflow_pkr   r   r;   r;   r<   remove_workflow  s&    


 r   c                   @   s   e Zd ZdZdS )TaskTitleColumnz4wagtailadmin/workflows/includes/task_title_cell.htmlNr6   r;   r;   r;   r<   r     s   r   c                   @   s   e Zd ZdZdS )TaskUsageColumnz4wagtailadmin/workflows/includes/task_usage_cell.htmlNr6   r;   r;   r;   r<   r     s   r   c                       s4   e Zd Zdddd fddZG dd dZ  ZS )TaskFilterSetNrW   c                   sh   t  j||||d t }dd tjj|  D  t|dkrdtt	dt
j fdddd	| jd< d S )
NrW   c                 S   s   g | ]
}|j qS r;   r   ).0ctr;   r;   r<   
<listcomp>  s    z*TaskFilterSet.__init__.<locals>.<listcomp>r   Typec                    s   t jj dS )N)Zpk__in)r   r   ra   )rX   Zct_idsr;   r<   <lambda>      z(TaskFilterSet.__init__.<locals>.<lambda>content_type)rR   rU   r`   
field_name)r>   r^   r4   r   r   Zget_for_modelsvalueslenr   rg   r   ZCheckboxSelectMultiplerz   )rA   r_   r`   rX   rY   
task_typesrD   r   r<   r^     s    
zTaskFilterSet.__init__c                   @   s   e Zd ZeZg ZdS )zTaskFilterSet.MetaN)r7   r8   r9   r+   ri   rj   r;   r;   r;   r<   rk     s   rk   )NN)r7   r8   r9   r^   rk   rF   r;   r;   rD   r<   r     s   r   c                       s   e Zd ZeZeZdZdZdZ	dZ
dZdZdZedZed	Zd
ZededdddededdddededdddgZdZdgZeZdZdZdd Z fddZ fddZ  ZS )	TaskIndexrI   z&wagtailadmin/workflows/task_index.htmlz.wagtailadmin/workflows/task_index_results.html'wagtailadmin_workflows:select_task_type wagtailadmin_workflows:edit_task!wagtailadmin_workflows:task_indexz)wagtailadmin_workflows:task_index_resultszWorkflow tasksNew workflow task	thumbtackrd   rq   )rR   rs   ru   typer   get_verbose_namerr   )rR   accessorrt   rv   zUsed on_active_workflowsT2   c                 C   s   | j jjddkS rx   ry   r}   r;   r;   r<   rZ     s    zTaskIndex.show_disabledc                    s.   t    tdtjjdddddS )NrJ   T)Zworkflow__activer   r  )r`   Zto_attr)	r>   get_querysetspecificr   r   r/   r   ra   Zselect_relatedr}   rD   r;   r<   r    s    zTaskIndex.get_querysetc                    s   t  jf |}|  |d< |S r   r   r   rD   r;   r<   r   &  s    zTaskIndex.get_context_data) r7   r8   r9   r1   r   r+   ri   r   r   r   r   r   r   r   rg   r   r   r   r   r#   r   r   r   r   r   r   r   r   rZ   r  r   rF   r;   r;   rD   r<   r    sD      r  c                 C   sr   t | jdstdd t D }|jdd d t|dkrZ|d \}}}}td	||S t| d
|dt	ddS )Nr   c                 S   s(   g | ] }|  |jj|jj| fqS r;   r  _meta	app_label
model_nameget_descriptionr   ri   r;   r;   r<   r   0  s   z$select_task_type.<locals>.<listcomp>c                 S   s   | d   S Nr   lower	task_typer;   r;   r<   r   :  r   z"select_task_type.<locals>.<lambda>keyr   r   wagtailadmin_workflows:add_taskz,wagtailadmin/workflows/select_task_type.htmlr	  rp   )r  icontitle)
r1   r   r   r   r4   sortr  r   r   rg   )rX   r  verbose_namer  r  descriptionr;   r;   r<   select_task_type,  s"    
r$  c                   @   s`   e Zd ZeZdZedZdZedZ	dZ
dZdZdZd	Zed
d Zdd Zdd Zdd ZdS )
CreateTaskNr  z'wagtailadmin/workflows/create_task.htmlzTask '%(object)s' created.r  r  r  r	  Tc              	   C   s`   zt j| jd | jd }W n t jtfk
r<   tY nX | }t|t	rX|t	kr\t|S )Nr  r  )
r   r   Zget_by_natural_keyr   ZDoesNotExistAttributeErrorr
   Zmodel_class
issubclassr+   )rA   r   ri   r;   r;   r<   ri   Y  s     
zCreateTask.modelc                 C   s
   t | jS r   r   ri   r}   r;   r;   r<   r   k  s    zCreateTask.get_form_classc                 C   s$   t | j| jd| jdddS )Nr  r  )r  r  )r   )r   r   r   r[   r}   r;   r;   r<   get_add_urln  s    

zCreateTask.get_add_urlc                 C   sB   t | jttjjddtddt| jjji dg}| j	| S )Nr   rR    zNew: %(model_name)sr  )
r   r   r   r+   r  verbose_name_pluralrg   ri   r"  breadcrumbs_itemsrA   itemsr;   r;   r<   get_breadcrumbs_itemsw  s    
z CreateTask.get_breadcrumbs_items)r7   r8   r9   r1   r   ri   rg   r   r   r   r   r   r   r   r   r   r   r)  r0  r;   r;   r;   r<   r%  M  s   
	r%  c                       s   e Zd ZeZdZedZdZedZ	dZ
dZdZdZed	Zed
ZdZdZdZedd Zedd Zdd Zd fdd	Zdd Zdd Z fddZedd Z  ZS )EditTaskNzEditing workflow taskz%wagtailadmin/workflows/edit_task.htmlzTask '%(object)s' updated.r  r  #wagtailadmin_workflows:disable_taskr  r   r   z"wagtailadmin_workflows:enable_taskr	  Tc                 C   s   t |  S r   )r
  r   r}   r;   r;   r<   ri     s    zEditTask.modelc                 C   s   t dd|  jji S )NzEditing %(task_type)sr  )rg   r   r   rd   r}   r;   r;   r<   r     s     
zEditTask.page_titlec                 C   s   | j d krtj S d S r   )r`   r+   r   rK   r}   r;   r;   r<   r    s    
zEditTask.get_querysetc                    s   t   jS r   )r>   r   r  r   rD   r;   r<   r     s    zEditTask.get_objectc                 C   s   t | jddS )NT)Zfor_editr(  r}   r;   r;   r<   r     s    zEditTask.get_form_classc                 C   s2   t | jttjjddt| jdg}| j| S )Nr*  r+  )	r   r   r   r+   r  r,  strr   r-  r.  r;   r;   r<   r0    s    
zEditTask.get_breadcrumbs_itemsc                    sd   t  jf |}| jd ks*| j| jjdo0| jj|d< | jd ksR| j| jjdoZ| jj |d< |S )Nr   r   r   r   )r>   r   r   r   rX   r   r   rc   r   rD   r;   r<   r     s    

zEditTask.get_context_datac                 C   s   t | j| jjfdS r   r   r}   r;   r;   r<   r     s    zEditTask.get_enable_url)N)r7   r8   r9   r1   r   ri   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r0  r   r   r   rF   r;   r;   rD   r<   r1    s2   

r1  c                       s`   e Zd ZeZeZedZdZ	edZ
dZdZdZdZdZ fd	d
Zedd Zdd Z  ZS )DisableTaskzDisable taskz0wagtailadmin/workflows/confirm_disable_task.htmlzTask '%(object)s' disabled.r  r  r2  r  r	  c                    sJ   t  jf |}tjjtj|  jd }|rFt	dd|d|i |d< |S )N)r   taskzThis task is in progress on %(states_in_progress)d page/snippet. Disabling this task will cause it to be skipped in the moderation workflow and not be listed for selection when editing a workflow.zThis task is in progress on %(states_in_progress)d pages/snippets. Disabling this task will cause it to be skipped in the moderation workflow and not be listed for selection when editing a workflow.r   r   )
r>   r   r,   r   ra   r   r   r   rM   r   r   rD   r;   r<   r     s      
 zDisableTask.get_context_datac                 C   s   t | j| jd fdS r   r   r}   r;   r;   r<   r     s    zDisableTask.get_edit_urlc                 C   s   | j j| jjd d S r   r   r}   r;   r;   r<   r     s    zDisableTask.delete_action)r7   r8   r9   r1   r   r+   ri   rg   r   r   r   r   r   r   r   r   r   r   r   r   rF   r;   r;   rD   r<   r4    s   
r4  c                 C   s   t t|d}t| jdst|jsLd|_|  t	| t
dd|ji  | jdd }|rxt||  hdrxt|S td|jS d S )	Nr   r   TzTask '%(task_name)s' enabled.Z	task_namer   r   r  )r   r+   r1   r   r   r   rc   r   r   r   rg   rd   r   r[   r   r   r   r   )rX   r   r5  r   r;   r;   r<   enable_task  s"      r6  c                 C   s4   |j |jtd|j gdd}t| dddd|ddS )z_
    helper function: given a task, return the response indicating that it has been chosen
    r  r   )r   rd   Zedit_urlNtask_chosen)stepresultZ	json_data)r   rd   r   r!   )rX   r5  Zresult_datar;   r;   r<   get_task_chosen_response  s    r;  c                       s\   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Z  ZS )BaseTaskChooserViewc                    s2   t  | _t|jdo"t| jdk| _t |S )Nr   r   )	r4   task_modelsr1   r   r   r  
can_creater>   dispatchrA   rX   rD   r;   r<   r?    s
    zBaseTaskChooserView.dispatchc                 C   sP   | j rLt| jdkr| jd S d| jjkrLt| jjd }|| jkrHt|S dS )z
        To be called after dispatch(); returns the model to use for a new task if one is known
        (either from being the only available task mode, or from being specified in the URL as create_model)
        r   r   create_modelN)r>  r  r=  rX   r   r)   r
   )rA   rA  r;   r;   r<   get_create_model"  s    

z$BaseTaskChooserView.get_create_modelc                 C   s"   |   | _| jrt| jS dS dS )z_
        To be called after dispatch(); returns the form class for creating a new task
        N)rB  rA  r   r}   r;   r;   r<   get_create_form_class3  s    

z)BaseTaskChooserView.get_create_form_classc                 C   s   |   }|r|ddS dS )zf
        To be called after dispatch(); returns a blank create form, or None if not available
        create-taskrY   N)rC  )rA   create_form_classr;   r;   r<   get_create_form=  s    z#BaseTaskChooserView.get_create_formc                 C   s$   dd | j D }|jdd d |S )zl
        To be called after dispatch(); returns the task types list for the "select task type" view
        c                 S   s(   g | ] }|  |jj|jj| fqS r;   r  r  r;   r;   r<   r   I  s   z=BaseTaskChooserView.get_task_type_options.<locals>.<listcomp>c                 S   s   | d   S r  r  r  r;   r;   r<   r   S  r   z;BaseTaskChooserView.get_task_type_options.<locals>.<lambda>r  r=  r!  )rA   r  r;   r;   r<   get_task_type_optionsE  s
    
z)BaseTaskChooserView.get_task_type_optionsc                 C   s$   dd | j D }|jdd d |S )zx
        To be called after dispatch(); returns the list of task type choices for filter on "existing task" tab
        c                 S   s   g | ]}||  fqS r;   )r  r  r;   r;   r<   r   [  s    zDBaseTaskChooserView.get_task_type_filter_choices.<locals>.<listcomp>c                 S   s   | d   S )Nr   r  r  r;   r;   r<   r   ^  r   zBBaseTaskChooserView.get_task_type_filter_choices.<locals>.<lambda>r  rH  )rA   task_type_choicesr;   r;   r<   get_task_type_filter_choicesW  s
    z0BaseTaskChooserView.get_task_type_filter_choicesc                 C   s   i S r   r;   r}   r;   r;   r<   get_form_js_contexta  s    z'BaseTaskChooserView.get_form_js_contextc                 C   s   t | jj|  d}|jjjddtd }}d}|	 rT|j
d }|j|d}t|dd	}|| jjd
}||||| jdS )N)rJ  Trb   rd   r+  q)Zname__icontainsr   r   r   )search_formrI   	all_tasksZquery_stringr>  )r   rX   r   rK  Z
task_modelr   ra   Zorder_byr	   Zis_searchingr|   r   r   r[   r>  )rA   rN  rI   rO  rM  r   r;   r;   r<   get_task_listing_context_datad  s&     
z1BaseTaskChooserView.get_task_listing_context_datac                 C   s0   | j | jr"tdd | jj  nd |  dS )Nz*wagtailadmin_workflows:task_chooser_create?)create_formZadd_urlr  )rR  rA  r   rX   r   	urlencoderI  r}   r;   r;   r<   get_create_tab_context_data  s    
z/BaseTaskChooserView.get_create_tab_context_data)r7   r8   r9   r?  rB  rC  rG  rI  rK  rL  rP  rT  rF   r;   r;   rD   r<   r<    s   

r<  c                       s,   e Zd Z fddZdd Zdd Z  ZS )TaskChooserViewc                    s   |   | _t |S r   rG  rR  r>   r[   r@  rD   r;   r<   r[     s    
zTaskChooserView.getc                 K   s*   d| j i}||   ||   |S )Nr>  )r>  updaterP  rT  r   r;   r;   r<   r     s     z TaskChooserView.get_context_datac                 C   s$   |   }d|d< t| jdd ||dS )NZchooserr8  z0wagtailadmin/workflows/task_chooser/chooser.htmlr:  )rL  r!   rX   )rA   rC   
js_contextr;   r;   r<   render_to_response  s    z"TaskChooserView.render_to_response)r7   r8   r9   r[   r   rY  rF   r;   r;   rD   r<   rU    s   rU  c                       s4   e Zd Z fddZdd Zdd Zdd Z  ZS )	TaskChooserCreateViewc                    s   |   | _t |S r   rV  r@  rD   r;   r<   r[     s    
zTaskChooserCreateView.getc                 C   sZ   |   }|st S ||j|jdd| _| j rD| j }t||S |  }| 	|S d S )NrD  rE  )
rC  r   r   ZFILESrR  r   r   r;  r   rY  )rA   rX   rF  r5  rC   r;   r;   r<   post  s      


zTaskChooserCreateView.postc                 K   s   |   S r   )rT  rA   r   r;   r;   r<   r     s    z&TaskChooserCreateView.get_context_datac                 C   s:   t d|| j}|  }d|d< ||d< t| jd d d |dS )Nz<wagtailadmin/workflows/task_chooser/includes/create_tab.htmlZreshow_create_tabr8  ZhtmlFragmentr:  )r   rX   rL  r!   )rA   rC   Ztab_htmlrX  r;   r;   r<   rY    s        z(TaskChooserCreateView.render_to_response)r7   r8   r9   r[   r[  r   rY  rF   r;   r;   rD   r<   rZ    s   rZ  c                   @   s   e Zd ZdZdd ZdS )TaskChooserResultsViewz9wagtailadmin/workflows/task_chooser/includes/results.htmlc                 K   s   |   S r   )rP  r\  r;   r;   r<   r     s    z'TaskChooserResultsView.get_context_dataN)r7   r8   r9   r   r   r;   r;   r;   r<   r]    s   r]  c                 C   s   t t|d}t| |S )Nr   )r   r+   r;  )rX   task_idr5  r;   r;   r<   r7    s    r7  )N)nrf   djangor   Z"django.contrib.contenttypes.modelsr   Zdjango.core.exceptionsr   Zdjango.core.paginatorr   Z	django.dbr   Zdjango.db.modelsr   r   Zdjango.db.models.functionsr	   Zdjango.httpr
   r   Zdjango.shortcutsr   r   r   Zdjango.template.loaderr   Zdjango.urlsr   Zdjango.utils.functionalr   Zdjango.utils.httpr   Zdjango.utils.textr   Zdjango.utils.translationr   rg   r   Zdjango.views.decorators.httpr   Zdjango.views.genericr   Zwagtail.adminr   Zwagtail.admin.authr   Zwagtail.admin.filtersr   r   Zwagtail.admin.forms.workflowsr   r   r   r   r    Zwagtail.admin.modal_workflowr!   Zwagtail.admin.ui.tablesr"   r#   r$   Zwagtail.admin.views.genericr%   r&   r'   r(   Zwagtail.coreutilsr)   Zwagtail.modelsr*   r+   r,   r-   r.   r/   Zwagtail.permissionsr0   r1   r2   Zwagtail.snippets.modelsr3   Zwagtail.workflowsr4   Ztask_permission_checkerr5   r=   rG   rN   rh   rl   r   r   r   rv   r   r   r   r   r   r  r$  r%  r1  r4  r6  r;  r<  rU  rZ  r]  r7  r;   r;   r;   r<   <module>   sz    	6Rq#
8!:B#
u(