
    si2                     "   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 ddlmZ ddlmZ dd	lmZ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mZ ddl m!Z!m"Z"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) 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- 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
recruitment
    )Any)forms)messages)HttpResponse)reversereverse_lazy)method_decorator)gettext_lazy)login_requiredpermission_required)HorillaDetailedViewHorillaFormViewHorillaListViewHorillaNavViewTemplateView)RecruitmentFilter)AddCandidateFormRecruitmentCreationForm
SkillsForm)	CandidateRecruitmentSkill)delete_postpost_recruitment_in_linkedindispatch)namezrecruitment.view_recruitment)permc                       e Zd ZdZdZy)RecruitmentViewz
    Recuitment page
    z cbv/recruitment/recruitment.htmlN)__name__
__module____qualname____doc__template_name     D/var/www/python-projects/worksol/recruitment/cbv/recruitment_view.pyr   r      s    
 7Mr&   r   c                        e Zd ZdZeZeZdZg dZ	dZ
deddf fdZd fd		Zg d
ZdZddiZd ed      dfd ed      dfgZdZg dZdZ xZS )RecruitmentListz"
    List view of recruitment
    zrec-view-container)vacancy
start_dateend_dateclosedzcbv/recruitment/rec_main.htmlkwargsreturnNc                 D    t        |   di | t        d      | _        y )Nlist-recruitmentr%   )super__init__r   
search_urlselfr.   	__class__s     r'   r3   zRecruitmentList.__init__9   s     "6"!"45r&   c                     t        |   ||g|i |j                  | j                  j                  j                  dd            | _        | j                  S )N	is_activeT)r9   )r2   get_querysetfilterrequestGETgetqueryset)r6   r?   filteredargsr.   r7   s        r'   r:   zRecruitmentList.get_queryset=   s]    G "H?/3?7=?Vdll..22;EVF 	
 }}r&   )r   recruitment_column)Managersmanagers_column)	Open Jobsopen_job_colVaccancyr*   zTotal Hires	tot_hires
Start Dater+   zEnd dater,   )Status
status_colrec_actionsrC   za
                                style="width : 200px !important"
                               zclosed--dotClosedz
            onclick="
                $('#applyFilter').closest('form').find('[name=closed]').val('true');
                $('#applyFilter').click();

            "
            z	open--dotOpenz
            onclick="
                $('#applyFilter').closest('form').find('[name=closed]').val('false');
                $('#applyFilter').click();

            "
            zclosed-{closed})rB   rH   rL   rN   a  
                class="oh-permission-table--collapsed"
                hx-get='{recruitment_detail_view}?instance_ids={ordered_ids}'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                )NF)r    r!   r"   r#   r   modelr   filter_classview_idbulk_update_fieldsr$   r   r3   r:   columnsaction_methodheader_attrs_row_status_indicationsrow_status_classsortby_mapping	row_attrs__classcell__r7   s   @r'   r)   r)   (   s    
 E$L"GH3M6 6 6	G "M 	 #L hK
	
 fI
	
2 )NIr&   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 )
RecruitmentNavz
    For nav bar
    r.   r/   Nc                 l    t        |   di | t        d      | _        dt	        d       d| _        y )Nr1   z%
                            hx-get='zrecruitment-createz'
                            hx-target="#genericModalBody"
                            data-target="#genericModal"
                            data-toggle="oh-modal-toggle"
                            r%   )r2   r3   r   r4   r   create_attrsr5   s     r'   r3   zRecruitmentNav.__init__   sA    "6"!"45!%%12F%G$H I r&   r   formz#listContainerzcbv/recruitment/filters.html)r    r!   r"   r#   r   r3   r[   	nav_titler   filter_instancefilter_form_context_namesearch_swap_targetfilter_body_templater`   ra   s   @r'   rc   rc      sA    
	  	  	  - I')O%)9r&   rc   c                   4    e Zd ZdZddddddZ G d d      Zy)RecruitmentCreationFormExtendedz'
    extended form view for create
          )titledescriptionis_publishedoptional_profile_imageoptional_resumec                   2   e Zd ZdZeZg dZdgZ ej                  ddi       ej                  ddi       ej                  ddi      d	Z ed
       ed       ed       ed       ed       ed       ed       ed       ed       ed      d
Zy)$RecruitmentCreationFormExtended.Metaz7
        Meta class to add the additional info
        )rp   rq   open_positionsrecruitment_managersr+   r,   r*   
company_idsurvey_templatesskillsrr   rs   rt   publish_in_linkedinlinkedin_account_idr9   typedate)attrszdata-summernote )r+   r,   rq   DescriptionrM   zEnd DatezSurvey TemplateszIs Published?VacancyzJob PositionrD   zOptional Profile Image?zOptional Resume?)
rq   r+   r,   rz   rr   r*   rw   rx   rs   rt   N)r    r!   r"   r#   r   rT   fieldsexcluder   	DateInputTextareawidgetsr[   labelsr%   r&   r'   Metarv      s    	 
" -)%//0@A'vv.>?)5>>1BB0GH
 ]+L/* !"4 5o.|/$%jM&'(A&B !34
r&   r   N)r    r!   r"   r#   colsr   r%   r&   r'   rm   rm      s)    
 "#D(
 (
r&   rm   c                   H     e Zd ZdZeZeZ ed      Z	dZ
dedef fdZ xZS )RecruitmentNewSkillFormz%
    form view for add new skill
    SkillsTrf   r/   c                     |j                         rKt        d      }|j                          t        j                  | j
                  |       | j                         S t        | !  |      S )NzNew Skill Created Successfully	is_validr[   saver   successr<   r   r2   
form_validr6   rf   messager7   s      r'   r   z"RecruitmentNewSkillForm.form_valid   sS    ==?89GIIKT\\73$$&&w!$''r&   )r    r!   r"   r#   r   rT   r   
form_classr[   new_display_titleis_dynamic_create_viewr   r   r`   ra   s   @r'   r   r      s<     EJ(!(z (l ( (r&   r   c                   \     e Zd ZdZeZeZ ed      Z	de
fgZdZ fdZdedef fdZ xZS )	RecruitmentFormz
    Form View
    zAdd Recruitmentr{   z%cbv/recruitment/recruitment_form.htmlc                     t        |   di |}| j                  j                  j                  rd| j
                  _        |S )zb
        Return context data with optional verbose name for form based on instance state.
        zEdit Recruitmentr%   )r2   get_context_datarf   instancepkr   verbose_name)r6   r.   contextr7   s      r'   r   z RecruitmentForm.get_context_data   s;     '*4V499  +=DOO(r&   rf   r/   c                    |j                         r|j                  j                  r|j                         }| j                  j
                  j                  d      }|r|j                  j                  |       |j                  r8|j                  r,t        |       t        | j                  ||j                         t        d      }n|j                         }| j                  j
                  j                  d      }|r|j                  j                  |       |j                  r-|j                  r!t        | j                  ||j                         t        d      }t        j                  | j                  |       | j                  j                   j#                  d      dk(  rt%        d      S | j%                         S t&        | Q  |      S )zm
        Process form submission to save or update a Recruitment object and display success message.
        rx   z Recruitment Updated Successfullyz Recruitment Created Successfullypipelinetruez*<script>window.location.reload();</script>)r   r   r   r   r<   POSTgetlistrx   setr|   r}   r   r   r[   r   r   r=   r>   r   r2   r   )r6   rf   recruitmentrx   r   r7   s        r'   r   zRecruitmentForm.form_valid  sk    ==?}}"iik'+||'8'8'@'@AW'X$'44889MN22{7V7V,0k;3R3R >?"iik'+||'8'8'@'@AW'X$'44889MN22{7V7V0k;3R3R >?T\\73||##J/69#$PQQ$$&&w!$''r&   )r    r!   r"   r#   r   rT   rm   r   r[   r   r   dynamic_create_fieldsr$   r   r   r   r`   ra   s   @r'   r   r      sR    
 E0J+,&(?@A;M(> (< ( (r&   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 )AddCandidateFormViewz%
    form view for add candidate
    zAdd Candidater/   c                     t         |          }| j                  j                  j	                  d      }| j                  j                  j	                  d      }||d<   ||d<   |S )Nstage_idrec_id)r2   get_initialr<   r=   r>   )r6   initialr   r   r7   s       r'   r   z AddCandidateFormView.get_initial+  s]    '%'<<##''
3!!%%h/&
"r&   rf   c                     |j                         rLt        d      }|j                          t        j                  | j
                  |       | j                  d      S t        | !  |      S )NzCandidate Added successfully.z'<script>window.location.reload</script>r   r   s      r'   r   zAddCandidateFormView.form_valid3  sV    ==?78GIIKT\\73$$%NOOw!$''r&   )r    r!   r"   r#   r   r   r   rT   r[   r   dictr   r   r   r`   ra   s   @r'   r   r   "  sD     "JE/*T (/ (L ( (r&   r   c                   >     e Zd ZdZeZeZ fdZdede	f fdZ
 xZS )RecruitmentFormDuplicatez
    Duplicate form view
    c                    t        |   di |}t        j                  j	                  | j
                  d         }| j                  |      }|j                  j                         D ]{  \  }}t        |t        j                        s!|j                  r|j                  }n|j                  j	                  |d       d}||j                  |<   ||j                  |   _        } ||d<   t        d      | j                  _        |S )	zm
        Return context data for duplicating a Recruitment object form with modified initial values.
        r   )id)r   r   z (copy)rf   	Duplicater%   )r2   r   r   objectsr>   r.   r   r   items
isinstancer   	CharFieldr   r[   r   )	r6   r.   r   original_objectrf   
field_namefieldinitial_valuer7   s	           r'   r   z)RecruitmentFormDuplicate.get_context_dataH  s     '*4V4%--11T[[5F1G8!%!2!2!4 	@J%1==$)MMM'+||'7'7
B'G&H$PM+8Z(2?J'/	@ '(~$r&   rf   r/   c                 J   | j                  | j                  j                        }|j                         r|j	                         }t        d      }|j	                          | j                  j                  j                  d      }| j                  j                  j                  d      }|r|j                  j                  |       |r|j                  j                  |       t        j                  | j                  |       | j                         S t        | 9  |      S )zC
        Process form submission to add a new recruitment.
        zRecruitment addedrx   rw   )r   r<   r   r   r   r[   r   rx   r   rw   r   r   r   r2   r   )r6   rf   r   r   rx   job_positionsr7   s         r'   r   z#RecruitmentFormDuplicate.form_valid[  s     t||001==?))+K+,G#'<<#4#4#<#<=S#T  LL--556FGM#00445IJ**..}=T\\73$$&&w!$''r&   )r    r!   r"   r#   r   rT   rm   r   r   r   r   r`   ra   s   @r'   r   r   <  s2    
 E0J&(> (< ( (r&   r   c                   P     e Zd ZdZdeddf fdZdZeZ e	d      Z
dd	d
dZ xZS )RecruitmentDetailViewz
    detail view of page
    r.   r/   Nc                 6    t        |   di | g d| _        y )N))rD   managers_detail)rF   open_job_detailrH   rJ   rL   rN   r%   )r2   r3   bodyr5   s     r'   r3   zRecruitmentDetailView.__init__y  s    "6"
	r&   detail_actionsDetailsrp   rP   
get_avatar)rp   subtitleavatar)r    r!   r"   r#   r   r3   rY   r   rT   r[   rp   headerr`   ra   s   @r'   r   r   p  s@    
	
 	
 	
 %MEiLE Fr&   r   N)0r#   typingr   djangor   django.contribr   django.httpr   django.urlsr   r   django.utils.decoratorsr	   django.utils.translationr
   r[   horilla_views.cbv_methodsr   r   horilla_views.generic.cbv.viewsr   r   r   r   r   recruitment.filtersr   recruitment.formsr   r   r   recruitment.modelsr   r   r   recruitment.views.linkedinr   r   r   r)   rc   rm   r   r   r   r   r   r%   r&   r'   <module>r      s     # $ - 4 6 I  2 S S < < P .z2;<:7l 7 37 .z2;<:So S 3Sl .z2;<::^ : 3:.5
&= 5
p(o (& .z2;<:3(o 3( 33(l(? (4 .z2;<:-( -( 3-(` .z2;<:/  3r&   