o
    WhϘ                    @   sn  d dl mZmZmZmZ d dlmZmZmZ ddl	T d dl
mZ d dlmZ d dlmZ d dlmZ ddlT 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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$ d dlmZ%m&Z& d dl'm(Z( d dl)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3Z3d dl4m5Z5 d dl6m7Z7 d dl8Z8d dl9m:Z: d dl;Z;ddl<m=Z=m>Z> d dl?m@Z@ d dlAZAd dlBmCZC d dlDmEZE d dlFmGZG d d lmZmZ d d!lHmIZI d d"lJmKZK d#d$ ZLd%d& ZMd'd( ZNd)d* ZOd+d, ZPd-d. ZQd/d0 ZRd1d2 ZSd dlTZTdd4d5ZUd6d7 ZVe@d8d9 ZWd:d; ZXd<d= ZYG d>d? d?eZZed@dA Z[dBdC Z\dDdE Z]eedFgdGdHdI Z^edJdK Z_edLdM Z`edNdO ZaeedPdFgdGdQdR ZbedSdT ZcedUdV ZdeedFgdGdWdX ZeeedFgdGdYdZ Zfd[d\ ZgeedFgdGd]d^ ZheedFgdGd_d` Ziedadb Zjdcdd Zkdedf ZleedPdFgdGdgdh ZmeedigdGdjdk Znedldm ZoeedPdFgdGdndo Zpd dplqmrZr dqdr Zsdsdt Ztdudv Zudwdx ZveedPgdGdydz ZweedFgdGd{d| Zxed}d~ ZyeedFgdGdd Zzedd Z{edd Z|edd Z}edd Z~eedFgdGdd ZeedFgdGdd Zedd ZeedFgdGdd ZeedFdPgdGdd ZeedFgdGdd ZeedFgdGdd ZeedFgdGdd ZeedFgdGdd Zedd Zedd ZeedFgdGdd ZeedFgdGdd Zedd Zedd Zedd Zedd ZeedFdPgdGdd Zedd Zedd Zedd ZeedFgdGdd Zedd Zedd ZeedFgdGdd ZeedFgdGdd ZeedFgdGdd ZeedFgdGdd ZeedFdPgdGdd ZeddĄ ZeedFdPgdGddƄ ZeedFdPgdGddȄ ZeedFdPgdGddʄ ZeedFdPgdGdd̄ Zedd΄ ZeedFdPgdGddЄ Zdd҄ ZddԄ Zddք Zdd؄ Zddڄ Zdd܄ ZeedFdPgdGddބ Zedd ZeedFdPgdGdd ZeedFdPgdGdd ZeedFdPgdGdd ZeedFdPgdGdd Zdd Zd dlZdd Zedd Zd dlZd dlmZ d dlZd dlmZ edd Zdd Zdd ZdS )    )renderredirectget_object_or_404HttpResponse)loginauthenticatelogout   )*)View)login_required)Group)messages)allowd_users)Q)
ExtractDayExtractMonth)CountN)LeaveCreationFormHolidayForm)update_session_auth_hash)LeaveHoliday)timezone)datetime	timedelta)PasswordResetTokenGenerator)HttpResponseForbiddenFileResponseJsonResponse)get_template)BytesIO)pisa)relativedelta)PayPalPaymentsForm)reverse)generate_checksumverify_checksum)csrf_exempt)urlsafe_base64_encode)	Paginator)force_bytes)r   r   )Document)	send_mailc                 C   
   t | dS )Nzmyapp/index2.htmlr   request r2   #/var/www/html/humari/myapp/views.pyindex2(      
r4   c                 C   sT   t | |dkrd| jd< n|dkrd| jd< nd| jd< | j }t | tdS )Nz1-3%20members%20$5/monthz1-3 members $0/monthselected_planz3-10%20members%20$5/month3-10 members $5/month10-50 members $15/monthregister)printsessionitemsr   )r1   plansession_datar2   r2   r3   get_started+   s   

r?   c              
   C   s   t | }||}t }|d }|jj d|j d|j d}tj	t
jdd|}tt|d|}z%t|d}	tt|d|	}W d    W |S 1 sRw   Y  W |S  typ }
 zt|
 W Y d }
~
|S d }
~
ww )Ninstance_z_salary_slip.pdfmediasalary_slipzUTF-8zwb+)r    r   r!   employeeemailmonthyearospathjoinsettingsBASE_DIRr"   pisaDocumentencodeopen	Exceptionr:   )template_sourcecontexttemplatehtmlresultr@   	file_nameoutput_pathpdfoutputer2   r2   r3   	htmltopdf7   s&   
r[   c                 C   sh   | j dkr)t| j}| r)|jd }t| || jd< | j }t| tdS t }t	| dd|iS )NPOSTr6   r9   zmyapp/home.htmlform)
methodPlanSelectionFormr\   is_validcleaned_datar:   r;   r<   r   r   )r1   r]   r6   r>   r2   r2   r3   HomeI   s   




rb   c                 C   sN  | j dkr| jd}t| | jd}| d| }| jd}t| | jd}t| | jd}| jd}tjt|d	t|d
B }| rZt	j
| ddd tdS ||krtjjdd}	t|	 tjj|||||d}
|
  |
j|	 |
j| jd< | jd}|dkrtdS tdS t	j
| ddd tdS t| dS )Nr\   
first_name	last_name rE   organisation	password1	password2email__icontainsorganisation__icontains&Email or Organisation Already Exists !*alert alert-warning alert-dismissible show
extra_tagsr9   Organisation Adminname)rE   	full_nameusernamerf   passwordadmin_idr6   z1-3 members for freer   checkout)Password and Confirm Password not matchedmyapp/register.html)r^   r\   getr:   User_Profileobjectsfilterr   existsr   errorr   r   create_usersavegroupsaddidr;   r   )r1   rc   rd   rt   rE   rf   rg   rh   queryadmin_groupuserr6   r2   r2   r3   r9   X   s:   

r9   c                 C   s  | j dkrv| jd}| jd}| jd}| jd}tjt|dt|dB }| r;tj	| dd	d
 t
dS ||krjtjjdd}t| tjj||||d}|  |j| tj| ddd
 t
dS tj	| dd	d
 t
dS tj	| dd	d
 t| dS )Nr\   rE   rf   rg   rh   ri   rk   rm   rn   ro   custom_signuprq   rr   )rE   ru   rf   rv   z&Your Registration Successfully done !!*alert alert-success alert-dismissible showr   ry   r9   z+Email does not exists, Please register hererz   )r^   r\   r{   r|   r}   r~   r   r   r   r   r   r   r:   r   r   r   r   successr   )r1   rE   rf   rg   rh   r   r   r   r2   r2   r3   r   z   s*   

r   c              
   C   s   z'| j d| j d}td| }|jdkr%| }|d}|W S W dS  tyC } ztdt|  W Y d }~dS d }~ww )NHTTP_X_FORWARDED_FORREMOTE_ADDRzhttp://ip-api.com/json/   countryCodeUSzError fetching user's country: )METAr{   requestsstatus_codejsonrP   r:   str)r1   user_ipresponsedatacountryrZ   r2   r2   r3   get_user_country   s   

r   c                 C   s   | dkrdS | dkrdS dS )NININRGBGBPUSDr2   )r   r2   r2   r3   get_currency_code   s
   r      c                 C   s2   d}t | D ]}|ttjtj tj 7 }q|S )N )rangerandomchoicestringascii_lowercaseascii_uppercasedigits)lengthkeyir2   r2   r3   generate_id   s   r   c              
   C   s  d }| j d}| j d}tt|d}|rt| t| }|dkr)d}d}d}n
|dkr3d	}d}d}t|}|  }	i d
ddtj	d|d|d|ddddddddddd|dt
 dddd|	 td dd|	 td dd|	 td  }
t|
 t|
d!}tj}t| tjtt |jt|tjtjtjd"|d#	}t||}||d$< |||d%}t| t| d&|S td'S )(Nr6   rw   r   r7      r	   Mr8      cmdz_xclick-subscriptionsbusinessa3p3t3src1srano_note	item_namezContent subscriptioncustominvoicecurrency_coder   
notify_urlzhttp://z
paypal-ipn
return_urlzpayment-success
cancel_urlzpayment-failed)initialz$http://127.0.0.1:8000/handlerequest/)	MIDORDER_IDCUST_ID
TXN_AMOUNT
CHANNEL_IDWEBSITEINDUSTRY_TYPE_IDCALLBACK_URLCURRENCYCHECKSUMHASH)amountpaypalpaytm_paramszmyapp/checkout.htmlr   )r;   r{   r   r|   r:   r   r   get_hostrK   PAYPAL_RECEIVER_EMAILuuiduuid4r%   r$   PAYTM_SECRET_KEYPAYTM_MERCHANT_IDr   r   rE   PAYTM_CHANNEL_IDPAYTM_WEBSITEPAYTM_INDUSTRY_TYPE_IDr&   r   r   )r1   r   r6   user_iduser_objuser_countrybilling_cyclebilling_cycle_unitr   hostpaypal_checkoutpaypal_paymentmerchant_keyr   checksumrR   r2   r2   r3   CheckOut   s   	


r   c           
      C   s   | j dkrrd}t| j}t| i }|d d }| D ]\}}|dkr)|d }qt|d ||< qt|tjt|}|rctd d|d< | j	
d}| j	
d}tt|d	}	tjj|	|d
 tdS td d|d< t| d|dS d S )Nr\   r   r   r   zChecksum Matchedmessagerw   r6   r   r   r=   r   zChecksum Mismatchedzmyapp/callback.htmlrR   )r^   dictr\   r:   r<   r   r'   rK   r   r;   r{   r   r|   Subscriptionr}   creater   r   )
r1   paytm_checksumreceived_datar   r   valueis_valid_checksumr   r6   r   r2   r2   r3   handlerequest  s.   


r   c                 C   s<   | j d}| j d}tt|d}tjj||d tdS )Nrw   r6   r   r   r   )r;   r{   r   r|   r   r}   r   r   )r1   r   r6   r   r2   r2   r3   PaymentSuccessful#  s
   r   c                 C   r.   )Nzmyapp/payment_failed.htmlr/   r0   r2   r2   r3   paymentFailed*  r5   r   c                   @   s   e Zd Zdd Zdd ZdS )	LoginViewc                 C   s
   t |dS )Nzmyapp/login1.htmlr/   )selfr1   r2   r2   r3   r{   .  s   
zLoginView.getc                 C   sf   |j d}t| |j d}t||d}t| |d ur't|| tdS tj|ddd tdS )	NrE   rv   )rE   rv   	dashboardzemail and password is incorrectrn   ro   r   )r\   r{   r:   r   r   r   r   r   )r   r1   rE   rv   r   r2   r2   r3   post2  s   
zLoginView.postN)__name__
__module____qualname__r{   r   r2   r2   r2   r3   r   -  s    r   c                 C   s"  | j jrtdS | j }|j}tjj|jd}t| t	j
 }|j}tjj|dd}tjt|dtdd@ }tjt|d}|t|jd	t|d
@ }	tjj|d}
|tt|d
tdd@ }|tt|d
tdd@ }|tt|d
tdd@ }|tt|d
tdd@ }|tt|d
tdd@ }|tt|d
tdd@ }tjt|dt|d@ d}|d d }t| |j}|j}|t|d
jtdtddt|dt||dB }|d d }tjt|dtdd@ t|d@ }t| tjt| j dtdd@  }tjt| j dtdd@ tdd@  }|d }|| }tjt| j dtdd@  }d| }i d|d |d!|d"|
d#|d$|d%|d&|d'|d(|d)|	d*|d+|d,|d-|d.d/d0|||||d1}t| d2|S )3Nz,Superuser is not authorize to view dashboardr   Trf   	is_activeuser__organisationpendingstatus__icontainsr   )date_of_birth__monthrf   
Accountingdepartment__name__icontainsEngineeringITLegal	MarketingSales)holiday_date__gtholiday_date   date_of_birth)birth_month	birth_day)birth_month__gt)r  birth_day__gtapproved)startdate__gtzhalf day)	leavetypeg      ?   rD   	employeesleavesstaff_leaves
accountingengineeringitlegal	marketingsalesemployees_birthdayrf   
emp_leavesupcoming_holidaysupcoming_birthdays	room_nameHRMSupcoming_leaves)rG   approved_leavespending_leavesremaining_leaveszmyapp/dashboard.html)r   is_superuserr   rf   r|   r}   r{   r   r:   r   datetodayrG   r~   r   r   rF   r   order_bydayannotater   r   countr   )r1   r   rf   rD   current_daterG   r  r  r   r  r  r  r  r  r  r  r  r!  current_monthcurrent_dayr"  r%  r&  half_daytotal_approvedr'  r(  rR   r2   r2   r3   	home_pageA  s   
"
&","r5  c                 C   s   t |  tdS )Nr   )r   r   r0   r2   r2   r3   user_logoutt  s   r6  c                 C   s8   d}| d| d| d}t j}| g}t|||| d S )Nz'One time Login link of our organisationz You are added in our z, you can login zE and this is one time login link after login you change your passwordrK   EMAIL_HOST_USERr-   )rE   rs   rf   linksubjectr   
from_emailrecipient_listr2   r2   r3   
send_emailx  s
   r=  rq   )allowd_rolesc                 C   s  | j }tjj|jd}t }tjt|jdtdd@ }||j	d _
tjt|jdtdd@ }||j	d _
tjt|jdtdd@ }||j	d	 _
tj }d
}| jdkrFt| j| j}| jd}	| jd}
| jd}| jdd}| jdd }| r| }tjj|d }| j j}|j| ||_||_|  |j d}tjj||ddd |rt }||}tt|j}d|   d| d| d}t|j|j|| t j!| d|j ddd t"dS t j#| ddd tjt|jdtdd@ }||j	d _
tjt|jdtdd@ }||j	d _
tjt|jdtdd@ }||j	d	 _
t$| d |||||j|||d!S t$| d |||||j|||d!S )"Nr   r  Managergroups__name__icontainsmanagerHRhrTeam Leaderteam_leaderzAdd Employeer\   employee_idrE   imager=  Frolez is join in our companyallrD   )rf   r   notification_usersrD   zhttps://z/password-reset-confirm//	Employee z Created Successfully !!r   ro   add_documentsz6Something went wrong, Please correct below warnings !!rn   zmyapp/add_people1.html)r]   r   titlerD   rf   managershrsteam_leaders)%r   r|   r}   r{   r   AddEmployeeFormr~   r   rf   fieldsquerysetr   rJ  r^   r\   FILESr`   r   firstr   r   profile_picrt   Notificationr   r   
make_tokenr)   r+   r   r=  rE   r   r   r   r   r   )r1   r   rD   r]   rP  rQ  rR  r   rO  rG  rE   	emp_imagecheckgrouprf   msgtoken_generatortokenuid
login_linkr2   r2   r3   add_employee  sZ   

  rc  c              	   C   s   | j }|j}tjj|jd}tjtt|dtdd@ }t|d}| j	d}|
|}t| d}|jj}	dd	 t|	D }
t| d
||||	|
dS )Nr   r  Tr   	   pagezAll Employeec                 S      g | ]}|d  qS r	   r2   .0r   r2   r2   r3   
<listcomp>      z all_employee.<locals>.<listcomp>zmyapp/all_employee1.htmlr  rO  rD   	last_page	page_list)r   rf   r|   r}   r{   r   r~   r   r*   GETget_pager:   	paginator	num_pagesr   r   )r1   r   rf   rD   r  rr  page_numberpage_objrO  rn  ro  r2   r2   r3   all_employee  s    

rv  c                 C   s  t jj|d}t| tjj|jd}tjj|jd}|j	 }| j
}t jj|jd}d}tjj|d}	|	r:|	d }	tjj|d}
tjj|d}tjj|d}|rU|d }tjtddt|jd	@ }|rj|d }tjj|d}|rw|d }|||||||	|
||||d
}t| d|S )Nr   r   rD   zEmployee Detailsemployee__idr   rq   )employee__groups__nameemployee__organisation)user_employeerO  
user_groupleaverD   bank
equipments	educationemployementdescriptionagreement_docsemployee_agreementzmyapp/employee_detail1.html)r|   r}   r{   r:   r   r~   r   Bankr   rJ  r   Handbookeducation_certeficatesemployement_certeficatesjob_descriptioncompany_agreementsr   rf   employee_agreementsr   )r1   r   r}  r  r  r~  r   rD   rO  r  r  r  r  r  r  rR   r2   r2   r3   employee_detail  s6   
r  c                 C   sz  | j }tjj|jd}tjj|d}t|d}tjt|jdtdd@ tdd@ }||j	d	 _
tjt|jdtd
d@ tdd@ }||j	d _
tjt|jdtdd@ tdd@ }||j	d _
tj }	|	|j	d _
| jdkr1| jd}
tjj|d}t| j| j|d}| r|jd }t| |D ]}t| |j|j q| }|
r|
|_|  tj| d|j ddd td|dS tj| ddd tjt|jdtdd@ tdd@ }||j	d	 _
tjt|jdtd
d@ tdd@ }||j	d _
tjt|jdtdd@ tdd@ }||j	d _
|	|j	d _
t| d|||jddS t| d|||jddS )Nr   pkr@   r  r?  r@  Trd  rB  rC  rD  rE  rF  
departmentr\   rH  r   rM  z Updated Successfully !!!r   ro   edit_employeez5Something went wrong, Please check below warnings !!!rn   zmyapp/employee_edit1.htmlr$  )r]   rD   rf   r#  )r   r|   r}   r{   r   CustomUserChangeFormr~   r   rf   rT  rU  
DepartmentrJ  r^   rV  r\   r`   ra   r:   r   r   r   rX  r   r   rt   r   r   r   )r1   r   r   rD   pifmrP  rQ  rR  departmentsr[  select_groupr   r   r2   r2   r3   r    sL   
(((

(((r  rC  c                 C   s|  | j dkr| jd }|st| d tdS | jd}| jd}| jd}| jd}| jd	}tt|d
}|D ]}t	|||j
d}	|	  q<|D ]}t|||j
d}	|	  qM|D ]}t|||j
d}	|	  q^|D ]}t|||j
d}	|	  qo|D ]}t|||j
d}	|	  qtj| d|j ddd tdS | j}
tjj|
jd}tjj|jdd}t| d|d|dS )Nr\   rD   z,Please select an employee before submitting!rN  r  r  creditid_documentcriminalr  )rD   r  rO  )rD   r  rO  )rD   r  rO  )rD   r  rO  )rD   r  rO  zDocuments of z Added Successfully !!r   ro   r   Tr   zmyapp/add_documents.htmlzAdd Documents)rD   rO  r  )r^   r\   r   r   r   rV  getlistr   r|   r  rs   r   r  credit_documentsid_documentscriminal_documentsr   rt   r   r}   r{   r   r~   rf   r   )r1   empr  r  r  r  r  emp_objr   objr   rD   r  r2   r2   r3   rN    s@   






rN  c                 C   s  t jj| jjd}t jj|d}tjj|d }tjj|d }t	jj|d }t
jj|d }tjj|d }tjt|dtdd@ tdd@ tdd@ tdd@ tdd@  }	d	||||||||	d
	}
| jdkr| jd}| jddkrdnd}t| | jd}| jddkrdnd}| jd}| jddkrdnd}| jd}| jddkrdnd}| jd}| jddkrdnd}t|||||||||||d}|  td|dS t| d|
dS )Nr   rw  Temployement_checkeducation_checkid_checkcrminal_checkcredit_checkzBackground Checks)	rO  rD   r  employement_doceducation_docr  criminal_documentcredit_documentemp_verificationr\   r  r  onFr  r  r  r  r  criminal_checkr  r  )rD   r  r  r  r  r  r  criminal_backgroundr  r  r  background_check)emp_idzmyapp/background_check.htmlr   )r|   r}   r{   r   r   r  r~   rW  r  r  r  r  r  r   r^   r\   r:   r   r   r   )r1   r  rD   r  r  r  r  r  r  r  rR   r  r  r  r  r  r  r  r  r2   r2   r3   background_verification@  s@   H
r  c                 C   s   t jj| jjd}|dd}g }t jj|jdd}|D ]=}tjt|dtdd@ tdd@ tdd	@ tdd
@ tdd@ }|rM|	|j
|jdd q|	|j
|jdd q|d|d}t| d|dS )Nr   zAll Employee Background StatusrD   rO  Tr   rw  r  r  r  r  r  Done)rD   r   statusPending)rD   rO  r   z%myapp/employee_background_status.htmlr   )r|   r}   r{   r   r   r~   rf   r  r   appendrt   r   )r1   rD   rR   r   r  r   r  r2   r2   r3   employee_background_statusc  s   
Dr  c                 C   s   t jj| jjd}t }t jj|jdd}||jd _	|d|dd}| j
dkrgt| jd	}| rK| }tj| d
|jj ddd td|jjdS ||jd _	|d|dd}tj| ddd t| d|dS t| d|dS )Nr   Tr   rD   zAdd Job Description of EmployeeAddrD   rO  r]   button_namer\   r   Job description of z added successfully !!r   ro   r  (Something went wrong, Please check belowrn   myapp/add_job_description.htmlr   )r|   r}   r{   r   r   JobDescriptionFormr~   rf   rT  rU  r^   r\   r`   r   r   r   rD   rt   r   r   r   )r1   rD   r]   r  rR   r  r2   r2   r3   add_job_descriptionr  s    
r  c           	      C   s   t jj| jjd}tjj|d}t|d}t jj|jd}||j	d _
d|jj }|||dd}| jdkrwt| j|d}| r[| }tj| d	|jj d
dd td|jjdS ||j	d _
|||dd}tj| ddd t| d|dS t| d|dS )Nr   r  r  rD   zEdit Job Description of Update)rD   r]   rO  r  r\   r  z updated successfully !!r   ro   r  r  r  rn   r  r   )r|   r}   r{   r   r   r  r  r~   rf   rT  rU  rD   rt   r^   r\   r`   r   r   r   r   r   r   )	r1   r   rD   r@   r]   r  rO  rR   r  r2   r2   r3   edit_job_description  s$   

r  c                 C   s>   t jj|d}d|_|  tj| d|j ddd tdS )Nr   FrM   Deleted Successfullyr   ro   rv  )	r|   r}   r{   r   r   r   r   rt   r   )r1   r   r  r2   r2   r3   delete_employee  s
   r  c                 C   s4   t jj| jjd}t jj|d}t| d|||dS )Nr   z'myapp/delete_employee_confirmation.html)r   rD   r  r|   r}   r{   r   r   r   )r1   r   rD   r  r2   r2   r3   delete_employee_confirmation  s   r  c                 C      t dS )Nrv  r   r0   r2   r2   r3   delete_employee_cancel     r  c                 C   s   | j dkr3t| j| j}| r'|jdd}t| | tj| ddd t	dS tj
| dd	d t	dS t| j}tjj| jjd
}d}t| d|||j|dS )Nr\   TcommitzPassword changed successfullyr   ro   change_passwordz6New password & confirm new password are not matched !!rn   r   zChange Passwordzmyapp/change_password.htmlr]   rD   rf   rO  )r^   ChangePasswordFormr   r\   r`   r   r   r   r   r   r   r|   r}   r{   r   r   rf   )r1   r]   r   rD   rO  r2   r2   r3   changepassword  s   


r  c                 C   s2   d}| d  d}t j}| d }t|||| d S )NzEmployee apply for leavers   z1 requested for holidays please approved or rejectrE   r7  )r   r:  r   r;  r<  r2   r2   r3   leave_email  s
   r  c                 C   s,  | j jr| jdkrt| jd}| r|jd }|jd }|| j}|jdd}| j }t	j
j|jd}d }|jrBt	j
j|jjd}t j}	tj
j|j|	dd	 | }
d
}t	j
tddt|jd@  }g }|ru|jru||j |r|jr||j |j|d}|
|kr||_ d|_|  |j d}t|d}||_ |j|_|  tj| ddd tdS ||_ |  |j d}t|d}||_ |j|_|  t | tj!| ddd tdS tj!| ddd tdS t" }t }| j }t	j
j|jd}||d< d|d< ||d< t#| d|S tdS )Nr\   r  	startdateenddateFr  r  T)r   startdate__monthis_paidr  rq   groups__namer  )rs   rE   z has appliad for a leaver   z7Leave Request Sent,wait for Organisation Admin responser   ro   create_leavez2failed to Request a Leave,please check entry datesrn   r   r]   zApply for LeaverO  rD   zmyapp/create_leave1.htmlr   )$r   is_authenticatedr^   r   r\   r`   ra   daysr   r|   r}   r{   r   rD  r   nowrF   r   r~   r/  r   rf   rW  rE   r  rt   r  rY  r  r   r   r   r  r   r   r   )r1   r]   r  r  
leave_daysr@   r   r  rD  r1  leaves_taken_this_monthmax_leaves_per_monthadmin_emailemailsr   r^  r  datasetrD   r2   r2   r3   leave_creation  sn   





"



r  c              	   C   s   t jj| jjd}|j}| jdkr;| jd }t| t	j
t|dt|d@ tdd@ }t| t| d||d	d
S t	j
t|dtdd@ }t|d}| jd}||}t| |jj}	dd t|	D }
t| d||d|	|
dS )Nr   r\   r  r  r   Tuser__is_activezmyapp/pending_leaves.htmlz
All Leaves)rD   
leave_listrO  
   rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk  +  rl  zleaves_list.<locals>.<listcomp>zLeaves List - Pending)rD   r  rO  rn  ro  )r|   r}   r{   r   r   rf   r^   r\   r:   r   r~   r   r   r*   rp  rq  rr  rs  r   )r1   rD   rf   
leave_typer   r  rr  rt  ru  rn  ro  r2   r2   r3   leaves_list  s    

&

r  r?  c           
      C   s   t jj| jjd}|j}tjt|dtdd@ tdd@ }t	|d}| j
d}||}t| |jj}d	d
 t|D }||d|||jd}	t| d|	dS )Nr   )user__managerr  r   Tr  r  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk  >  rl  z#approved_leaves.<locals>.<listcomp>zleaves list - pending)rD   r  rO  rn  ro  leave_countzmyapp/approve_leaves.htmlr   )r|   r}   r{   r   r   rf   r   r~   r   r*   rp  rq  r:   rr  rs  r   r/  r   )
r1   rD   rf   r  rr  rt  ru  rn  ro  r   r2   r2   r3   r&  1  s   &

r&  c              
   C   s\   | j jstdS tt|d}tjj|j jdd }| j }t	| d|||d
|j j|jdS )NrL  r   r   zmyapp/leave_detail.htmlz{0}-{1} leave)r  	employee1rD   rO  )r   r  r   r   r   r|   r}   r~   r   r   formatrt   r  )r1   r   r  r  rD   r2   r2   r3   leaves_viewE  s   $r  c           	      C   s   t t|d}|jj}tjj|dd }|j}t| ||j	 }t| ||_|
  |j |j d|j d|j d}t|d}||_|
  |j|j|j|jgd}tj| d|jd	d
 td|dS )Nr   r    your leave from  to z is Approvedr  rs   r  r  rE   z"Leave successfully approved of {0}r   ro   leaves_detail)r   r   r   r   r|   r}   r~   leave_in_yearr:   r  r   approve_leavert   r  r  rY  rE   r   r   r  r   	r1   r   r  r   rD   r(  r   r  r   r2   r2   r3   r  P  s"   

r  )	timesincec                    s  t jtt| jjdtdd@ t| jdB dd d }d}d}g }d	g | jj } fd
d|D }|r|D ]}zt	jj
| j|d}|rKd}W n t	jyX   d}Y nw |s_|d }t }	|	|j }
|jd}|	|j tddkr|jd}n)|	|j tddkrt|j nt|	|j  d }| d|dkrdnd d}||j|j||j|j||j|j|jd	 q;t||ddS |D ]}t|j zt	jj
| j|d}|rd}W n t	jy   d}Y nw |s|d }t }	|	|j }
|jd}|	|j tddkr|jd}t| n8|	|j tddkr1t|j}t| | d}nt|	|j  d }| d|dkrFdnd d}t| ||j|j||j||j|j|jd qt||ddS )Nr  rJ  rK  r   -id   Fr   rC  c                       g | ]
}|j  v r|j qS r2   rr   ri  rolesr2   r3   rk  }      z!notifications.<locals>.<listcomp>r   notifTr	   %Y-%m-%dr  hours<    minutesr    ago	r   notify_detailnotifStatusrK  r  timepolicytrainingrD   rD  r   total_unreadrI  r   r  r  rK  r  r  r  rD   rD   )rY  r}   r~   r   r   rf   r,  r   rJ  mark_read_notificationsr{   DoesNotExistr   r  createdstrftimer   r  inttotal_secondsr  r   r   rK  r  r  r  rD   r   r:   r1   notificationsr  r  	json_datar   list1dnotif_statusr  diffr  minutesr2   r  r3   r   t  s   >






r   c                 C   "   t t| jjd}t| d|ddS )Nr   zmyapp/all_notifications.htmlzAll Notificationsr  r   r|   r   r   r   r1   rD   r2   r2   r3   all_notifications  s   r*  c                    s  t d tjtt| jjdtdd@ t| jdB d}d}d}g }d	g | jj	 } fd
d|D }|r|D ]}zt
jj| j|d}|rKd}W n t
jyX   d}Y nw |s_|d }t }	|	|j }
|jd}|	|j tddkr|jd}n)|	|j tddkrt|j nt|	|j  d }| d|dkrdnd d}||j|j||j|j||j|j|jd	 q;t||ddS |D ]}t |j zt
jj| j|d}|rd}W n t
jy   d}Y nw |s|d }t }	|	|j }
|jd}|	|j tddkr|jd}t | n8|	|j tddkr1t|j}t | | d}nt|	|j  d }| d|dkrFdnd d}t | ||j|j||j||j|j|jd qt | t||ddS )Ncallr  rJ  r  r   r   Fr   rC  c                    r  r2   rr   ri  r  r2   r3   rk    r  z&show_notifications.<locals>.<listcomp>r  Tr	   r  r	  r
  r  r  r  r   r  r  rD  r  r  rD   )r:   rY  r}   r~   r   r   rf   r,  r   rJ  r  r{   r  r   r  r  r  r   r  r  r  r  r   r   rK  r  r  r  rD   r   r  r2   r  r3   show_notifications  s   6







r,  c                 C   s|   | j d }tjj|d}tjj| jjd}tjt	|dt	| jd@ t	dd@ }t
| |s8tjj||dd td	diS )
N	notify_idr   r  )r  r   Tr  )r  r   r  r^  )rp  rY  r}   r{   r|   r   r   r  r~   r   r:   r   r   )r1   r-  r  r  
notif_datar2   r2   r3   mark_read_notify,  s   
(r/  c                 C   s   t t|d}|jj}tjj|dd }|j}t| ||j	 }t| ||_|
  |j |j d|j d|j d}t|d}||_|
  tj| d|jdd	 td
S )Nr   r   r  r  z is not Approvedr  z$Leave successfully unapproved of {0}r   ro   r  )r   r   r   r   r|   r}   r~   r  r:   r  r   unapprove_leavert   r  r  rY  r   r   r  r   )r1   r   r  r   rD   r(  r   r  r2   r2   r3   r0  7  s    

r0  c           	      C   s   t t|d}|jj}tjj|dd }|j}t| ||j	 }t| ||_|
  |j |j d|j d|j d}t|d}||_|
  |j|j|j|jgd}tj| d|jd	d
 tdS )Nr   r   r  r  z is Rejectedr  r  z"Leave Successfully Rejected of {0}r   ro   r  )r   r   r   r   r|   r}   r~   r  r:   r  r   reject_leavert   r  r  rY  rE   r   r   r  r   r  r2   r2   r3   r1  M  s"   

r1  c           
      C   s   | j }tjj|d}tjj|jd }t| t|d}| j	
d}||}t| |jj}dd t|D }t }	||	d< ||	d< d	|	d
< ||	d< ||	d< t| d|	S )Nr   r   r  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk  q  rl  z'view_my_leave_table.<locals>.<listcomp>r  rD   zLeaves ListrO  rn  ro  zmyapp/employee_leave.html)r   r   r}   r~   r|   r   rW  r:   r*   rp  r{   rq  rr  rs  r   r   r   )
r1   r   r  rD   rr  rt  ru  rn  ro  r  r2   r2   r3   view_my_leave_tablec  s"   

r2  c                 C   s   d| j j d jv rG| jdkr-t| j}| r-| }| j |_ |  t	j
| ddd t }| j }tjj|jd}t| d|||jd	d
S tdS )Nrq   r   r\   zHoliday Added Successfully !!r   ro   r   zmyapp/add_holiday1.htmlzAdd Holidayr  z(Your are not authorize to view this page)r   r   rJ  rs   r^   r   r\   r`   r   r   r   r|   r}   r{   r   r   rf   r   )r1   r]   r@   r   rD   r2   r2   r3   add_holidayz  s   

r3  c              
   C   s   | j j}t j}tj }tj	j
||dd}| j }tj	j|jd}d| }t|d}| jd}	||	}
t|
 |
jj}dd t|D }t| d	|
|||||d
S )N)r   holiday_date__gter  r   zAll Holiday In    rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk    rl  zall_holiday.<locals>.<listcomp>zmyapp/all_holiday1.htmlholidaysrO  rG   rD   rn  ro  )r   rf   r   r  rG   r   r*  r+  r   r}   r~   r,  r|   r{   r   r*   rp  rq  r:   rr  rs  r   r   r1   rf   rG   r+  r7  r   rD   rO  rr  rt  ru  rn  ro  r2   r2   r3   all_holiday  s   




r9  c              
   C   s   | j j}t j}tj }tj	j
||d}| j }tj	j|jd}d| }t|d}| jd}	||	}
t|
 |
jj}dd t|D }t| d|
|||||d	S )
N)r   holiday_date__ltr   zAll Past Holiday of r5  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk    rl  z past_holiday.<locals>.<listcomp>zmyapp/past_holiday.htmlr6  )r   rf   r   r  rG   r   r*  r+  r   r}   r~   r|   r{   r   r*   rp  rq  r:   rr  rs  r   r   r8  r2   r2   r3   past_holiday  s   




r;  c              	   C   s   | j }|j}tjj|jd}t tdd }t	| tj
tt|dt|d@ tdd@ tdd	@ }t|d
}| jd}||}t	| |jj}	dd t|	D }
d}t| d||||	|
dS )Nr   r  )months)date_join__gter  Employeer  Trd  re  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk    rl  z new_employee.<locals>.<listcomp>zNew Employeezmyapp/new_employee.htmlrm  )r   rf   r|   r}   r{   r   dtr  r#   r:   r~   r   r*   rp  rq  rr  rs  r   r   )r1   r   rf   rD   six_months_agonew_employeesrr  rt  ru  rn  ro  rO  r2   r2   r3   new_employee  s   4

rB  c              	   C   s   | j }|j}tjj|jd}tjjd|d }t| t	|d}| j
d}||}t| |jj}dd t|D }	d}
t| d	||
|||	d
S )Nr   F)r   rf   re  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk    rl  z old_employee.<locals>.<listcomp>zOld Employeezmyapp/old_employee.html)rB  rO  rD   rn  ro  )r   rf   r|   r}   r{   r   r~   distinctr:   r*   rp  rq  rr  rs  r   r   )r1   r   rf   rD   old_employeesrr  rt  ru  rn  ro  rO  r2   r2   r3   old_employee  s$   

rE  c                 C   s   t jj| jjd}| jdkr>t| jd}| r-|	 }t
j| d|jjdd tdS t
j| dd	d t| d
||dS t }t }t jt|jdtdd@ |jd _t jj| jjd}||d< ||d< d|d< t| d
|S )Nr   r\   r  z$Account Successfully Created for {0}r   ro   bank_createzError Creating Accountrn   zmyapp/bank_create1.htmlr]   rD   rk   Trd  rD   r]   zAccount Creation FormrO  )r|   r}   r{   r   r   r^   BankCreationFormr\   r`   r   r   r   r  rD   rt   r   r   r   r   r~   r   rf   rT  rU  r1   rD   r]   r@   r  r2   r2   r3   rF    s"   
&rF  c                 C   s  t jj| jjd}| jdkrHtjj|d}t| j|d}|	 r7|
 }tj| d|jjdd td|dS tj| d	d
d t| d||dS t }tjj|d}t|d}t jt|jdtdd@ |jd _||d< ||d< |j|d< d|d< t| d|S )Nr   r\   r  r   r@   z'Bank Details Successfully Update of {0}r   ro   	bank_editzError In Updating Bank Details)alert alert-danger alert-dismissible showzmyapp/bank_edit1.htmlrG  r  rk   Trd  rD   r]   rf   zUpdate Bank DetailsrO  )r|   r}   r{   r   r   r^   r  rH  r\   r`   r   r   r   r  rD   rt   r   r   r   r   r~   r   rf   rT  rU  )r1   r   rD   r  r]   r@   r  r2   r2   r3   rK    s&   

&
rK  c              	   C   s   | j }|j}t  tjj|jd}tjtddt|d@ tdd@ tdd@ }t	|d	}| j
d
}||}t| |jj}dd t|D }	d}
t| d||
|||	dS )Nr   Intern)employee_typerk   r>  r@  Trd  re  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk    rl  z#intern_employee.<locals>.<listcomp>zIntern Employeezmyapp/intern_employee.html)intern_employeerO  rD   rn  ro  )r   rf   r:   r|   r}   r{   r   r~   r   r*   rp  rq  rr  rs  r   r   )r1   r   rf   rD   intern_employeesrr  rt  ru  rn  ro  rO  r2   r2   r3   rO    s   0

rO  c              
   C   s  t  }t }tjj| jjd}tjt|j	dtdd@ |j
d _||d< ||d< d|d< | jd	krSzt| j}| rtd
 | }d}t|jt|j }t|jt|j }|t| }|t|j }	|jrwt|j|jd  }t|jt|j t| }
t|jt|j }|	|
 | }||_|  tjj|jd }d}||||d}t||}||_|  |jj  d|j! d|j" d}t#jj$|j|d t%j&'t(j)d}t%j&'||}t*|d}|j+j||dd |, }W d    n1 sw   Y  t%-| t.j/| d|jj  ddd t0dW S t.j1| ddd ||d< t2| d|W S  t3yR } ztd| t.j1| |dd t0d W  Y d }~S d }~ww t2| d|S )!Nr   r  Trd  rD   r]   zAdd Employee SalaryrO  r\   validr   d   rw  myapp/payslip.htmlr@   r  absent_moneytaxz your salary of re   z	 is added)r   r   rC   rbr   
Salary of z Added Successfullyr   ro   show_salary_structurez$Error In Creating Salary of Employeern   zmyapp/add_salary.htmlzerror in salary createsalary_structure_create)4r   PayrollFormr|   r}   r{   r   r   r~   r   rf   rT  rU  r^   r\   r`   r:   r   r  basic_salary
total_dayspresent_daysrV  pfmedicalconvencebonus
net_salaryr  rD   rW  r[   rs   rt   rF   rG   rY  r   rH   rI   rJ   rK   
MEDIA_ROOTrO   rC   readremover   r   r   r   r   rP   )r1   r  r]   rD   r@   rV  per_dayabsent_daysrU  saldeductadditionnet_salr  template_pathrR   rV   r^  slip_folder	file_pathfilepdf_contentrZ   r2   r2   r3   r[     sp   &






r[  c              	   C   s   | j dkr>tjj| jjd}| jd }t| |d ur>t|dt|dB t|dB t|dB }t	j
|}t| d||d	S | j}t	jj
|jd
}tjj|jd}t|d}| jd}||}t| d}	|jj}
dd t|
D }t| d||	||
|dS )Nr\   r   search)employee__username__icontains)employee__full_name__icontains)month__icontains)year__icontainszmyapp/salary_table.html)r   rD   r{  r  rf  zAll Employee Salaryc                 S   rg  rh  r2   ri  r2   r2   r3   rk  y  rl  z)show_salary_structure.<locals>.<listcomp>)r   rO  rD   rn  ro  )r^   r|   r}   r{   r   r   r\   r:   r   Payrollr~   r   rf   r*   rp  rq  rr  rs  r   )r1   rD   r   r   	structurer   rr  rt  ru  rO  rn  ro  r2   r2   r3   rZ  c  s*   



rZ  c                 C   s  | j dkrtt|d}t| j|d}| rtd | }d}t|j	t|j
 }t|j
t|j }|t| }|t|j }	|jrPt|j	|jd  }t|jt|j t| }
t|jt|j }|	|
 | }||_|  tjj|jd }d}||||d	}t||}tjtjd
}|jdd}t| tj||}t| t| td ||_|  tjtjd}tj||}t |d}|j!j||dd |" }W d    n1 sw   Y  t| t#j$| d|jj% ddd t&d|dS t#j'| ddd t&d|dS t( }tt|d}t|d}t)jj*| j+j,d}t)jt-|j.dt-dd@ |j/d _0||d< ||d< d|d< t1| d |S )!Nr\   r   rJ  rQ  r   rR  rw  rS  rT  zsalary slip@r   zold file removerC   rW  TrX  rY  z Edited Successfullyr   ro   edit_salaryz#Error In Editing Salary of Employeern   r  rk   rd  rD   r]   zUpdate Employee SalaryrO  zmyapp/salary_edit1.html)2r^   r   rx  r\  r\   r`   r:   r   r  r]  r^  r_  rV  r`  ra  rb  rc  rd  r  r}   r~   rD   rW  r[   rH   rI   rJ   rK   re  rs   replacerg  rO   rC   rf  r   r   rt   r   r   r   r|   r{   r   r   r   rf   rT  rU  r   )r1   r   r  r]   r@   rV  rh  ri  rU  rj  rk  rl  rm  r  rn  rR   rV   old_slip_folderrs   old_file_pathro  rp  rq  rr  r  rD   r2   r2   r3   r{  |  sn   





&r{  c                 C   8   t t|d}|  tj| d|jj ddd tdS )Nr   rY  r  r   ro   rZ  )r   rx  deleter   r   rD   rt   r   )r1   r   salaryr2   r2   r3   delete_salary     r  c                 C   $   t jj| jjd}t| d||dS )Nr   zmyapp/delete_confirmation.htmlr   rD   r  r1   r   rD   r2   r2   r3   delete_salary_confirmation     r  c                 C   r  )NrZ  r  r0   r2   r2   r3   delete_cancel  r  r  c                 C   s`   t t|d}t|jjd}t| dd}d|j |d< |W  d    S 1 s)w   Y  d S )Nr   rW  zapplication/pdf)content_typezinline; filename=zContent-Disposition)r   rx  rO   rC   rI   r   rf  rs   )r1   r   r  fr   r2   r2   r3   download_pdf  s   $r  c           
   	   C   s   | j }tjj|d}tjj|jd}d}t|d}| jd}|	|}t
| |jj}dd t|D }	t| d|||||	d	S )
Nrw  r   zSalary Recordsr  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk    rl  z#employee_salary.<locals>.<listcomp>zmyapp/employee_salary.htmlr   rD   rO  rn  ro  )r   rx  r}   r~   r|   r{   r   r*   rp  rq  r:   rr  rs  r   r   )
r1   r   r   rD   rO  rr  rt  ru  rn  ro  r2   r2   r3   employee_salary  s   

r  c                 C   s   | j }tjt|jdtdd@ }| jdkr<t| j}|	 r+|
 }||_ |
  tj| d|j ddd td	S t }||jd
 _tjj|jd}t| d||d|dS )Nr  Trd  r\   zProject z Created Successfullyr   ro   create_projectr  r   zmyapp/create_project1.htmlzCreate Project)r]   rD   rO  r  )r   r|   r}   r~   r   rf   r^   ProjectFormr\   r`   r   r   r   project_namer   rT  rU  r{   r   r   )r1   r   r  r]   projectrD   r2   r2   r3   r    s   

r  c                 C   s   | j }tjj|d}tjj|jd}d}t|d}| jd}|	|}t
| |jj}dd t|D }	|||j|||	d}
t| d	|
S )
Nr   r   zProjects and Employeesr  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk    rl  z!show_projects.<locals>.<listcomp>)projectsrD   rf   rO  rn  ro  zmyapp/show_projects1.html)r   Projectr}   r~   r|   r{   r   r*   rp  rq  r:   rr  rs  r   rf   r   )r1   r   r  rD   rO  rr  rt  ru  rn  ro  rR   r2   r2   r3   show_projects  s   

r  c                 C   sL   | j jrtdS | j }tjj|d}tjj|jd}||dd}t	| d|S )N+You are not authenticated to view this page)r  r   zEmployee Projects)r  rD   rO  zmyapp/employee_projects1.html)
r   r)  r   r  r}   r~   r|   r{   r   r   )r1   r   r  rD   rR   r2   r2   r3   employee_project  s   r  c                 C   sR   | j jrtdS | j }tjj|jd}tj	 }t
jj||d}t| d||dS )Nr  r   )rD   r  zmyapp/check_in_out1.html)rD   employee_attendence)r   r)  r   r|   r}   r{   r   r   r*  r+  EmployeeAttendancer~   r   )r1   r   rD   
today_dater  r2   r2   r3   check_in_out  s   
r  c                 C   s   | j jrtdS | j }tjj|tj dd	 }|r+t
j| |j ddd tdS t|dtj d}|  t
j| |jj d	d
d tdS )Nr  T)rD   r  is_inz) You Already Punch-In and Punch-Out Todayrn   ro   add_attendence)rD   r  in_timez You Are In Successfullyr   )r   r)  r   r  r}   r~   r   r*  r+  r   r   infort   r   r  r   r   rD   )r1   r   r   r@   r2   r2   r3   check_in'  s   r  c           	      C   s   | j jrtdS tt|d}|jj}tjj	|dd }d|_
|j}t }||_||  }|d }|dkr:d|_nd|_|  tj| |j d	d
d tdS )Nr  r   r   Ti  r   zFull DayzHalf Dayz You Are Out Successfullyr   ro   r  )r   r)  r   r   r  rD   r   r|   r}   r~   is_outr  r   r  out_timer  day_typer   r   r   rt   r   )	r1   r   
attendencer   rD   intimeouttimer  	work_hourr2   r2   r3   	check_out6  s"   r  c              	   C   s   | j }tjj|jd}tj j}t	jj
|jdd}d}t|d}| jd}||}t| |jj}	dd t|	D }
t| d	||||	|
d
S )Nr   r{  z-createdzAll Attendancer  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk  ]  rl  z"all_attendence.<locals>.<listcomp>zmyapp/all_attendance1.html)rD   attendancesrO  rn  ro  )r   r|   r}   r{   r   r   r*  r+  r-  r  r~   rf   r,  r*   rp  rq  r:   rr  rs  r   r   )r1   r   rD   r  r  rO  rr  rt  ru  rn  ro  r2   r2   r3   all_attendenceN  s   

r  c                 C   s  | j jrtdS | j }|j}tjt|dtdd@ }tjtt|dtdd@ tdd@ }tjtt|dtd	d@ tdd@ }tjtt|dtd
d@ tdd@ }tjtt|dtdd@ tdd@ }tjtt|dtdd@ tdd@ }tjtt|dtdd@ tdd@ }	tjj|j	d}
tjt|dtdd@ tdd@ }|
||||||||	dd
}t
| d|S )Nr  r  rq   r  r  r  Trd  r  r  r	  r  r  r   rk   r?  r@  Teams)
rD   rP  	org_adminr  r  r  r  r  r  rO  zmyapp/teams1.html)r   r)  r   rf   r|   r}   r~   r   r{   r   r   )r1   r   rf   r  r  r  r  r  r  r  rD   rP  rR   r2   r2   r3   teamsb  s"   ******&r  c           	      C   s   | j }|j}tjj|d}t| tjj|jd}tjj|ddd}t| tjt|dtdd@ tdd@ }|||d	}t	| d
|S )Nr   rE  TrB  r  r   rk   r?  r@  rd  )rD   rR  rP  myapp/teams.html
r   rf   r|   r}   r{   r:   r   r~   r   r   )	r1   r   r   rf   rB  rD   rR  rP  rR   r2   r2   r3   rR  u  s   &rR  c                 C   s   | j }|j}tjj|d}tjj|d}t| tjj|jd}tjj|ddd}tjj|ddd}	t| tjt|dtdd	@ tdd
@ }
|||
|	d}t	| d|S )Nr   rE  Tr  r>  )rF  r  r   rk   r?  r@  rd  )rD   rR  rP  team_employeesr  r  )r1   r   midr   rf   rB  rF  rD   rR  r  rP  rR   r2   r2   r3   r    s   &r  c                 C   s   | j dkr8t| jd}| r,| }| j|_|  tj| d|j	 ddd t
dS tj| dd	d t
dS t }t }tjj| jjd
}||d< ||d< d|d< t| d|S )Nr\   r  zHealth Benefit z Successfully Createdr   ro   create_insurancez Error In Creating Health BenefitrL  r   rD   r]   zAdd Health BenefitrO  zmyapp/add_benefit.html)r^   InsuranceCreationFormr\   r`   r   r   rD   r   r   provider_namer   r   r   r|   r}   r{   r   r   )r1   r]   r@   r  rD   r2   r2   r3   r    s"   
r  c           
      C   s   | j jrtdS | j }tjj|jd}tt|j	d}t
|d}| jd}||}t| |jj}dd t|D }||d||d	}	t| d
|	S )Nr  r{  r   r5  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk    rl  z"show_insurance.<locals>.<listcomp>zAdministrative Benefitsr  zmyapp/benefits.html)r   r)  r   Health_Benefitr}   r~   rf   r   r|   r   r*   rp  r{   rq  r:   rr  rs  r   r   )
r1   r   r   rD   rr  rt  ru  rn  ro  rR   r2   r2   r3   show_insurance  s   

r  c                 C   s   | j jrtdS tjj| j jd}| jdkrCt| j	d}|
 r7| }||_|  tj| ddd tdS tj| d	d
d tdS t }t }||d< ||d< d|d< d|d< t| d|S )Nr  r   r\   r  zFeedback Successfully Submittedr   ro   create_feedbackzError In Creating FeedbackrL  rD   r]   zPerformance & Feedback FormrO  r$  r#  zmyapp/create_feedback1.html)r   r)  r   r|   r}   r{   r   r^   FeedbackFormr\   r`   r   rD   r   r   r   r   r   r   rI  r2   r2   r3   r    s(   
r  c           
   	   C   s   | j }tt|jd}tjj|jd}d}t|d}| j	
d}||}t| |jj}dd t|D }	d}t| d|||||	d	S )
Nr   r{  zAll Feedbackr  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk    rl  z!show_feedback.<locals>.<listcomp>zmyapp/show_feedback1.html)rD   	feedbacksrO  rn  ro  )r   r   r|   r   Feedbackr}   r~   rf   r*   rp  r{   rq  r:   rr  rs  r   r   )
r1   r   rD   r  rO  rr  rt  ru  rn  ro  r2   r2   r3   show_feedback  s   

r  c                 C   r  )Nr   zFeedback of r  r   ro   r  )r   r  r  r   r   rD   rt   r   )r1   r   feedbackr2   r2   r3   delete_feedback  r  r  c                 C   r  )Nr   z'myapp/delete_feedback_confirmation.htmlr  r  r  r2   r2   r3   delete_feedback_confirmation  r  r  c                 C   r  )Nr  r  r0   r2   r2   r3   delete_feedback_cancel  r  r  c                 C   s   | j dkrSt| jd}| rG| }| j}||_|  d|j d|j d|j }t	j
j|j|ddd tj| d	|j d
dd tdS tj| ddd tdS t }t }tj
j| jjd}||d< ||d< d|d< t| d|S )Nr\   r  Training & session of z is arrange in our company on z at rJ  r  rf   r   rK  r  Training of z Successfully Addedr   ro   training_and_sessionsz+Something Went Wrong In Adding New TrainingrL  add_trainingr   rD   r]   zAdd New Training & SessionsrO  zmyapp/create_training1.html)r^   TrainingFormr\   r`   r   r   trainerr*  r  rY  r}   r   rf   r   r   r   r   r   r|   r{   r   r   )r1   r]   r@   r   r^  r  rD   r2   r2   r3   create_training  s(   
r  c                 C   s`   | j jrtdS | j }tj }tjt	|j
dt	|d@ }tt|jd}t| d||ddS )Nr  r   )	date__gter   zmyapp/training&session.htmlzTraining & Sessions)	trainingsrD   rO  )r   r)  r   r   r*  r+  Trainingr}   r~   r   rf   r   r|   r   r   )r1   r   r+  r  rD   r2   r2   r3   show_trainings  s   
r  c                 C   s   t t|d}t }t|d}tjj| jjd}||d< ||d< d|d< | j	dkrxt| j
|d}| rf| }| j}||_|  d	|j d
}tjj|j|ddd tj| d|j ddd td|dS ||d< tj| ddd t| d|S t| d|S )Nr   r  rD   r]   zUpdate Training & SessionsrO  r\   rJ  r  z is updated , please checkrJ  r  r  zTraining of "z" Successfully Updatedr   ro   edit_trainingz'Something Went Wrong Please Check BelowrL  zmyapp/edit_training.html)r   r  r   r  r|   r}   r{   r   r   r^   r\   r`   r   r  rY  r   rf   r   r   r   r   r   )r1   r   r@   r  r]   rD   r   r^  r2   r2   r3   r  %  s,   

r  c                 C   6   t t|d}|  tj| d|j ddd tdS )Nr   r  r  r   ro   r  )r   r  r  r   r   r  r   )r1   r   tr2   r2   r3   delete_trainingD     r  c                 C   s4   t t|d}tjj| jjd}t| d|||jdS )Nr   z'myapp/delete_training_confirmation.html)r   rD   r  )	r   r  r|   r}   r{   r   r   r   r  )r1   r   r  rD   r2   r2   r3   delete_training_confirmationL  s   r  c                 C   r  )Nr  r  r0   r2   r2   r3   delete_training_cancelS  r  r  c                 C   s   | j jrtdS tt| j jd}tjt	|dt	|d@ }|r8dd |D }t
j| d|d  d	d
 tdS tt|d}tjj||d t
j| d|j ddd
 tdS )Nr  r  )training__idrw  c                 S   s   g | ]}|j jqS r2   )r  r  ri  r2   r2   r3   rk  `  rl  z"read_trainings.<locals>.<listcomp>zYou already read training of r   rn   ro   r  r   )r  rD   zYou read training of z successfullyr   )r   r)  r   r   r|   r   training_readr}   r~   r   r   r   r   r  r   r  )r1   r   r  r   r  r  r2   r2   r3   read_trainingsX  s   r  c                 C   s\   t t| jjd}|j}t| tjj|d}|D ]}t|j	 qt| t
| d||ddS )Nr   r{  zmyapp/training_readers.htmlzTraining Readers)rD   readersrO  )r   r|   r   r   rf   r:   r  r}   r~   rD   r   )r1   rD   rf   r  r   r2   r2   r3   training_readersi  s   r  c                 C   r'  )Nr   zmyapp/integration.htmlzSlack Notificationr  r(  r)  r2   r2   r3   integrationx  s   r  c                 C   r  )Nzhttps://slack.com/signinr  r0   r2   r2   r3   notify_slack}  s   r  c              	   C   s|   t t| jjd}tjj| jjd}t|d}| j	
d}||}t| |jj}dd t|D }t| d||d||d	S )
Nr  r   r5  rf  c                 S   rg  rh  r2   ri  r2   r2   r3   rk    rl  zpolicy_page.<locals>.<listcomp>zmyapp/policy.htmlzCompany Policy)rD   r  rO  rn  ro  )r   r|   r   r   privacy_policyr}   r~   rf   r*   rp  r{   rq  r:   rr  rs  r   r   )r1   rD   r  rr  rt  ru  rn  ro  r2   r2   r3   policy_page  s   

r  c                 C   s   | j dkrJt| jd}| jd}|r>| r=| }| j|_|  d}tjj	| jj
|ddd tj| dd	d
 tdS ntj| ddd
 tdS tt| jjd}t }t| d||dS )Nr\   r  policy_textzPolicy CreatedrJ  r  )rf   r   rK  r  zPolicy Successfully Addedr   ro   
add_policyzNo Input data can be foundrn   r  zmyapp/add_policy.html)rD   r]   )r^   privacy_policy_formr\   r{   r`   r   r   rY  r}   r   rf   r   r   r   r   r   r|   r   r   )r1   r]   r  r@   r^  rD   r2   r2   r3   r    s$   
	r  c                 C   s   | j dkrQ| jd}dd |D }| jd }ztt|d}tjj|d}||_|	  W n tj
y?   tjj||d}Y nw tj| d	|jj d
d tdS tt| jjd}tjj|jdd}t| d||ddS )Nr\   handbookc                 S   s   g | ]}|qS r2   r2   ri  r2   r2   r3   rk    s    z add_handbook.<locals>.<listcomp>rD   r  rw  )r  rD   zHandbook Successfully Added of r   ro   add_handbookTr   zmyapp/add_handbook.htmlzAdd Handbook)rD   r  rO  )r^   r\   r  r   r|   r  r}   r{   r  r   r  r   r   r   rD   rt   r   r   r   r~   rf   r   )r1   r  r   r  r  obj1rD   r  r2   r2   r3   r    s"   

r  c                 C   sV   | j d}t| tjj|d}g }|D ]}|jD ]	}|d|i qqtd|iS )NrD   rx  r  r   )	rp  r{   r:   r  r}   r~   r  r  r   )r1   r  equ_objr!  r   jr2   r2   r3   r    s   
r  c                 C   s   | j }tt|jd}d}| jdkrHt| j}| r6| }||_ |  t	j
| d|j ddd tdS t	j| d	d
d t| d|||dS t }tjj|jdd}||jd _t| d|||dS )Nr  z
Add Vendorr\   The Vendor "z" Is Successfully Addedr   ro   vendor_list'Something went wrong please check belowrn   myapp/add_vendor.htmlr]   rD   rO  Tr   internal_stakeholders)r   r   r|   r   r^   
VendorFormr\   r`   r   r   r   rs   r   r   r   r}   r~   rf   rT  rU  )r1   r   rD   rO  r]   r  r  r2   r2   r3   
add_vendor  s"   

r  c                 C   s   | j }tt| j jd}tjj|jd}d}| jdkrJ| j	
d}t| |r5tjt|dt|dB }ntjj|jd}dd	 |D }td
|iS t| d|||dS )Nr  r   zAll Vendorsr\   zcategories[])criticality__in)
status__inc              	   S   s8   g | ]}|j |jd d |j D |j|j|jdqS )c                 S   s   g | ]}|j r
|j n|jqS r2   )rt   rE   )rj  categoryr2   r2   r3   rk    s    z*vendor_list.<locals>.<listcomp>.<listcomp>)r   rs   r  complaint_withcriticalityr  )r   rs   r  rJ  r  r  r  )rj  itemr2   r2   r3   rk    s    	zvendor_list.<locals>.<listcomp>r<   zmyapp/vendor_list.html)vendorsrD   rO  )r   r   r|   r   Vendorr}   r~   rf   r^   r\   r  r:   r   r   r   )r1   r   rD   r  rO  
categoriesr<   
items_datar2   r2   r3   r    s   
	r  c                 C   s   | j }tt|jd}tt|d}d}| jdkrPt| j|d}| r>|	 }||_ |	  t
j| d|j ddd	 td
S t
j| ddd	 t| d|||dS t|d}t| d|||dS )Nr  r   zUpdate Vendorr\   r  r  z" Was Successfully Updatedr   ro   r  r  rn   r  r  )r   r   r|   r   r  r^   r  r\   r`   r   r   r   rs   r   r   r   )r1   r   r   rD   r@   rO  r]   r  r2   r2   r3   edit_vendor  s    

r  c                 C   r  )Nr   r  z" Is Deleted Successfullyr   ro   r  )r   r  r  r   r   rs   r   )r1   r   vr2   r2   r3   delete_vendor  r  r  c                 C   s4   t jj| jjd}tt|d}t| d|||jdS )Nr   z%myapp/delete_vendor_confirmation.html)r   rD   rs   )	r|   r}   r{   r   r   r   r  r   rs   )r1   r   rD   r  r2   r2   r3   delete_vendor_confirmation"  s   r  c                 C   r  )Nr  r  r0   r2   r2   r3   delete_vendor_cancel)  r  r  c                 C   s   t jj| jjd}d}t }|||d}| jdkrZ| jd}| jd}t| j| j}|j	rN|
 }|j|_|j|_||_|
  tj| ddd	 td
S tj| ddd	 td
S t| d|dS )Nr   zUpload Agreements)rD   rO  r]   r\   employee_handbookconfidential_agreementz)Upload agreement document successfully !!r   ro   upload_agreementsr  rn   zmyapp/upload_agreement.htmlr   )r|   r}   r{   r   r   UploadAgreementFormr^   rV  r\   r`   r   rs   title_employee_handbooktitle_confidential_agreementrD   r   r   r   warningr   )r1   rD   rO  r]   rR   r  r  r  r2   r2   r3   r  .  s&   
r  c                 C   s   t dd| S )Nz	\{(.+?)\}z\1)resub)textr2   r2   r3   remove_bracketsF  s   r  c              	   C   s  t jj| jjd}d}tjj|d}t|jj}g }d}|j	D ]}|j
 r2t||j
}	||	 qdd |D }
| jdkrtjtjd}|j d}tj||}| j}|j	D ]D}|D ]9}||j
v rtd	| d
|j
  |jD ]#}td|j
 ||j
v r|j
||| |_
td| d||   qsq^t|j
|_
qZ|| t||jd}|  t|d}|jj||dd W d    n1 sw   Y  t| t| d t d|jdS |||
d}t!| d|dS )Nr   zSubmit Company Agreementsz\{.*?\}c                 S   s   g | ]}| d qS )z{})strip)rj  r`  r2   r2   r3   rk  [  s    z"fill_documents.<locals>.<listcomp>r\   agreement_docx-company-agreement.docxzFound placeholder: z in paragraph: zrun text...z
Replacing z with )rD   r  rW  TrX  zform submitted successfullyr  )rD   rO  form_fieldszmyapp/fill_documents.htmlr   )"r|   r}   r{   r   r   r  r,   r  rI   
paragraphsr  r  r  findallextendr^   rH   rJ   rK   re  r\   r:   runsr|  r  r   r  r  rO   rg  r   r   r   r   )r1   r   rD   rO  	documentsdocumenttokenspattern	paragraphr`  clean_tokensoutput_folderrV   rW   	form_datafieldrundocr  rR   r2   r2   r3   fill_documentsJ  sR   









r  )ContentFile)Cmc                 C   s  t jj| jjd}tjj|d }|d|d}| jdkrt	d t
| j}t	| |d }|d\}}|d	d
 }tt|d| d}	t|jj}
|
jD ]!}d|jv rr|jdd|_| }|j|	tdtdd  nqQd}|j d}tj||}|
| t|jj t|d}|jj||dd W d    n1 sw   Y  d|_|  t| t ddiS t!| d|dS )Nr   rw  zMake Sign On Company Agreement)rD   rO  sign_docr\   r+  rH  z;base64,rL  z
signature.rr   z[signature]r   r      )widthheightz)/var/www/html/humari/media/agreement_docxr	  rW  TrX  r   zmyapp/sign_agreement.htmlr   )"r|   r}   r{   r   r   r  r~   rW  r^   r:   r   loadsbodysplitr  base64	b64decoder,   r  rI   r  r  r|  add_runadd_picturer  rH   rJ   r   rg  rO   is_signr   r   )r1   rD   r  rR   r   
image_datar  imgstrextrq  r  r  r  r  rV   rW   r  r2   r2   r3   sign_documents  s@   




r-  c                 C   s  t j }|D ]	}|js|  qtj }|  tj }|  tj }|  tj }|  t	j }|  t
j }|  tj }	|	  tj }
|
  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj }|  tj| ddd t dS )NzAll companies data deleted!!rn   ro   r   )!r|   r}   rJ  r)  r  r  r   rx  r  r  r  r  r  rY  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r   )r1   r  r   banksr7  payrollr  
attendancebenefitr  r  r   	mark_readsubscriptionr  r  vendorrf  r  r  id_docr  r  r\  
desciptioncompanyrD   r  r2   r2   r3   delete_all_data  sr   

























r8  c                 C   r.   )Nzmyapp/camera.htmlr/   r0   r2   r2   r3   show_camera  r5   r9  )r   )django.shortcutsr   r   r   r   django.contrib.authr   r   r   formsdjango.viewsr   django.contrib.auth.decoratorsr   django.contrib.auth.modelsr   django.contribr   models
decoratorsr   django.db.modelsr   django.db.models.functionsr   r   r   r   leave.formsr   r   r   leave.modelsr   r   django.utilsr   r?  r   django.contrib.auth.tokensr   django.httpr   r   r   django.template.loaderr    ior!   	xhtml2pdfr"   rH   dateutil.relativedeltar#   paypal.standard.formsr$   r   django.urlsr%   r   r   r&   r'   django.views.decorators.csrfr(   r   django.utils.httpr)   django.core.paginatorr*   django.utils.encodingr+   docxr,   django.core.mailr-   r4   r?   r[   rb   r9   r   r   r   r   r   r   r   r   r   r   r5  r6  r=  rc  rv  r  r  rN  r  r  r  r  r  r  r  r  r  r  r  r&  r  r  django.utils.timesincer  r   r*  r,  r/  r0  r1  r2  r3  r9  r;  rB  rE  rF  rK  rO  r[  rZ  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  rR  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   django.core.files.baser  r%  docx.sharedr  r-  r8  r9  r2   r2   r2   r3   <module>   s    "
I

2
5


**
"





H


 ZZ











A
@







	

















4
 ;