
    si?$                        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	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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)m*Z*  eed       e ed      d       G d de#                    Z+ eed       e ed      d       G d de"                    Z, eed       e ed      d       G d de!                    Z- eed       e ed      d       G d de                    Z. eed       e ed      d       G d d e                    Z/ eed       e ed      d       G d! d"e                     Z0 eed       e ed#      d       G d$ d%e                    Z1 eed       G d& d'e             Z2y)(z*
this page handles cbv of key result page
    N)Any)messages)HttpResponse)redirectrender)reverse)method_decorator)gettext_lazy)View)closest_numbers)manager_can_enter)login_requiredpermission_required)HorillaHistoryView)HorillaCardViewHorillaDetailedViewHorillaFormViewHorillaListViewHorillaNavViewTemplateView)ActualKeyResultFilter)KRForm)EmployeeKeyResult	KeyResultdispatch)namezpms.view_keyresult)permc                       e Zd ZdZdZy)KeyResultViewPagez
    for key result page
    z$cbv/key_results/key_result_home.htmlN)__name__
__module____qualname____doc__template_name     6/var/www/python-projects/worksol/pms/cbv/key_result.pyr   r   !   s     ;Mr&   r   c                   V     e Zd ZdZdeddf fdZ ed      Z e       Z	dZ
dZd	Z xZS )
KeyResultNavViewz
    navbar of the page
    kwargsreturnNc                     t        |   di | t        d      | _        dt        d       d| _        ddt        d      ddd	d
t        d      ddg| _        y )Nfilter-key-resultz
                        data-toggle="oh-modal-toggle"
                        data-target="#genericModal"
                        hx-get="zcreate-key-resultzP"
                        hx-target="#genericModalBody"
                        listzlist-outlinezF
                            title='List'
                            )typeiconurlattrscardzgrid-outlinekey-result-card-viewzF
                            title='Card'
                            r%   )super__init__r   
search_urlcreate_attrs
view_typesselfr*   	__class__s     r'   r6   zKeyResultNavView.__init__2   s    "6"!"56!! "))<!= > ? &23 	 &56 	
r&   Key Resultsz&cbv/key_results/key_result_filter.htmlformz#listContainer)r    r!   r"   r#   r   r6   _	nav_titler   filter_instancefilter_body_templatefilter_form_context_namesearch_swap_target__classcell__r<   s   @r'   r)   r)   +   sA    
 
 
< - I+-OC%)r&   r)   c                        e Zd ZeZeZdeddf fdZ e	d      df e	d      df e	d	      d
f e	d      df e	d      dfgZ
g dZdZdZ xZS )KeyResultsListViewr*   r+   Nc                 R    t        |   di | t        d      | _        d| _        y )Nr-   key-result-containerr%   r5   r6   r   r7   view_idr:   s     r'   r6   zKeyResultsListView.__init__^   s'    "6"!"56-r&   r=   titleProgress Typeget_progress_typeTarget Valuetarget_valueDurationdurationDescriptiondescription))rN   rO   )rP   rQ   )rR   rS   
action_col
                hx-get='{get_detail_url}?instance_ids={ordered_ids}'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                )r    r!   r"   r   modelr   filter_classr   r6   r?   columnssortby_mappingaction_method	row_attrsrE   rF   s   @r'   rH   rH   W   s     E(L. . . 
=	7#	
?	01	
>	N+	
:
#	
=	=)GN !MIr&   rH   c                   p     e Zd ZdZeZeZdeddf fdZ	dddd	Z
d
Z ed      dd ed      ddgZ xZS )KeyResultCardViewz
    card view of the page
    r*   r+   Nc                 R    t        |   di | t        d      | _        d| _        y )Nr4   rJ   r%   rK   r:   s     r'   r6   zKeyResultCardView.__init__   s'    "6"!"89-r&   
get_avatarz{title}zMTarget Value : {target_value} {progress_type} <br> Duration : {duration} Days)	image_srcrM   subtitlerW   Editz
                    class="oh-dropdown__link"
                    hx-get='{get_update_url}?instance_ids={ordered_ids}'
			        hx-target="#genericModalBody"
			        data-toggle="oh-modal-toggle"
			        data-target="#genericModal"
            )actionr2   Deletea  
                    class="oh-dropdown__link"
                    hx-confirm="Do you want to delete this Key result?"
                    hx-post='{get_delete_url}'
                    hx-swap="innerHTML"
                    hx-target="#key-result-container"
                )r    r!   r"   r#   r   rX   r   rY   r   r6   details
card_attrsr?   actionsrE   rF   s   @r'   r_   r_   {   sm     E(L. . . "cGJ i		
 k		
Gr&   r_   c                       e Zd ZdZeZ ed      ZddddZ ed      df ed      d	f ed
      df ed      df ed      dfgZ	dZ
y)KeyResultsDetailedViewz
    Detail View
    DetailsrM    ra   )rM   rc   avatarr=   rN   rO   rP   rQ   rR   rS   rT   rU   detail_action_colN)r    r!   r"   r#   r   rX   r?   rM   headerbodyr\   r%   r&   r'   rk   rk      sz     EiLE F 
=	7#	
?	01	
>	N+	
:
#	
=	=)D (Mr&   rk   c                   b     e Zd ZdZeZeZ ed      Z	 fdZ
dedef fdZdedef fdZ xZS )KeyResultFormViewz5
    form view for create and update key results
    zCreate Key resultc                     t        |   di |}| j                  j                  j                  rt        d      | j                  _        | j                  |d<   |S )NUpdate Key resultr>   r%   )r5   get_context_datar>   instancepkr?   
form_classverbose_name)r;   r*   contextr<   s      r'   rv   z"KeyResultFormView.get_context_data   sL    '*4V499  +,-@+ADOO())r&   r>   r+   c                 2   | j                   j                  j                  rt        d      | j                  _        |j                         s>|j                  j                         }t        | j                  | j                  ||d      S t        | 5  |      S )Nru   )r>   errors)r>   rw   rx   r?   ry   rz   is_validr}   as_datar   requestr$   r5   form_invalid)r;   r>   r}   r<   s      r'   r   zKeyResultFormView.form_invalid   sx    99  +,-@+ADOO(}}[[((*Fd00462R  w#D))r&   c                    |j                         r|j                  j                  rBt        j                  | j
                  t        d| j                  j                   d             nAt        j                  | j
                  t        d| j                  j                   d             |j                          | j                         S t        | -  |      S )NzKey result z updated successfullyz created successfully)r~   rw   rx   r   successr   r?   r>   saver   r5   
form_valid)r;   r>   r<   s     r'   r   zKeyResultFormView.form_valid   s    ==?}}  LLDII$6$6#77LMN
   LLDII$6$6#77LMN IIK$$&&w!$''r&   )r    r!   r"   r#   r   rX   r   ry   r?   new_display_titlerv   r   r   r   r   rE   rF   s   @r'   rs   rs      sP     EJ-.* * *(v (, ( (r&   rs   zemployee.delete_actiontypec                       e Zd ZdZd Zy)DeleteKeyResultsz)
    Handle deletion of key results.
    c                 (   |j                   j                  d      }d}d}|r5t        j                  |      }t	        ||      \  }}|j                  |       t        j                  j                  |      }|r0|j                          t        j                  |t        d             nt        j                  |t        d             dd| d| d	i}| j                  j                  j                  d
      }	|j                  |	      }
t        |
      S )z?
        Handle POST request to delete an action type.
        instances_idsN)idz!Ket result  deleted successfully!zKey result not foundgenericModalBodyz/pms/key-result-detail-view/z?instance_ids=z&deleted=trueHTTP_HX_TARGET)GETgetjsonloadsr   remover   objectsdeleter   r   r?   errorr   METAr   )r;   r   key_idr   next_instanceinstances_listprevious_instance
key_resultpathshttp_hx_targetredirected_paths              r'   postzDeleteKeyResults.post  s    
  8!ZZ6N/>~v/V,}!!&)&&**f*5
Wa(K&LM NN7A&<$=>">}o^\j[kkx y
 **../?@))N3((r&   N)r    r!   r"   r#   r   r%   r&   r'   r   r      s    
)r&   r   c                   &     e Zd ZdZeZ fdZ xZS )
EKRHistoryz
    EKR History
    c                 x    t        |   di | | j                  j                  j	                  d      | _        y )Nzpms.change_employeekeyresultr%   )r5   r6   r   userhas_permhas_perm_to_revertr:   s     r'   r6   zEKRHistory.__init__*  s3    "6""&,,"3"3"<"<*#
r&   )r    r!   r"   r#   r   rX   r6   rE   rF   s   @r'   r   r   "  s     E
 
r&   r   )3r#   r   typingr   django.contribr   django.httpr   django.shortcutsr   r   django.urlsr   django.utils.decoratorsr	   django.utils.translationr
   r?   django.viewsr   base.methodsr   horilla.decoratorsr   horilla_views.cbv_methodsr   r   !horilla_views.generic.cbv.historyr   horilla_views.generic.cbv.viewsr   r   r   r   r   r   pms.filtersr   	pms.formsr   
pms.modelsr   r   r   r)   rH   r_   rk   rs   r   r   r%   r&   r'   <module>r      s     # $ -  4 6  ( 0 I @  .  3 .z2#)=>ZP; ; Q 3; .z2#)=>ZP'*~ '* Q 3'*T .z2#)=>ZP  Q 3D .z2#)=>ZP4 4 Q 34n .z2#)=>ZP(0 ( Q 3(2 .z2#)=>ZP*( *( Q 3*(Z .z29:)t ) 3)@ .z2
# 
 3
r&   