
    si6Q                        d Z 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 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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-m.Z.m/Z/ ddl0m1Z1  ejd                  e3      Z4 eed       G d de!             Z5 eed       G d de             Z6 eed       G d de              Z7 eed       G d d e             Z8 G d! d"e8      Z9 eed       G d# d$e             Z: eed       G d% d&e             Z; G d' d(e6      Z<y))z1
This page handles the cbv methods for task page
    N)Any)forms)messages)Q)HttpResponse)render)reverse)method_decorator)cached_property)gettext_lazy)get_subordinates)login_required)HorillaCardViewHorillaDetailedViewHorillaFormViewHorillaListViewHorillaNavViewTemplateView)StageDynamicCreateForm)DynamicProjectCreationFormView)TaskAllFilter)TaskAllForm)you_dont_have_permission)ProjectProjectStageTask)task_crud_permdispatch)namec                       e Zd ZdZdZy)TasksTemplateViewz$
    view page of the task page
    z!cbv/tasks/task_template_view.htmlN)__name__
__module____qualname____doc__template_name     5/var/www/python-projects/worksol/project/cbv/tasks.pyr!   r!   '   s     8Mr(   r!   c                        e Zd ZdZeZeZdZde	ddf fdZ
 fdZed        Zed	        Zd
 ed      dfd ed      dfd ed      dfd ed      dfgZdZdZ xZS )TaskListViewz
    list view of the page
    actionskwargsreturnNc                 R    t        |   di | d| _        t        d      | _        y )Nztask-list-containertasks-list-viewr'   )super__init__view_idr	   
search_urlselfr-   	__class__s     r)   r2   zTaskListView.__init__:   s'    "6",!"34r(   c                 >   t         |          }| j                  j                  j	                  d      s| j                  j                  j
                  }t        | j                        }|D cg c]  }|j                   }}|j                  t        |      t        |      z  t        |      z  t        |      z        }|j                  t        |      t        |      z  t        |      z  t        |	      z        |z  }|j                         S c c}w 
Nproject.view_task)project__managers)project__members)project__managers__in)project__members__intask_members)task_managers)task_members__in)task_managers__inr1   get_querysetrequestuserhas_permemployee_getr   idfilterr   distinctr6   querysetemployee_idsubordinatessubordinatesubordinate_idsprojectr7   s          r)   rE   zTaskListView.get_queryset?      7')||  ))*=>,,++88K+DLL9LAMN+{~~NONooK0[12/:; 9:G ;/k239: /:;     ""! O   .Dc           
      ~   | j                         j                  j                  } |d      j                  df |d      j                  df |d      j                  df |d      j                  df |d      j                  df |d      j                  df |d	      j                  d
f |d      j                  dfgS )NtitlerS   stagerA   get_managersr@   get_membersend_datestatusget_status_displaydescriptionget_descriptionmodel_meta	get_fieldverbose_namer6   rc   s     r)   columnszTaskListView.columnsV   s    JJL&&00	w,,g6y!..	:w,,g6'44nE~&33]Cz"//<x --/CD}%224EF	
 		
r(   c                    | j                         j                  j                  } |d      j                  df |d      j                  df |d      j                  df |d      j                  df |d      j                  dfgS )NrW   rS   project__titlerX   r[   r\   r`   re   s     r)   sortby_mappingzTaskListView.sortby_mappingd   s    JJL&&00	w,,g6y!..0@Aw,,g6z"//<x --x8
 	
r(   	todo--dotTo Do
            onclick="
                $('#applyFilter').closest('form').find('[name=status]').val('to_do');
                $('#applyFilter').click();
            "
            in-progress--dotIn progress
            onclick="
                $('#applyFilter').closest('form').find('[name=status]').val('in_progress');
                $('#applyFilter').click();

            "
            completed--dot	Completed
            onclick="
                $('#applyFilter').closest('form').find('[name=status]').val('completed');
                $('#applyFilter').click();

            "
            expired--dotExpired
            onclick="
                $('#applyFilter').closest('form').find('[name=status]').val('expired');
                $('#applyFilter').click();

            "
            status-{status}
                hx-get='{task_detail_view}?instance_ids={ordered_ids}'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                )r"   r#   r$   r%   r   ra   r   filter_classaction_methodr   r2   rE   r   rf   ri   _row_status_indicationsrow_status_class	row_attrs__classcell__r7   s   @r)   r+   r+   0   s     E LM5 5 5
#. 
 
 
 
 gJ		
 m
	
 kN
	
 iL
	
C,\ )Ir(   r+   c                   N     e Zd ZdZg dZdZ e       ZdZdZ	de
ddf fd	Z xZS )
TasksNavBarz
    navbar of teh page
    )rS   rX   r\   formz#listContainerzcbv/tasks/task_filter.htmlr-   r.   Nc                    t        |   di | | j                  j                  j                  }t
        j                  j                         }|D cg c]#  }|j                  j                         D ]  }| % }}}t        d      | _
        ||v s%| j                  j                  j                  d      rdt        d       d| _        ddt        d      dd	d
dt        d      dd	g| _        | j                  j                  j                  d      r/t        d      ddt        d      ddt        d      ddg| _        y y c c}}w )Nr0   project.add_taska:  
                                    onclick = "event.stopPropagation();"
                                    data-toggle="oh-modal-toggle"
                                    data-target="#genericModal"
                                    hx-target="#genericModalBody"
                                    hx-get="zcreate-task-allz&"
                                    listzlist-outlinez?
                        title ='List'
                        )typeiconurlattrscardzgrid-outlinetasks-card-viewzC
                          title ='Card'
                          r:   Archivez
                            id="archiveTask",
                            style="cursor: pointer;"
                            )actionr   z
Un-Archivez
                            id="unArchiveTask",
                            style="cursor: pointer;"
                            Deletea  
                                class="oh-dropdown__link--danger"
                                data-action = "delete"
                                id="deleteTask"
                                style="cursor: pointer; color:red !important"

                                r'   )r1   r2   rF   rG   rI   r   objectsallmanagersr	   r4   rH   create_attrs
view_typesrz   r,   )r6   r-   employeeprojectsrS   managerr   r7   s          r)   r2   zTasksNavBar.__init__   sn   "6"<<$$11??&&(#+
7;K;K;O;O;Q
07G

 
 ""34x4<<#4#4#=#=>P#Q%-
 .55F-G,H I%!(D &01	 &01	
& <<%%&9:  	l   o   k$	DL ;A
s   (E)r"   r#   r$   r%   group_by_fieldsfilter_form_context_namer   filter_instancesearch_swap_targetfilter_body_templater   r2   r~   r   s   @r)   r   r      sB    O
  &#oO)7> > > >r(   r   c                        e Zd ZdZeZeZdZ e	d      dz   ej                  j                  z   Zdeddf fdZdd	 fd

Z fdZdedef fdZ xZS )TaskCreateFormz/
    Form view for create and update tasks
    zcbv/tasks/task_form.htmlCreate r-   r.   Nc                     t        |   di | | j                  j                  j	                  d      rdt
        fdt        dgfg| _        y y )Nr:   rS   rX   r'   )r1   r2   rF   rG   rH   r   r   dynamic_create_fieldsr5   s     r)   r2   zTaskCreateForm.__init__  sQ    "6"<<%%&9::;09+>*D& ;r(   )pkc                   | j                   j                  d      }| j                   j                  d      }| j                   j                  d      }|r/t        j                  j	                  |      j                         }n|r9t        j                  j	                  |      j                         j                  }nT|r;t        j                  j	                  |      j                         }	|	j                  }n|st        
|   |g|d|i|S |j                  j                  j                  j                         v s1|j                  j                  s|j                  j                  d      r*dt         fdt"        fg| _        t        
|   |g|d|i|S |rF|j                  j                  	j&                  j                         v rt        
|   |g|d|i|S y t)        |      S )N
project_idstage_idr   rJ   r   rS   rX   )r-   getr   r   rK   firstr   rS   r   r1   rG   rI   r   r   is_superuserrH   r   r   r   rA   r   )r6   rF   r   argsr-   r   r   task_idrS   taskr7   s             r)   r   zTaskCreateForm.get  s   [[__\2
;;??:.++//$'oo,,
,;AACG"**11X1>DDFNNG<<&&'&288:DllG7;w??"???LL%%)9)9)=)=)??||((||$$%78 :;01*D& 7;w??"???||((D,>,>,B,B,DDw{7CTCbCFCC E ,G44r(   c                 
   t        |   di |}| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }| j                  j
                  j                  d      }|r|dk7  rt        j                  j                  |      }| j                  j                  d   j                  j                  }d|d	<   d
t        d      fg|D 	cg c]  }	|	j                  |	f c}	z   dt        d      fgz   | j                  j                  d   _        |r|s| j                  j                   }
|
j"                  j$                  j'                         }d
t        d      fg|D 	cg c]  }	|	j                  |	f c}	z   dt        d      fgz   | j                  j                  d   _        |rt        j                  j                  |      j)                         }	|	j"                  }|	| j                  j                  d   _        |	j,                  |	j.                  fg| j                  j                  d   _        || j                  j                  d   _        |j,                  |j.                  fg| j                  j                  d   _        n|rt0        j                  j                  |      }|| j                  j                  d   _        |j,                  |j.                  fg| j                  j                  d   _        t        j                  j                  |      }|D 	cg c]  }	|	j,                  |	j.                  f c}	| j                  j                  d   _        n| j                  j                   j                  rt        d      | j2                  _        | j                  j
                  j                  d      rt7        j8                         | j                  j                  d   _        t7        j8                         | j                  j                  d   _        n7| j                  j:                  j<                  rdt>        fdt@        dgfg| _!        |s|r| j                  j:                  jD                  jF                  j'                         v s | j                  j:                  j<                  rd| j                  j                  d   j                  jI                  d       | j                  j                  d   j                  jI                  d       |S c c}	w c c}	w c c}	w )Nr   r   r   dynamic_projectdynamic_createrS   rX   zwidth:100% !important;style zSelect StagezDynamic Creater   rS   zUpdate Taskproject_task)r   zDynamic creater'   )%r1   get_context_datar-   r   rF   GETr   r   rK   r   fieldswidgetr   rz   r   choicesinstancerS   project_stagesr   r   initialrJ   rW   r   
form_classrd   r   HiddenInputrG   r   r   r   r   rI   r   append)r6   r-   contextr   r   r   dynamic_project_idstagesr   rX   r   rS   r7   s               r)   r   zTaskCreateForm.get_context_data.  sA   '*4V4[[__\2
;;??:.++//$'!\\--112CD"48H"H!))009K0LFII$$W-44::E5E'Na'()289EHHe$9:$a(8&9:;< IIW%- -99%%D\\00446Fa'()289EHHe$9:$a(8&9:;< IIW%-  ((//8/<BBDEmmG05DIIW%-27((EKK1H0IDIIW%-29DIIY'/4;JJ3N2ODIIY'/oo))Z)8G29DIIY'/4;JJ3N2ODIIY'/!))000AF5;1,15;;'1DIIW%- YY""+,]+;DOO(||##N35:5F5F5H		  +2383D3D3F		  )0||  -- >?4ykB.*
 !!..'2B2B2F2F2HH<<$$11 		  +33::8 		  )11888 k : : 1s   1UUUr   c                    | j                   j                  d      }|j                         r|j                  j                  r#t        | j                  j                   d      }nt        d      }|j                          t        j                  | j                  t        |             |s%| j                  j                  j                  d      rt        d      S | j                  d      S t        | 9  |      S )Nr   z UpdatedzNew Task createdr   z#<script>location.reload();</script>z+<script>$('#applyFilter').click();</script>)r-   r   is_validr   r   rz   r   saver   successrF   r   r   r1   
form_valid)r6   r   r   messager7   s       r)   r   zTaskCreateForm.form_valids  s    ;;??:.==?}}tyy112(;<./IIKT\\1W:64<<++//?#$IJJ$$%RSSw!$''r(   )r"   r#   r$   r%   r   ra   r   r   r&   rz   rb   rd   new_display_titler   r2   r   r   r   r   r~   r   s   @r)   r   r      st     EJ.M(c)EKK,D,DD   &* 5FCJ({ (| ( (r(   r   c                   "     e Zd ZdZ fdZ xZS )DynamicTaskCreateFormViewTc                    t        |   di |}| j                  j                  r| j                  j                  j	                  d      }|rt
        j                  j	                  |      }t        j                  j                  |      }|| j                  j                  d   _        |j                  |j                  fg| j                  j                  d   _        || j                  j                  d   _        |S )Nr   r   )project__idrS   rX   r'   )r1   r   rF   r   r   r   r   r   rK   r   r   r   rJ   rW   r   rN   )r6   r-   r   r   rS   r   r7   s         r)   r   z*DynamicTaskCreateFormView.get_context_data  s    '*4V4<<))--l;J!//---<%--444L6=		  +38?

GMM7R6S		  +35;		  )2r(   )r"   r#   r$   is_dynamic_create_viewr   r~   r   s   @r)   r   r     s    ! r(   r   c                   D    e Zd ZdZeZ ed      ZdZddddZ	e
d        Zy	)
TaskDetailViewz&
    detail view of the task page
    zTask Detailsdetail_view_actionsrW   rS   
get_avatar)rW   subtitleavatarc                    | j                         j                  j                  } |d      j                  df |d      j                  df |d      j                  df |d      j                  df |d      j                  df |d      j                  d	f |d
      j                  d
f |d      j                  df |d      j                  ddfg	S )NrW   rS   rX   rA   rY   r@   rZ   r\   r]   r[   r^   documentdocument_colTr`   re   s     r)   bodyzTaskDetailView.body  s    JJL&&00	w,,g6y!..	:w,,g6'44nE~&33]Cx --/CDz"//<}%22MBz"//F

 
	
r(   N)r"   r#   r$   r%   r   ra   rz   rW   ry   headerr   r   r'   r(   r)   r   r     s;     EnE)MINF
 
r(   r   c                        e Zd ZdZeZeZdeddf fdZ	 fdZ
ddd	d
ZdZd ed      dfd ed      dfd ed      dfd ed      dfgZdZ xZS )TaskCardViewz
    card view of the page
    r-   r.   Nc                     t        |   di | d| _        t        d      | _        t        d      dddt        d      dddt        d	      dd
dg| _        y )Nz	task-cardr   Editz1project.cbv.accessibility.task_crud_accessibilityaS  
                        data-toggle = "oh-modal-toggle"
                        data-target = "#genericModal"
                        hx-target="#genericModalBody"
                        hx-get ='{get_update_url}'
                        class="oh-dropdown__link"
                        style="cursor: pointer;"
                        )r   accessibilityr   archive_statusz
                href="{get_archive_url}"
                        onclick="return confirm('Do you want to {archive_status} this task?')"
                        class="oh-dropdown__link"
                        r   a  
                    onclick="
                                event.stopPropagation()
                                deleteItem({get_delete_url});
                                "
                    class="oh-dropdown__link oh-dropdown__link--danger"
                    r'   )r1   r2   r3   r	   r4   rz   r,   r5   s     r)   r2   zTaskCardView.__init__  st    "6""!"34 F)!T ,-!T H+!T
-!
r(   c                 >   t         |          }| j                  j                  j	                  d      s| j                  j                  j
                  }t        | j                        }|D cg c]  }|j                   }}|j                  t        |      t        |      z  t        |      z  t        |      z        }|j                  t        |      t        |      z  t        |      z  t        |	      z        |z  }|j                         S c c}w r9   rD   rM   s          r)   rE   zTaskCardView.get_queryset  rT   rU   r   z{title}zOProject Name : {if_project} <br> Stage Name : {stage}<br> End Date : {end_date})	image_srcrW   r   rw   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   )r"   r#   r$   r%   r   ra   r   rx   r   r2   rE   details
card_attrsrz   card_status_indicationscard_status_classr~   r   s   @r)   r   r     s     E L%
 %
 %
N#0 "eGJ gJ		
 m
	
 kN
	
 iL
	
C,\ *r(   r   c                   :     e Zd Zdeddf fdZd ZdZdZdZ xZ	S )TasksInIndividualViewr-   r.   Nc                     t        |   di | | j                  j                  j	                  d      }d| d| _        y )NrO   zS
                hx-get='{task_detail_view}?instance_ids={ordered_ids}&employee_id=z'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                r'   )r1   r2   rF   r   r   r}   )r6   r-   rO   r7   s      r)   r2   zTasksInIndividualView.__init__6  sH    "6"ll&&**=9WWbVc dr(   c                 8   t        j                  |       }| j                  j                  j	                  d      }| j                  j                  j	                  d      }|j                  t        |      t        |      z        }|j                  |      }|S )NrO   r   r?   )task_managerr   )r   rE   rF   r   r   rK   r   )r6   rN   rO   r   s       r)   rE   z"TasksInIndividualView.get_queryset@  s}    "//5ll&&**=9\\%%)),7
??;'!*EE
 ??:?6r(   )
r"   r#   r$   r   r2   rE   r{   bulk_select_optionry   r~   r   s   @r)   r   r   4  s.       "Mr(   r   )=r%   loggingtypingr   djangor   django.contribr   django.db.modelsr   django.httpr   django.shortcutsr   django.urlsr	   django.utils.decoratorsr
   django.utils.functionalr   django.utils.translationr   rz   base.methodsr   horilla_views.cbv_methodsr   horilla_views.generic.cbv.viewsr   r   r   r   r   r   project.cbv.project_stager   project.cbv.projectsr   project.filtersr   project.formsr   project.methodsr   project.modelsr   r   r    project.templatetags.taskfiltersr   	getLoggerr"   loggerr!   r+   r   r   r   r   r   r   r'   r(   r)   <module>r     s^      #  $ #  4 3 6 ) 4  = ? ) % 4 6 6 ;			8	$ .z28 8 38 .z2s? s 3sl .z2M. M 3M` .z2F(_ F( 3F(R $ .z2
( 
 3
4 .z2A*? A* 3A*HL r(   