
    sif'                        d 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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#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) ddl*m+Z+  ee&d       e ed      d       G d de(                    Z, G d de(      Z- ee&d       e ed      d       G d de(                    Z G d d e(      Z. G d! d"e)      Z/y#)$z=
This page handles the cbv methods for document request page
    )Any)forms)messages)HttpResponse)get_object_or_404)reversereverse_lazy)method_decorator)gettext_lazy)choosesubordinatesis_reportingmanager)DocumentRequestFilter)Employee)manager_can_enter)DocumentForm)DocumentRejectCbvForm)DocumentRequestFormDocumentUpdateForm)DocumentDocumentRequest)login_required)HorillaFormViewHorillaNavView)notifydispatch)name%horilla_documents.add_documentrequestc                   N     e Zd ZdZeZeZ ed      Z	 fdZ
dedef fdZ xZS )DocumentRequestCreateFormz:
    form view for create and update document request
    zCreate Document Requestc                     t        |   di |}t        | j                  | j                  d      | _        | j                  j
                  j                  rt        d      | j                  _	        |S )Nr   zUpdate Document Request )
superget_context_datar   requestforminstancepk_
form_classverbose_nameselfkwargscontext	__class__s      A/var/www/python-projects/worksol/employee/cbv/document_request.pyr#   z*DocumentRequestCreateForm.get_context_data)   s]    '*4V4&LL$))%L
	 99  +,-F+GDOO(    r%   returnc                 \   |j                         r|j                  j                  r| j                  j                  j                  }t        j
                  j                  |      }|j                         }|j                  j                  t        j
                  j                  |j                  j                  d                   |j                  |j                  j                               j                          t!        j"                  | j$                  t'        d             nZt!        j"                  | j$                  t'        d             |j(                  d   j                         }|D cg c]  }|j*                   }}t-        j.                  | j$                  j0                  j2                  || j$                  j0                  j2                   dd| j$                  j0                  j2                   d	| j$                  j0                  j2                   d
| j$                  j0                  j2                   d| j$                  j0                  j2                   dt5        d      d	       |j                          | j7                  d      S t8        | u  |      S c c}w )N)document_request_idemployee_id)id__in)employee_id__inz%Document Request Updated Successfullyz%Document request created successfullyz requested a document.u   طلب u    مستنداً.z hat ein Dokument angefordert.u    solicitó un documento.u    a demandé un document.zemployee-profilechatbox-ellipses	recipientverbverb_arverb_deverb_esverb_frredirecticon*<script>window.location.reload();</script>)is_validr&   r'   r%   r   objectsfiltersaver5   setr   datagetlistexcludealldeleter   successr$   r(   cleaned_dataemployee_user_idr   senduseremployee_getr   r   r"   
form_valid)	r,   r%   r'   	documentsdoc_objemprQ   usersr/   s	           r0   rS   z$DocumentRequestCreateForm.form_valid3   s   ==?}}YY''**$,,333K	))+##''$$++4993D3D]3S+T !!'2E2E2I2I2K!LSSU  LL!$K"L   LL!$K"L ''6::<;>?4..??LL%%22# LL--::;;QR%dll&7&7&D&D%EEUV#||00==>>\]#||00==>>VW#||00==>>VW$%78+
 		$$%QRRw!$'' @s   9J))__name__
__module____qualname____doc__r   r)   r   modelr(   new_display_titler#   r   rS   __classcell__r/   s   @r0   r   r      s>    
 %JE34 (2  (|  (  (r1   r   c                   T     e Zd ZdZeZeZ ed      Z	de
f fdZdedef fdZ xZS )DocumentCreateFormz'
    form view for upload document
    r   r2   c                 n    t         |          }| j                  j                  d      }||d<   d |d<   |S )Nemp_idr5   expiry_date)r"   get_initialr-   get)r,   initialr5   r/   s      r0   re   zDocumentCreateForm.get_initial_   s;    '%'kkooh/!,!%r1   r%   c                     |j                         rDt        j                  | j                  t	        d             |j                          t        d      S t        | !  |      S )NzDocument Uploaded SuccessfullyrB   )	rC   r   rM   r$   r(   rF   r   r"   rS   r,   r%   r/   s     r0   rS   zDocumentCreateForm.form_validf   sK    ==?T\\1-M+NOIIK LMMw!$''r1   )rX   rY   rZ   r[   r   r)   r   r\   r(   r]   dictre   r   rS   r^   r_   s   @r0   ra   ra   V   sB     JE*T (| ( ( (r1   ra   zhorilla_documents.add_documentc                   N     e Zd ZdZeZeZ ed      Z	 fdZ
dedef fdZ xZS )r   z[
    form view for rejecting document on document request and employee individual view
    z"Do you want to reject this requestc                     t        |   di |}| j                  j                  j                  rt        d      | j                  _        |S )NRejectr!   )r"   r#   r%   r&   r'   r(   r)   r*   r+   s      r0   r#   z&DocumentRejectCbvForm.get_context_datay   s=    '*4V499  +,X;DOO(r1   r%   r2   c                    |j                         r| j                  j                  j                  r_d| j                  j                  _        |j                          t        j                  | j                  t        d             t        d      S t        j                  | j                  t        d             t        d      S t        | 5  |      S )NrejectedzDocument request rejectedzNo document uploadedrB   )rC   r%   r&   documentstatusrF   r   rM   r$   r(   errorr   r"   rS   ri   s     r0   rS   z DocumentRejectCbvForm.form_valid   s    ==?yy!!**,6		"")		  q1L/MN   LMM t||Q/E-FG LMMw!$''r1   )rX   rY   rZ   r[   r   r\   
RejectFormr)   r(   
hx_confirmr#   r   rS   r^   r_   s   @r0   r   r   n   s<     EJ78J	(z 	(l 	( 	(r1   r   c                   B     e Zd ZdZeZeZdZ fdZ	dede
f fdZ xZS )DocumentUploadFormzY
    form view for upload documents on document request and employee individual view
    zcbv/documents/inherit_form.htmlc                    t        |   di |}t        j                         | j                  j
                  d   _        t        j                         | j                  j
                  d   _        t        j                         | j                  j
                  d   _        t        j                         | j                  j
                  d   _        t        j                         | j                  j
                  d   _        t        j                         | j                  j
                  d   _        | j                  j                  j                  rt        d      | j                  _        |S )	Ntitler5   r4   rq   reject_reasonis_digital_assetzUpload Filer!   )r"   r#   r   HiddenInputr%   fieldswidgetr&   r'   r(   r)   r*   r+   s      r0   r#   z#DocumentUploadForm.get_context_data   s    '*4V4+0+<+<+>		!(161B1B1D		'.9>9J9J9L		./6,1,=,=,?		")383D3D3F		)06;6G6G6I		+,399  +,]+;DOO(r1   r%   r2   c                    |j                         r|j                  j                  rwt        j                  | j
                  t        d             	 t        j                  | j
                  j                  j                  | j
                  j                  j                  j                         j                  | j
                  j                  j                   dd| j
                  j                  j                   d| j
                  j                  j                   d| j
                  j                  j                   d| j
                  j                  j                   dt        dd	| j
                  j                  j                  j                  i
      d	       |j                          t!        d      S t"        | I  |      S #  Y .xY w)NzDocument uploaded successfullyz uploaded a documentu   قام u    بتحميل مستندz hat ein Dokument hochgeladenu    subió un documentou    a téléchargé un documentzemployee-view-individualobj_id)r-   r8   r9   rB   )rC   r&   r'   r   rM   r$   r(   r   rP   rQ   rR   get_reporting_managerrO   r   idrF   r   r"   rS   ri   s     r0   rS   zDocumentUploadForm.form_valid   sf   ==?}}  q1Q/RSKK))66"&,,"3"3"@"@"V"V"X"i"i $ 1 1 > >??ST")$,,*;*;*H*H)IIa b#'<<#4#4#A#A"BB_ `#'<<#4#4#A#A"BBV W#'<<#4#4#A#A"BB^ _!(6$,dll.?.?.L.L.O.O#P" 0  IIK LMMw!$''	s   EG G)rX   rY   rZ   r[   r   r\   r   r)   template_namer#   r   rS   r^   r_   s   @r0   rv   rv      s7     E#J5M(1 (l ( (r1   rv   c                   V     e Zd ZdZdeddf fdZ ed      ZdZ e	       Z
dZd	Z xZS )
DocumentRequestNavz
    For nav bar
    r-   r2   Nc                 n   t        |   di | t        | j                        }|j	                  d       t        |      | _        t        d      | _        | j                  rO| j                  j                  j                  d      st        | j                        rdt        d       d| _        nd| _        | j                  j                  j                  d      st        | j                        r<t        d	      d
t        d       ddt        d      dt        d       ddg| _        y d | _        y )Nreferrerzdocument-request-filter-viewr   z
                                data-toggle="oh-modal-toggle"
                                data-target="#genericModal"
                                hx-target="#genericModalBody"
                                hx-get="zdocument-request-createz""
                                 z(horilla_documents.change_documentrequestzBulk Approve RequestszK
                    id="bulkApproveDocument"
                    hx-post="zdocument-bulk-approvea  "
                    hx-confirm='Do you really want to approve all the selected requests?'
                    style="cursor: pointer;"
                    hx-on:click="validateDocsIds(event, 'approved');"
                    data-action="approved"
                    )actionattrszBulk Reject Requestsz
                    hx-get=zdocument-bulk-rejecta  
                    data-target="#objectCreateModal"
                    data-toggle="oh-modal-toggle"
                    hx-on:click="validateDocsIds(event, 'rejected');"
                    data-action="rejected"
                    hx-target="#objectCreateModalTarget"
                    id="bulkRejectDocument"
                    style="cursor: pointer;"
                    r!   )r"   __init__rG   empty_inputsaddlistr   
search_urlr$   rQ   has_permr   r	   create_attrsr(   actions)r,   r-   helper_inputsr/   s      r0   r   zDocumentRequestNav.__init__   s4   "6"D--.*% /!"@A<<LL&&'NO"4<<0%) *66O)P(Q R!	!$D !#D<<%%6
 .   78"%&=>? @
   67"#$:;< =	DL6  DLr1   zDocument Requestsz"cbv/documents/document_filter.htmlr%   z#view-container)rX   rY   rZ   r[   r   r   r(   	nav_titlefilter_body_templater   filter_instancefilter_form_context_namesearch_swap_targetr^   r_   s   @r0   r   r      sC    1  1  1 f %&I?+-O%*r1   r   N)0r[   typingr   djangor   django.contribr   django.httpr   django.shortcutsr   django.urlsr   r	   django.utils.decoratorsr
   django.utils.translationr   r(   base.methodsr   r   employee.filtersr   employee.modelsr   horilla.decoratorsr   horilla_documents.formsr   r   rs   r   r   horilla_documents.modelsr   r   horilla_views.cbv_methodsr   horilla_views.generic.cbv.viewsr   r   notifications.signalsr   r   ra   rv   r   r!   r1   r0   <module>r      s      # $ . - 4 6 @ 2 $ 0 0 G K > 4 K ( .z2=>Z3( 3( 33(l( (0 .z2#$DEJW(O ( X 3(6-( -(`<+ <+r1   