B
    c0              '   @   s  d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d dlmZ d dlmZ d dlmZ d dlmZ dd ZeddddZeddddZ eddddZ!eddddZ"eddddZ#eddddZ$eddddZ%eddd d!Z&eddd"d#Z'eddd$d%Z(eddd&d'Z)eddd(d)Z*eddd*d+Z+eddd,d-Z,eddd.d/Z-eddd0d1Z.eddd2d3Z/eddd4d5Z0d6d7 Z1d8d9 Z2d:d; Z3dd<d=Z4dd>d?Z5d@dA Z6dBdC Z7dDdE Z8dFdG Z9dHdI Z:dJdK Z;dLdM Z<dNdO Z=dPdQ Z>dRdS Z?dTdU Z@dVdW ZAedXdY ZBedZd[ ZCd\d] ZDdd^d_ZEed`edadbedceddbedde ddbedee!ddbedfe"ddbedge,edhd-dbedie#edhddbedje$edhddbedke%edhddbedle&edhd!dbedme(edhd%dbedne+edhd+dbedoe'edhd#dbedpe)edhd'dbedqedrdsdteduedvdbedwe2d9dbedxe1d7dbedye3d;dbedze6dAdbed{e8dEdbed|e7dCdbed}e:edhdIdbed~e9edhdGdbede;dKdbede=dOdbede>dQdbede?dSdbede@dUdbedeAdWdbede*edhd)dbedeCd[dbedeDd]dbedeEd_dbedeBdYdbg#ZFejGreFHede-edhd/db eFHede.edhd1db dS )    N)urlinclude)HttpResponse)TemplateResponse)JsonResponse)apps)ContentType)login_required)inject_default_context)insert_non_model_permissionload_from_json)list_ftp)zk_site)settings)gettext_lazyc             C   s8   ddl m} |j dd}dd |D }t|ddS )	Nr   )WorkflowRoleidZ	role_namec             S   s(   g | ] }t td |d |d dfqS ))r   nameZpIdr      )dictzip).0obj r   )G:\easytimepro\master/mysite/base\urls.py
<listcomp>   s    ztree_nodes.<locals>.<listcomp>F)Zsafe)Zmysite.workflow.modelsr   objectsallvalues_listr   )requestr   objs	tree_datar   r   r   
tree_nodes   s    r"   Zstampc             C   s   t | d|S )Nzdashboard/absent_list.html)r   )r   contextr   r   r   dashboard_absent   s    r$   c             C   s   t | d|S )Nzdashboard/present_list.html)r   )r   r#   r   r   r   dashboard_present!   s    r%   c             C   s   t | d|S )Nzdashboard/online_list.html)r   )r   r#   r   r   r   dashboard_online&   s    r&   c             C   s   t | d|S )Nzdashboard/offline_list.html)r   )r   r#   r   r   r   dashboard_offline+   s    r'   c             C   s   t | d|S )Nz system_setting/mail_setting.html)r   )r   r#   r   r   r   email_setting0   s    r(   c             C   s   t | d|S )Nz%system_setting/ad_server_setting.html)r   )r   r#   r   r   r   ad_server_setting5   s    r)   c             C   s   t | d|S )Nz$system_setting/ad_field_setting.html)r   )r   r#   r   r   r   ad_field_setting:   s    r*   c             C   s   t | d|S )Nz%system_setting/temp_mask_setting.html)r   )r   r#   r   r   r   temp_mask_setting?   s    r+   c             C   s   t | d|S )Nz&system_setting/pdf_report_setting.html)r   )r   r#   r   r   r   pdf_report_settingD   s    r,   c             C   s   t | d|S )Nz!system_setting/alert_setting.html)r   )r   r#   r   r   r   alert_settingI   s    r-   c             C   s   t | d|S )Nz$system_setting/whatsapp_setting.html)r   )r   r#   r   r   r   whatsapp_settingN   s    r.   c             C   s   t | d|S )Nzsystem_setting/sms_setting.html)r   )r   r#   r   r   r   sms_settingS   s    r/   c             C   s   t | d|S )Nz"system_setting/report_setting.html)r   )r   r#   r   r   r   report_settingX   s    r0   c             C   s^   ddl m} ddlm} |jj| jjd}| rR|jj	| jjd}|j
|jd}t| d|S )Nr   )
Membership)Company)Zvendor_company__id)r   )company_phonecompany_cnrz#system_setting/company_setting.html)mysite.base.modelsr1   mysite.cloud.modelsr2   r   filterusercurrent_companyexistsgetr3   r4   r   )r   r#   r1   r2   
membershipcompanyr   r   r   company_setting]   s    
r>   c             C   s   t | d|S )Nz%system_setting/auxiliary_setting.html)r   )r   r#   r   r   r   auxiliary_settingk   s    r?   c             C   s   t | d|S )Nz/system_setting/personalized_custom_setting.html)r   )r   r#   r   r   r   personalized_custom_settingp   s    r@   c             C   s   |j dd t| d|S )NZ
autoexport)
model_namezautoexport/auto_export.html)updater   )r   r#   r   r   r   auto_exportu   s    rC   c          
   C   s~  dd l }dd l}ddlm} ddlm} ddlm} ddlm	} ddl
m} ddlm}	 | j dkr||j|jd	 t| d
|S | j dkrzddi d}
|d}|rd|
d< ||d|
d< |||
S |ddd | j }|dd }|s2|dd d|
d< ||d|
d< |||
S y\|j|sL|| |j|s|dd d|
d< ||d|
d< |||
S W nR tk
r } z2|dd d|
d< ||d|
d< |||
S d }~X Y nX y|	|\}}W nN tk
r@ } z.|dd d|
d< |||
d< |||
S d }~X Y nX |d|d< ||d< ||
d< |dd |||
S d S )Nr   )r   )r   )r   )	force_str)cache)backupr;   )ZdatabaseZdatabase_namezsystem_setting/db_backup.htmlZpost )retmessagevalZdatabase_backuprH   Z#database_backup_is_under_processingrI   r   iQ Zbackup_store_pathZstore_path_is_requiredZstore_path_is_wrongz%Y-%m-%d %H:%M:%SZbackup_last_backupZbackup_filerJ   )jsonosdjango.confr   django.http.responser   django.utils.translationr   Zdjango.utils.encodingrD   django.core.cacherE   Zmysite.base.database_backuprF   methodlowerrB   ZDATABASE_ENGINEZDATABASE_NAMEr   r;   dumpssetPOSTr   pathr:   makedirs	Exceptionstrftime)r   r#   rL   rM   r   r   _rD   rE   rF   responseZ	is_backuprJ   Z
store_patheZlast_backupZdb_filer   r   r   	db_backup{   sn    


r^   c       
      C   s  ddl m} ddlm} ddlm} | }||}| jdd}|rt	|j
j|dj}|dd}g }|rx^|D ]0}	t|	d	 |krd
|	d< nd|	d< ||	 qtW qg }xD|D ]}	d|	d< ||	 qW n$g }x|D ]}	d|	d< ||	 qW tt|S )Nr   )AutoExportTask)get_tree_nodes_from_db)get_current_user	task_coderG   )rb   Zareasr   TruecheckedFalse)mysite.base.models.auto_exportr_   "mysite.personnel.models.model_arear`   mysite.base.threadlocalsra   GETr;   rL   loadsr   paramsstrappendr   rT   )
r   r_   r`   ra   current_user	base_datatask_idtask_objtmpdatar   r   r   area_tree_data   s2    



rt   c       
      C   s  ddl m} ddlm} ddlm} | }||}| jdd}|rt	|j
j|dj}|dd}g }|rx^|D ]0}	t|	d	 |krd
|	d< nd|	d< ||	 qtW qg }xD|D ]}	d|	d< ||	 qW n$g }x|D ]}	d|	d< ||	 qW tt|S )Nr   )r_   )r`   )ra   rb   rG   )rb   Zdepartmentsr   rc   rd   re   )rf   r_   (mysite.personnel.models.model_departmentr`   rh   ra   ri   r;   rL   rj   r   rk   rl   rm   r   rT   )
r   r_   r`   ra   rn   ro   rp   rq   rr   rs   r   r   r   dept_tree_data   s2    



rv   c       
      C   s  ddl m} ddlm} ddlm} | }||}| jdd}|rt	|j
j|dj}|dd}g }|rx^|D ]0}	t|	d	 |krd
|	d< nd|	d< ||	 qtW qg }xD|D ]}	d|	d< ||	 qW n$g }x|D ]}	d|	d< ||	 qW tt|S )Nr   )r_   )r`   )ra   rb   rG   )rb   Z	positionsr   rc   rd   re   )rf   r_   &mysite.personnel.models.model_positionr`   rh   ra   ri   r;   rL   rj   r   rk   rl   rm   r   rT   )
r   r_   r`   ra   rn   ro   rp   rq   rr   rs   r   r   r   pos_tree_data   s2    



rx   c             C   sx   ddl m} ddlm} tjr"d S | jr<|j 	dd}n*|jj
| dd}|jj
|d	dd}d	d
 |D }|S )Nr   )r2   )r1   r   r   )r8   r=   )id__inc             S   s*   g | ]"}t td t|d |d fqS ))r   r   r   r   )r   r   rl   )r   r   r   r   r   r      s    z$get_company_tree.<locals>.<listcomp>)r6   r2   r5   r1   r   CLOUD_VERSIONis_superuserr   r   r   r7   values)r8   r2   r1   r    membershipsr!   r   r   r   get_company_tree  s    r~   c             C   s   ddl m} ddlm} |d kr(|  n|}|jj|dd}|jj|d}|dd}d	d
 |D }t	j
rtdd}	x|D ]}
|
d |	 |
d< q~W |S )Nr   )Group)GroupProfile)r=   group_ptr_id)ry   r   r   c             S   s&   g | ]}t td |d |d fqS ))r   r   r   r   )r   r   )r   r   r   r   r   r   1  s    z"get_group_tree.<locals>.<listcomp>i)Zdjango.contrib.auth.modelsr   r5   r   get_current_companyr   r7   r|   r   r   rz   slice)r8   r=   r   r   r9   	group_idsZquerysetr    r!   Z
name_sliceZgroup_detailr   r   r   get_group_tree$  s    

r   c             C   s  ddl m} ddlm} ddlm} ddlm} ddlm} ddl	m} | j
d}|jj|d}|jj| jjd}	|| j|	}
|| j|	}|| j|	}t| j|	}t| j}|jj|	|d}|jd	krd
nd}|jrd
nd}g g g g g ||d}|j }dd |D }|j }dd |D }|j }dd |D }|j j|	d}dd |D }x<|
D ]4}|d |kr|d|d< nd|d< |d | q`W x<|D ]4}|d |krd|d< nd|d< |d | qW x<|D ]4}|d |krd|d< nd|d< |d | qW x<|D ]4}|d |kr6d|d< nd|d< |d | qW |d k	r|jj|d}dd |D }xb|D ]Z}|d |krd|d< nd|d< |d | ttdd	dkr~t|d dkr~P q~W tt|S )Nr   )MyUser)r2   )r1   )r`   user_id)r   )r=   r8   r   TF)r=   deptareaposgroupr{   	is_vendorc             S   s   g | ]
}|j qS r   )r   )r   r   r   r   r   r   M  s    z"auth_tree_data.<locals>.<listcomp>c             S   s   g | ]
}|j qS r   )r   )r   r   r   r   r   r   O  s    c             S   s   g | ]
}|j qS r   )r   )r   r   r   r   r   r   Q  s    )r=   c             S   s   g | ]
}|j qS r   )r   )r   Zprofiler   r   r   r   U  s    r   rc   rd   re   r   r   r   r   )r8   c             S   s   g | ]}t |jqS r   )rl   
company_id)r   Zmemr   r   r   r   t  s    r=   SUPPORT_MUL_COMPANY) Zmysite.accounts.modelsr   r6   r2   r5   r1   ru   r`   rg   rw   ri   r;   r   r8   r9   r   r~   ZroleZvendor_companyZget_auth_deptr   get_auth_areaZget_auth_posZgroupprofile_setr7   rm   getattrr   lenr   rL   rT   )r   r   r2   r1   Zget_dept_treeZget_area_treeZget_pos_treer   Z	edit_userr=   Zdept_base_dataZarea_base_dataZpos_base_dataZgroup_base_dataZcompany_base_datar<   r{   r   Zbase_responseZ	auth_deptZdept_ids	auth_areaZarea_idsZauth_posZpos_idsZgroup_profilesr   rs   r}   Zcompany_idsr   r   r   auth_tree_data9  st    














r   c             C   s  ddl m} ddlm} ddlm} g }| j}t| j	dd}|dkr^t
|jj	|dj}n|j}|js|jj|dd	}|jj|d
}	n
|j }	xZ|	D ]R}
t
|
j}||krd}nd}||||
jd ttdddkrt|dkrP qW tt|S )Nr   )r2   )r1   )Terminalobj_idrK   )r   )r8   r=   )ry   FT)rd   r   r   r   r   )r6   r2   r5   r1   Zmysite.iclock.modelsr   r8   intri   r;   rl   r   r   r9   r{   r7   r|   r   r   rm   r   r   r   r   r   rL   rT   )r   r2   r1   r   rs   r8   r   Zselected_companyZmembership_relate_companyqsZcomr   rd   r   r   r   !terminal_assign_company_tree_data  s.    


r   c             C   sp   ddl m} | jj}| j }|jj|d}g }| jjsP| rP|j|	 d}|rbdd |D }t
t|S )Nr   )r   )r=   )Zarea__inc             S   s   g | ]}d |j |jdqS )Zfalse)rd   r   r   )r   alias)r   rs   r   r   r   r     s    z&terminal_tree_data.<locals>.<listcomp>)Z#mysite.iclock.models.model_terminalr   r8   r   r   r   r7   r{   r:   r   r   rL   rT   )r   r   r   r9   r   rs   r   r   r   terminal_tree_data  s    
r   c             C   s   ddl m} ddlm} d}|dd }|r2|}n<|jjdd }|rVt|j	t
}ni }|dd }|rn|}|dkrtd	}n,|d
krtd}n|dkrtd}ntd}t|S )Nr   )rE   )	DbMigraterK   is_migrated
db_migrate)r   r   dbMigrate_status_processing   dbMigrate_status_finish   dbMigrate_status_exceptiondbMigrate_status_pending)rQ   rE   r5   r   r;   r   r7   firstr   valuer   r[   r   )r   rE   r   process	c_migrater   migrate_settingmigrate_statusr   r   r   refresh_migrate_status  s*    


r   c             C   s  ddl m} ddlm} ddlm} |dd }|jjdd	 }|rTt
|jt}ni }| jdkrd	}|rp|}n|dd }|r|}|d
kr|d}n,|dkr|d}n|dkr|d}n|d}dd| i}	t| d|	S | jdkr
|r|d ddi}
tt|
S d S )Nr   )r   )r   )rE   r   r   )r   ri   rK   r   r   r   r   r   r   r   Zmigrate_processz%szdbmigrate/db_migrate.htmlrV   msgok)rP   r   r5   r   rQ   rE   r;   r   r7   r   r   r   r   rR   r   deleter   rL   rT   )r   r[   r   rE   r   r   r   r   r   r#   resr   r   r   r     s:    




r   c             C   s   dd l }ddlm} ddlm} | jdkr|j  }| jdd}| jdd}| jd}i }|rh|srd	|d
< n8|j 	|d}	|j 	|d}
||d}|||	|
||d
< t
t|S d S )Nr   )r_   )transaction_auto_exportrV   
manual_endrG   manual_startrk   z start time or end time not existflagz%Y-%m-%d %H:%M:%S)rk   )datetimerf   r_   Zmysite.iclock.auto_exportr   rR   ZnowrV   r;   strptimer   rL   rT   )r   r   r_   r   Zdt_nowr   r   Zdatasr\   startendZoptionr   r   r   manual_export  s     



r   c                sd  ddl m}m} ddl m} |d|td}|d|td}g }	x҈ j d d d d d	 D ]}
xd
D ]}||
jkrtqdt|
|d }|d krqd|dkr|r|s|		| n|		 fdd|D  qd|}xB|D ]:}|r|s|	
|j|jf q|		 fdd|jD  qW qdW qZW ||	}	i }|r`x<|	D ]4\}}}d|||}|dkr(t|j||< q(W |S )Nr   )hungary_notationget_args_form_dict)remove_duplicate_elements
only_classFinsert_permsTr   rK   )actionsZaction_setsr   c                s   g | ]}  |qS r   )
get_action)r   action)adminr   r   r     s    z.get_action_permission_dict.<locals>.<listcomp>c                s   g | ]}  |qS r   )r   )r   r   )r   r   r   r     s    z{0}_{1})ZGeneralActionDeleteZGeneralActionNew)mysite.admin.utilsr   r   r   bool	__class__mro__dict__r   extendrm   r   clsformatrl   Zverbose_name)r   content_typerA   kwargsr   r   r   r   r   r   klassZattr_keyZclass_actionsZclass_action_setsZ
action_setpermission_dictZ_klassr   ZdescZ	code_namer   )r   r   get_action_permission_dict  s:    "


&
r   c             C   s   i }ddddddddd	d
dg}xj|D ]b}t | }xN|D ]F}tj|}| \}}|tjkr<tj| }	t	|	||}
|
|
 q<W q$W t|S )NZaccountsmobiler   attZpayrollZaccZauthbaseZiclockZ	personnelZworkflow)r   Zget_app_configZ
get_modelsr   r   Zget_for_modelZnatural_keyr   Z	_registryr   rB   r   )r   r   Zvisible_appsappmodelsmodelr   Z
_app_labelrA   r   Z	temp_dictr   r   r   !get_action_permission_translation&  s    



r   c             C   sJ  ddl m} ddlm} | j dkrFddlm} | j	 }|
dd |
dd  }}d}g }|r|r|||}	t|	 |jr|d	||d
  d}|r|drdddddddg}
ddg}dddddddg}dg}||
kr|d n||kr|d n||kr|d  nd!| kr6|d" nd#| krP|d  nd$| krj|d% nd&| kr|d' nfd(| kr|d  nL||kr|d) n6d*| ksd+|kr|d,j|d- n
|d" |d.sd}|s0|r|d/d|i  |d0 |d1d2i |d3 || ||S d S )4Nr   )r   )r   ri   )	get_model	app_labelr   Fz%(app)s/%(model)s/export.html)r   r   TZReportZdailyAttendanceReportZdailyDetailsReportZdailySummaryReportZabsentReportZ
lateReportZearlyLeaveReportZovertimeReportZmonthlyDetailedSummaryReportZmonthlyDurationSummaryReportZdailyStatusReportZmonthlyStatusSummaryReportZmonthlyOTSummaryReportZabnormalReportZmonthlyBasicStatusReportZadminleavedetailsReportZyearlySummaryReportZdeptWiseReportz$virtual/report_export_dept_wise.htmlz#virtual/report_export_emp_wise.htmlzvirtual/summary_export.htmlZyearlyzvirtual/report_export.htmlZsummaryZbirthdayz$virtual/employeebirthday_report.htmlZholidayzvirtual/report_exportZunregistereduserreportz%virtual/empScheduleReport_export.htmlZdailyZempScheduleReportzvirtual/{model}_export.html)r   Z_reportzvirtual/%(model)s.htmlzvirtual/export.htmlZ
is_virtualtruezexport.html)Z	django.dbr   django.template.responser   rR   upperr   r   ri   r   r;   
isinstanceZModelrm   endswithrS   r   rB   )r   r   r   r   r#   r   rA   Z_modelZ	templatesr   Z	dept_wiseZemp_wiseZexclude_date_wiseZjust_defaultr   r   r   get_export_form7  sh    








r   c             C   s.   | j dkr*dd tjD }t| dd|iS d S )Nri   c             S   s    g | ]}|d  d|d  fqS )r   z%sr   r   )r   Z_lngr   r   r   r   u  s    z&language_translate.<locals>.<listcomp>z*language_translate/language_translate.html	languages)rR   r   Z	LANGUAGESr   )r   r   r   r   r   language_translates  s
    
r   c             C   s"   ddl m} || }tt|S )Nr   )get_reference_language)mysite.base.language_translater   r   rL   rT   )r   r   rs   r   r   r   get_reference|  s    r   c             C   sn   ddl m} | jd}| jdd}| jd}||||}|dkrXttdd	iS ttd|iS d S )
Nr   )save_translate_languagelanmoduler   translate_language0r   r   )r   r   rV   r;   r   rL   rT   )r   r   r   r   r   rI   r   r   r   r     s    r   c             C   s^  ddl m} ddlm} ddlm} | jdd}|jj	| j
j|d}|  dtj|t| j
jf }|| |d	kr|d
| j
j}|rd|d< |jj	| j
jd
djt|d dtjd
t| j
jf }|||d np|d| j
j}	|	rL|dd}
d|	|
< |jj	| j
jddjt|	d dtjdt| j
jf }|||	d ttddiS )Nr   )rE   )SystemSetting)get_system_settingr   rG   )r   r   z%s_%s_%sr)   r*   FZenable_sync)r   iQ r-   Z_settingZ_alertr   r   )rQ   rE   Zmysite.base.models.sys_settingr   Zmysite.utilsr   rV   r;   r   r7   r8   r9   r   r   ZUNITrl   rB   rL   rT   rU   replacer   )r   rE   r   r   r   Zsystem_settingsZ	cache_keyZad_field_settingsZad_field_cache_keyZalert_settingsZ
alert_nameZalert_cache_keyr   r   r   clear_system_settings  s2    
r   c             C   s$   ddl m} |  ttddiS )Nr   )restart_apache_servicer   r   )r   r   r   rL   rT   )r   r   r   r   r   restart_service  s    r   c             C   s>   ddl m} || \}}|| jd< ttd| diS )Nr   )get_captchacaptchabase64)Zgenerate_captchar   Zsessionr   rL   rT   getvalueencode)r   r   keyr   r   r   r   refresh_captcha  s    
r   c             C   sF   d| j kr:| j d dd dd}|d kr2i }||d< t| d|S )NZQUERY_STRING=r   z%20 company_addresszsystem_setting/map.html)ZMETAsplitr   r   )r   r#   r   r   r   r   get_company_location  s    
r   z^wrf_tree_node/$Zmulti_wfr_tree)r   z^dashboard_absent/$z^dashboard_present/$z^dashboard_online/$z^dashboard_offline/$z^company_setting/$Zsystem_settingz^email_setting/$z^ad_server_setting/$z^ad_field_setting/$z^temp_mask_setting/$z^alert_setting/$z^report_setting/$zpdf_report_setting/$z^whatsapp_setting/$z^api/zmysite.base.api.urlsZbiotime_base_api)	namespacez^list_ftp/$r   zdept_tree_data/$zarea_tree_data/$zpos_tree_data/$zauth_tree_data/$zterminal_tree_data/$z#terminal_assign_company_tree_data/$zdb_migrate/$zrefresh_migrate_status/$zmanual_export/$z#get_action_permission_translation/$zget_export_form/$zlanguage_translate/$zget_reference_file$zsave_translate_language/$z^sms_setting/$zrestart_service/$zrefresh_captcha/$z^get_company_location/$z^clear_system_settings/$z^auxiliary_setting/$z^personalized_custom_setting/$)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)NN)N)IrL   Zdjango.conf.urlsr   r   rO   r   r   r   Zdjango.httpr   Zdjango.appsr   Z"django.contrib.contenttypes.modelsr   Zdjango.contrib.auth.decoratorsr	   Zmysite.admin.decoratorsr
   r   r   r   Zmysite.base.ftp_utilsr   Zmysite.admin.sitesr   rN   r   rP   r   r[   r"   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r>   r?   r@   rC   r^   rt   rv   rx   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZurlpatternsZTHAILANDrm   r   r   r   r   <module>   s   =

J%$<	



