
    vg%                     2   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mZmZmZmZmZmZmZ  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d de      Z!y)zQ
offboarding/forms.py

This module is used to register forms for offboarding app
    N)Any)forms)messagesrender_to_string)	ModelForm)MultipleFileField)horilla_middlewares)notify)EmployeeTaskOffboardingOffboardingEmployeeOffboardingNoteOffboardingStageOffboardingStageMultipleFileOffboardingTaskResignationLetterc                   .    e Zd ZdZdZ G d d      Zd Zy)OffboardingFormz*
    OffboardingForm model form class
    r   c                       e Zd ZeZdZdgZy)OffboardingForm.Meta__all__	is_activeN)__name__
__module____qualname__r   modelfieldsexclude     %/var/www/horilla/offboarding/forms.pyMetar   %   s    -r!   r#   c                 &    d| i}t        d|      }|S zS
        Render the form fields as HTML table rows with Bootstrap styling.
        formzcommon_form.htmlr   selfcontext
table_htmls      r"   as_pzOffboardingForm.as_p*         4.%&8'B
r!   Nr   r   r   __doc__verbose_namer#   r+   r    r!   r"   r   r      s     !L   
r!   r   c                   .    e Zd ZdZdZ G d d      Zd Zy)OffboardingStageFormz%
    OffboardingStage model form
    Stagec                       e Zd ZeZdZddgZy)OffboardingStageForm.Metar   offboarding_idr   N)r   r   r   r   r   r   r   r    r!   r"   r#   r4   :   s     #[1r!   r#   c                 &    d| i}t        d|      }|S r%   r   r'   s      r"   r+   zOffboardingStageForm.as_p?   r,   r!   Nr-   r    r!   r"   r1   r1   3   s     L2 2
r!   r1   c                   @     e Zd ZdZdZ G d d      Zd Z fdZ xZS )OffboardingEmployeeFormz,
    OffboardingEmployeeForm model form
    zOffboarding c                   r    e Zd ZeZdZg dZ ej                  ddi       ej                  ddi      dZ	y)OffboardingEmployeeForm.Metar   )notice_periodunitr   typedateattrs)notice_period_startsnotice_period_endsN)
r   r   r   r   r   r   r   r   	DateInputwidgetsr    r!   r"   r#   r:   O   s>    #8$3EOO66:J$K"1%//8H"I
r!   r#   c                 &    d| i}t        d|      }|S r%   r   r'   s      r"   r+   zOffboardingEmployeeForm.as_pX   r,   r!   c                    t        |   |i | | j                  d   j                  j                  }d|d<   | j                  d   j                  j                  j                  |       | j                  d   j                  j                  }d|d<   | j                  d   j                  j                  j                  |       | j                  j                  r| j                  j                  r2| j                  j                  j                  d      | j                  d<   | j                  j                  r3| j                  j                  j                  d      | j                  d<   y y y )Nemployee_idzinitialNoticePeriod($(this))onchangerA   znoticePeriodUpdate($(this))z%Y-%m-%drB   )super__init__r   widgetr@   updateinstancepkrA   strftimeinitialrB   )r(   argskwargsr@   	__class__s       r"   rJ   z OffboardingEmployeeForm.__init__`   s&   $)&)M*1177:jM"))//66u=23::@@9j*+2288??F==}}11MM66??
K 34 }}//MM44==jI 12 0 r!   )	r   r   r   r.   r/   r#   r+   rJ   __classcell__rS   s   @r"   r8   r8   H   s(     "L
 
 r!   r8   c                   <     e Zd ZdZ G d d      Zdd fd
Z xZS )StageSelectFormzB
    This form is used to register drop down for the pipeline
    c                       e Zd ZeZdgZy)StageSelectForm.Metastage_idN)r   r   r   r   r   r   r    r!   r"   r#   rY   x   s    #
r!   r#   N)offboardingc                   t        |   |i | | j                  d   j                  j                  }d|d<   d|d<   | j                  d   j                  j                  j                  |       d | j                  d   _        t        j                  j                  |      | j                  d   _
        d| j                  d   _        y )NrZ   zoffboardingUpdateStage($(this))rH   zw-100 oh-select-customclass)r5    )rI   rJ   r   rK   r@   rL   empty_labelr   objectsfilterquerysetlabel)r(   r[   rQ   rR   r@   rS   s        r"   rJ   zStageSelectForm.__init__~   s    $)&)J'..44=j1gJ&&,,33E:.2J++;+C+C+J+J& ,K ,
J( )+J%r!   )r   r   r   r.   r#   rJ   rT   rU   s   @r"   rW   rW   s   s!    
 
 +/ 
+ 
+r!   rW   c                   V     e Zd ZdZdZ G d d      Z fdZd Zd
dede	f fd	Z
 xZS )NoteFormz%
    Offboarding note model form
    zAdd Notec                       e Zd ZeZdZdgZy)NoteForm.Metar   r   N)r   r   r   r   r   r   r   r    r!   r"   r#   rg      s    -r!   r#   c                 ~    t        |   |i | t        d      | j                  d<   d| j                  d   _        y )NAttachements)rc   
attachmentF)rI   rJ   r	   r   required)r(   rQ   rR   rS   s      r"   rJ   zNoteForm.__init__   s9    $)&)$5N$KL!-2L!*r!   c                 &    d| i}t        d|      }|S r%   r   r'   s      r"   r+   zNoteForm.as_p   r,   r!   commitreturnc                    g }d }| j                   j                  d      rt| j                   j                  d      }|d   | j                  _        g }|D ]>  }t	               }||_        |j                          |j                  |j                         @ t        |   |      }|r |j                  j                  |  ||fS )Nrj   r   )filesgetlistrM   rj   r   saveappendrN   rI   attachmentsadd)r(   rm   multiple_attachment_idsrt   rj   file_instancerM   rS   s          r"   rr   zNoteForm.save   s    "$::l+**,,\:K'21~DMM$&(#) A
 < >+5(""$'..}/?/?@	A
 7<'$H  $$&=>$$r!   .)r   r   r   r.   r/   r#   rJ   r+   boolr   rr   rT   rU   s   @r"   re   re      s;     L   
3
%4 %# % %r!   re   c                        e Zd ZdZdZ ej                  ej                  j                         d      Z
 G d d      Z fdZd Zdd	ed
ef fdZ xZS )TaskFormz
    TaskForm model form
    zOffboarding TaskF)rb   rk   c                       e Zd ZeZdZddgZy)TaskForm.Metar   statusr   N)r   r   r   r   r   r   r   r    r!   r"   r#   r}      s    [)r!   r#   c                    t        |   |i | d| j                  d   _        d | j                  d   _        | j                  j
                  st        j                  j                  t        j                  j                  | j                  j                  d            j                         j                        }|| j                  d   _        y y )NzAll Stages in OffboardingrZ   managers)id)stage_id__offboarding_idtasks_to)rI   rJ   r   r_   rM   rN   r   r`   ra   r   rP   getfirstr5   rb   )r(   rQ   rR   rb   rS   s       r"   rJ   zTaskForm.__init__   s    $)&).IJ+.2J+}}*2299)9)A)A)H)H||''
3 *I *  : H 08DKK
#,  r!   c                 &    d| i}t        d|      }|S r%   r   r'   s      r"   r+   zTaskForm.as_p   r,   r!   rm   rn   c                     t         |   |       |rB| j                  d   }|D ]-  }t        j                  j                  || j                        }/ y y )Nr   )rG   task_id)rI   rr   cleaned_datar   r`   get_or_createrM   )r(   rm   	employeesemployeeassigned_taskrS   s        r"   rr   zTaskForm.save   s\    V))*5I%  , 4 4 B B ( MM !C ! r!   rx   )r   r   r   r.   r/   r   ModelMultipleChoiceFieldr   r`   allr   r#   rJ   r+   ry   r   rr   rT   rU   s   @r"   r{   r{      sb     &L-u--$,,002H
* *
84 #  r!   r{   c                        e Zd ZdZ ej
                   ej                  ddd      d      ZdZ G d	 d
      Z	d Z
 fdZddedef fdZ xZS )ResignationLetterFormz
    Resignation Letter
    r^   zdisplay:none;)zdata-summernotestyler?   Description)rK   rc   zResignation Letterc                       e Zd ZeZdZdgZy)ResignationLetterForm.Metar   r   N)r   r   r   r   r   r   r   r    r!   r"   r#   r      s    !-r!   r#   c                 &    d| i}t        d|      }|S r%   r   r'   s      r"   r+   zResignationLetterForm.as_p   r,   r!   c                 <   t        |   |i | t        j                  ddd      | j                  d   _        g }| j                  j                  r=|j                  d       | j                  j                  j                         dz   | _        t        t        j                  dd       }|rG|j                  j!                  d	      s,|dd
gz   }|j                  j"                  | j                  _	        t%        t'        |            }|D ]  }| j                  |=  y )Nr>   zoh-input w-100)r=   r]   r?   planned_to_leave_onrG   z Resignation Letterrequest#offboarding.add_offboardingemployeer~   )rI   rJ   r   rC   r   rK   rM   rN   rs   rG   get_full_namer/   getattrr
   _thread_localsuserhas_permemployee_getlistset)r(   rQ   rR   r   r   fieldrS   s         r"   rJ   zResignationLetterForm.__init__   s    $)&)49OO!,<=5
)*1 ==NN=)))779<QQ  -<<iN7<<001VW! G )0(A(ADMM%s7|$ 	#EE"	#r!   rm   rn   c                    t        t        j                  dd       }| j                  }|j                  j                  d      s|j                  dk(  s|j                  j                  d      rt        | !  |      }nt        j                  |d       |j                  dk(  r|r|j                  j                  d      st        j                  t              5  t        j                  |j                  j                   | j                  j"                  j%                         j&                  | j                  j"                  j)                          d    dd		       d d d        |S |S # 1 sw Y   |S xY w)
Nr   r   	requestedadd_offboardingemployeez9You cannot edit a request that has been rejected/approvedz requested for resignation.#information)	recipientverbverb_arverb_deverb_esverb_frredirecticon)r   r
   r   rM   r   r   r~   rI   rr   r   info
contextlibsuppress	Exceptionr   sendr   rG   get_reporting_manageremployee_user_idr   )r(   rm   r   rM   rS   s       r"   rr   zResignationLetterForm.save  s-   -<<iN==%%&KL;.\\""#<=w|F+HMMT
 OO{*LL))*OP$$Y/ LL--"mm77MMO`` MM55CCEFFab &
 x s   BE))E3rx   )r   r   r   r.   r   	CharFieldTextareadescriptionr/   r#   r+   rJ   ry   r   rr   rT   rU   s   @r"   r   r      sc     "%//u~~_$UVK (L   
#04 #  r!   r   )"r.   r   typingr   djangor   django.contribr   django.template.loaderr   
base.formsr   employee.formsr	   horillar
   notifications.signalsr   offboarding.modelsr   r   r   r   r   r   r   r   r   r1   r8   rW   re   r{   r   r    r!   r"   <module>r      s       # 3   , ' (	 	 	i *9 *(i (V+i +0(%y (%V.y .bNI Nr!   