
    si"                        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
mZ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 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%  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*y) z)
this page handles cbv of interview page
    )Any)messages)HttpResponse)render)resolvereversereverse_lazy)method_decorator)gettext_lazy)login_required)HorillaDetailedViewHorillaFormViewHorillaListViewHorillaNavViewTemplateView)notify)manager_can_enterrecruitment_manager_can_enter)InterviewFilter)ScheduleInterviewForm)	CandidateInterviewScheduledispatch)namezrecruitment.view_recruitment)permc                       e Zd ZdZdZy)InterviewViewPagez
    for interview page
    z&cbv/interview/interview_home_view.htmlN)__name__
__module____qualname____doc__template_name     =/var/www/python-projects/worksol/recruitment/cbv/interview.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 )
InterviewNavViewz
    nav bar of the page
    kwargsreturnNc                     t        |   di | t        d      | _        | j                  j
                  j                  d      rdt        d       d| _        y d | _        y )Ninterview-list-viewview_interviewschedulez
                hx-get="zcreate-interview-schedulez"
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
            r#   )	super__init__r   
search_urlrequestuserhas_permr	   create_attrsselfr(   	__class__s     r%   r.   zInterviewNavView.__init__2   sd    "6"!"78<<%%&>?%%&ABC D!D !%Dr$   zScheduled Interviewsz#cbv/interview/interview_filter.htmlformz#listContainer)r   r   r    r!   r   r.   _	nav_titler   filter_instancefilter_body_templatefilter_form_context_namesearch_swap_target__classcell__r6   s   @r%   r'   r'   )   sB    
% % % ()I%'O@%)r$   r'   c                        e Zd ZdZg dZdeddf fdZ fdZeZ	e
ZdZd	Z ed
      df ed      df ed      df ed      df ed      df ed      dfgZddiZddgZdZdZ xZS )InterviewLIstViewz
    list view of the page
    )employee_idinterview_dateinterview_timer(   r)   Nc                 R    t        |   di | t        d      | _        d| _        y )Nr+   interviewdeleter#   )r-   r.   r   r/   view_idr4   s     r%   r.   zInterviewLIstView.__init__R   s'    "6"!"78(r$   c                 B   t         |          }| j                  j                  j	                  d      r!|j                         j                  d      }|S |j                  | j                  j                  j                  j                        j                  d      }|S )z
        Override queryset based on user permissions.

        Returns:
            queryset: Filtered queryset based on user permissions and employee ID.
        r,   z-interview_date)rB   )
r-   get_querysetr0   r1   r2   allorder_byfilteremployee_getid)r5   querysetr6   s     r%   rI   zInterviewLIstView.get_querysetW   s     7')<<%%&>?||~../@AH 	   LL--::== ' h()  r$   
   z!cbv/interview/inherit_script.htmlr   candidate_custom_colInterviewerinterviewer_custom_colInterview DaterC   Interview TimerD   Descriptionget_descriptionStatusstatus_custom_colza
                                style="width:200px !important;"
                                )rT   rC   )rU   rD   custom_action_cola1  
                {custom_color}
                class="oh-permission-table--collapsed"
                hx-get='{detail_view}?instance_ids={ordered_ids}'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                )r   r   r    r!   bulk_update_fieldsr   r.   rI   r   filter_classr   modelrecords_per_pager"   r8   columnsheader_attrssortby_mappingaction_method	row_attrsr>   r?   s   @r%   rA   rA   G   s    
 M) ) )
" #LE7M 
;/0	
=	34	
	./	
	./	
=	,-	
8)*G 	 !$L 	-,N (MIr$   rA   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 ed      dfgZ	dZ
y)InterviewDetailViewz
    detailed view
    Detailscandidate_id__get_full_namedetail_subtitlecandidate_id__get_avatar)titlesubtitleavatarr   candidate_idrR   interviewer_detailrT   rC   rU   rD   rV   rW   rX   rY   detail_view_actionsN)r   r   r    r!   r   r]   r8   rj   headerbodyrb   r#   r$   r%   re   re      s    
 EiLE.%,F 
;(	
=	/0	
	./	
	./	
=	,-	
8)*D *Mr$   re   z!recruitment.add_interviewschedulec                   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 )InterviewFormz
    form view
    Schedule Interviewc                    t        |   di |}t        | j                  j                        }|j
                  j                  d      }|rZt        j                  j                  |      | j                  j                  d   _        || j                  j                  d   _        | j                  j                  j                  rt!        d      | j"                  _        | j                  |d<   d|d<   |S )	z6
        Override to add custom context data.
        cand_id)rN   rm   rt   r7   InterviewCreaterG   r#   )r-   get_context_datar   r0   	path_infor(   getr   objectsrL   r7   fieldsrO   initialinstancepkr8   
form_classverbose_name)r5   r(   contextresolvedrv   r6   s        r%   rx   zInterviewForm.get_context_data   s     '*4V44<<112//%%i08A8I8I8P8P 9Q 9DII^,5 8?DII^,499  +,-A+BDOO()).	r$   r7   r)   c                 2   | j                   j                  j                  rt        d      | j                  _        |j                         s>|j                  j                         }t        | j                  | j                  ||d      S t        | 5  |      S )Nrt   )r7   errors)r7   r~   r   r8   r   r   is_validr   as_datar   r0   r"   r-   form_invalid)r5   r7   r   r6   s      r%   r   zInterviewForm.form_invalid   sx    99  +,-A+BDOO(}}[[((*Fd00462R  w#D))r$   c                    |j                         r| j                  j                  j                  d      }| j                  j
                  d   }| j                  j
                  d   }| j                  j
                  d   }| j                  j
                  d   }|D cg c]  }|j                   }}t        j                  | j                  j                  j                  |d|j                   d| d| d	d
|j                   d| d| d	d|j                   d| d| dd|j                   d| d| d	d|j                   d| d| d	dt        d      	       |j                  j                  rOt        j                   | j                  t#        d             |dk(  rm|j%                          | j'                  d      S t        j                   | j                  t#        d             |s!|j%                          | j'                  d      S |j%                          | j'                         S t(        	| U  |      S c c}w )z
        Handle form submission when the form is valid.

        Args:
            form (ScheduleInterviewForm): The validated form object.

        Returns:
            HttpResponse: Redirect response or HTTP response.
        viewrB   rm   rC   rD   z:You are scheduled as an interviewer for an interview with z on z at .u&   أنت مجدول كمقابلة مع u    يوم u    في توقيت u0   Sie sind als Interviewer für ein Interview mit z am z um z eingeplant.u=   Estás programado como entrevistador para una entrevista con z el z a las uE   Vous êtes programmé en tant qu'intervieweur pour un entretien avec z le u    à zpeople-circlezinterview-view)	recipientverbverb_arverb_deverb_esverb_friconredirectzInterview Updated Successfullyfalsez*<script>window.location.reload();</script>z!Interview Scheduled successfully.)r   r0   GETrz   r7   cleaned_dataemployee_user_idr   sendr1   rM   r   r   r~   r   r   successr8   saver   r-   
form_valid)
r5   r7   	view_dataemp_idsrv   rC   rD   employeeusersr6   s
            r%   r   zInterviewForm.form_valid   s    ==?((,,V4Iii,,];Gii,,^<G!YY334DEN!YY334DEN?FG8X..GEGKK!!..QRYR^R^Q__cdrcssw  yG  xH  HI  J@hWeVffw  yG  xH  HI  JJ7<<.X\]k\llpq  qA  AM  NWX_XdXdWeeijxiy  zA  BP  AQ  QR  S_`g`l`l_mmq  sA  rB  BF  GU  FV  VW  X$ !12
 }}  q1Q/RS'IIK,,D    q1T/UV IIK,,D  IIK$$&&w!$''9 Hs    H>)r   r   r    r!   r   r   r   r]   r8   new_display_titlerx   r   r   r   r   r>   r?   s   @r%   rs   rs      sQ    
 'JE./$* * *,(4 ,( ,( ,(r$   rs   N)+r!   typingr   django.contribr   django.httpr   django.shortcutsr   django.urlsr   r   r	   django.utils.decoratorsr
   django.utils.translationr   r8   horilla_views.cbv_methodsr   horilla_views.generic.cbv.viewsr   r   r   r   r   notifications.signalsr   recruitment.decoratorsr   r   recruitment.filtersr   recruitment.formsr   recruitment.modelsr   r   r   r'   rA   re   rs   r#   r$   r%   <module>r      si    # $ # 6 6 4 6 4  ) S / 3 ; .z2!'EFZ= = 3= .z2!'EFZ*~ * 3*4 .z2!'EFZ= = 3=@ .z2!'EFZ*- * 3*. .z2>?jQ(O Q( 3Q(r$   