
    si
                     ,   d Z ddlZddl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 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 ddlm Z   eed       e ed      d       G d de                    Z! G d de      Z"y)z
Dashbord of project
    N)Any)CountQ)QuerySet)resolvereverse)method_decorator)cached_property)gettext_lazy)get_subordinates)login_required)HorillaDetailedViewHorillaListView)$is_projectmanager_or_member_or_perms)ProjectFilter)Projectdispatch)nameproject.view_projectc                   ^     e Zd ZeZeZdZ ed      ddfgZ	dZ
 fdZdeddf fd	Zd
Z xZS )ProjectsDueInMonthFr   title
get_avatarc                    t         	|          }| j                  j                  j	                  d      s| j                  j                  j
                  }|j                  t        |      t        |      z        }|j                  t        |      t        |      z        }||z  }t        j                  j                         }|j                  d      }t        j                  |j                  |j                        d   }|j                  |      }|j                  t        |      t        |	      z        j!                  d
      }|S )Nr   )task__task_members)task__task_manager)manager)members   )day)end_date__gte)end_date__lteexpired)status)superget_querysetrequestuserhas_permemployee_getfilterr   datetimedatetodayreplacecalendar
monthrangeyearmonthexclude)
selfquerysetemployeetask_filterproject_filterr.   	first_daylast_daylast_day_of_month	__class__s
            9/var/www/python-projects/worksol/project/cbv/dashboard.pyr&   zProjectsDueInMonth.get_queryset$   s   7')||  ))*@A||((55H"//X.h1OOK &__Qx-@1XCV-VWN"^3HMM'')E!,I**5::u{{CAFH %( ;	*Q=N-OOgYg'      kwargsreturnNc                 D    t        |   di | t        d      | _        y )Nzprojects-due-in-this-month )r%   __init__r   
search_url)r5   r@   r=   s     r>   rD   zProjectsDueInMonth.__init__6   s     "6"!">?r?   z
                hx-get='{get_detail_url}?instance_ids={ordered_ids}'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                )__name__
__module____qualname__r   modelr   filter_classbulk_select_option_columnsshow_filter_tagsr&   r   rD   	row_attrs__classcell__r=   s   @r>   r   r      sP     E L)g|45G$@ @ @Ir?   r   c                   r     e Zd ZdZeZ ed      ZddddZde	dd	f fd
Z
dee	   f fdZed        Z xZS )ProjectDetailViewz%
    detail view of the projects
    Detailsr    r   )r   subtitleavatarr@   rA   Nc                    t        |   di | t        | j                  j                        j
                  j                  d      }| j                  j                  j                  }t        j                  j                  |      }||j                  j                         v sA||j                  j                         v s%| j                  j                  j                  d      rt        d      dddg| _        y y )	Npk)idr   zView Projectzcreate-outlinezh
                    class = "oh-btn oh-btn--info w-100"
                    {redirect}
                )actioniconattrsrC   )r%   rD   r   r'   	path_infor@   getr(   r*   r   objectsmanagersallr   r)   rL   actions)r5   r@   
instnce_idr7   projectr=   s        r>   rD   zProjectDetailView.__init__K   s    "6"T\\334;;??E
<<$$11//%%%4((,,..7??..00||  ))*@A  /,	DL Br?   c                 Z    t         |          }|j                  t        d            }|S )Ntask)
task_count)r%   r&   annotater   )r5   r6   r=   s     r>   r&   zProjectDetailView.get_queryset`   s,    7')$$f$>r?   c           
      p   | j                         j                  j                  } |d      j                  df |d      j                  df |d      j                  dft	        d      df |d	      j                  d	f |d
      j                  d
f |d      j                  df |d      j                  dfgS )Nra   get_managersr   get_membersr$   get_status_displayzNo of Tasksrh   
start_dateend_datedocumentget_document_htmldescription)rI   _meta	get_fieldverbose_namerL   )r5   rt   s     r>   bodyzProjectDetailView.bodye   s    JJL&&00	z"//@y!..>x --/CD}|,|$11<@z"//<z"//1DE}%22MB	
 		
r?   )rF   rG   rH   __doc__r   rI   rL   r   headerr   rD   r   r&   r
   rv   rP   rQ   s   @r>   rS   rS   B   s[     EiLEB,GF  *hsm 
 
 
r?   rS   )#rw   r0   r,   typingr   django.db.modelsr   r   django.db.models.queryr   django.urlsr   r   django.utils.decoratorsr	   django.utils.functionalr
   django.utils.translationr   rL   base.methodsr   horilla_views.cbv_methodsr   horilla_views.generic.cbv.viewsr   r   project.cbv.cbv_decoratorsr   project.filtersr   project.modelsr   r   rS   rC   r?   r>   <module>r      s       % + ( 4 3 6 ) 4 P K ) " .z2()?@z# # 3#L/
+ /
r?   