B
    Òîb4*  ã               @   sà   d dl mZ d dlmZ d dlmZ d dlZd dlZd dl	m
Z
 d dl	mZ d dl	mZ d dl	mZ d d	l	mZ d d
lmZmZmZ d dlmZmZmZmZ dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    )Úcache)Úgettext_lazy)Úget_content_type_for_modelN)ÚEmployee)ÚResign)Ú
Department)ÚArea)ÚPosition)ÚSTATUS_VALIDÚSTATUS_INVALIDÚSTATUS_RESIGN)ÚSyncEmployeeÚSyncJobÚSyncDepartmentÚSyncAreac          	   C   sl   | j  ¡ j|dd}g }x4|D ],}y| t|ƒ¡ W q tk
rH   Y qX qW |r^t|ƒd p`d}d |¡S )NT)Zflaté   z{0})ÚobjectsÚallZvalues_listÚappendÚintÚ	ExceptionÚmaxÚformat)ÚclsZ
code_fieldZcodesZ_codesÚcÚcode© r   úAG:\easytimepro\master/mysite/base\views\middletable_migrations.pyÚgenerate_code   s    

r   c             C   s†   | rt jj| d}n|r(t jj|d}nd S |rV|d }|r‚|j|kr‚||_| ¡  n,t ƒ }| sjtt dƒ} | |_|pv| |_| ¡  |S )N)Ú	dept_code)Ú	dept_namer   r   )r   r   Úfilterr    Úsaver   r   )r   ÚnameZdeptsÚdeptr   r   r   Údepartment_valid   s"    


r%   c             C   s†   | rt jj| d}n|r(t jj|d}nd S |rV|d }|r‚|j|kr‚||_| ¡  n,t ƒ }| sjtt dƒ} | |_|pv| |_| ¡  |S )N)Úposition_code)Úposition_namer   r&   )r	   r   r!   r'   r"   r   r&   )r   r#   ZjobsÚposr   r   r   Úposition_valid3   s"    


r)   c             C   s†   | rt jj| d}n|r(t jj|d}nd S |rV|d }|r‚|j|kr‚||_| ¡  n,t ƒ }| sjtt dƒ} | |_|pv| |_| ¡  |S )N)Ú	area_code)Ú	area_namer   r*   )r   r   r!   r+   r"   r   r*   )r   r#   ZareasÚarear   r   r   Ú
area_validI   s"    


r-   c       #      C   s4  t jjdd}| ¡ }|sdS t|dƒ}xtd||ƒD ]ò}|||| … }xÚ|D ]Ð}yv|j ¡ }|sŠd|_| |_	d|_
| ¡  wV|jr |j ¡  d¡p¢d}|jrº|j ¡  d¡p¼d}	|jrÎ|j ¡ pÐd}
|jrâ|j ¡ päd}|jrö|j ¡ pød}|jr|j ¡ pd}|j}tjj|d	}d
}d}|sF|s\|	s\d}n|s\|s\|	s\d}|s~||_| |_	d|_
| ¡  wV|
s¦|s¦d|_| |_	d|_
| ¡  wV|sÈtƒ }||_|jpÂ||_n|d }|jrÞ|jnd|_|jrò|jnd|_t|
|ƒ}|r||_|s|r*t||ƒ}||_|jr8|jn|  ¡ |_|jrP|jnd|_|j rj|j  ¡ pld}|rŒ| !¡ dkrŒ| "¡ |_ |j#rš|j#nd|_#|j$r®|j$nd|_$| ¡  g }t%t&||	ƒƒ}x0| '¡ D ]$\}}t(||ƒ}|rØ| )|¡ qØW |r6|r,t*|j+ ,¡ ƒ}t*t-|| ƒƒ}n|}||_+t.jj|d /¡ }|j0}|rj|rjt1|_2| 3¡  n@|sª|sªt4|_2|  ¡ }t.ƒ } || _5|| _6d| _7d| _8|  ¡  | |_	| ¡  d|_| |_	d|_
| ¡  W qV t9k
r& }! z2ddl:}"|" ;¡  t<|!ƒ|_| |_	d|_
| ¡  W dd}!~!X Y qVX qVW q8W dS )zh
     Migrate data form middleware table(sync_employee) to software
    :param dt_now:
    :return:
    r   )ÚflagNiè  zFailed: Pin is required.r   ú,Ú )Úemp_codeTz+Failed: Area Code Or Area Name is required.Fz6Failed: Department Code Or department one is required.)ÚmÚf)Úemployeeé   ZSystemÚ
Successful)=r   r   r!   ÚcountÚminÚranger1   ÚstripÚsync_retÚupdate_timer.   r"   r*   Úsplitr+   r   r    Újob_codeÚjob_nameZ
multi_arear   Zall_objectsZ
first_nameZnicknameÚ	last_namer%   Z
departmentr)   ZpositionZ	hire_dateÚdateZbirthdayÚgenderÚlowerÚupperZemailZcard_noÚdictÚzipÚitemsr-   r   Úlistr,   r   Úsetr   ÚfirstZactive_statusr
   ÚstatusÚdeleter   r4   Zresign_dateZresign_typeÚreasonr   Ú	tracebackÚ	print_excÚstr)#Údt_nowÚquerysetÚtotal_migrationÚstepsÚxÚqsÚobjZpinr*   r+   r   r    r>   r?   Zarea_appendZempsZ	area_flagÚdescriptionZempr$   ZjobrB   Z	obj_areasZ	area_dictÚkeyÚvalr,   Z	old_areasZ	emp_areasZ
resign_objZ
emp_activeZresignation_dateÚtÚerN   r   r   r   Úemployee_migration_   sÎ    







r]   c             C   sî   t jjdd}| ¡ }|sd S t|dƒ}xÀtd||ƒD ]°}|||| … }xš|D ]’}|jrd|j ¡ pfd}|jrx|j ¡ pzd}|sŠ|sŠd}	n>yt	||ƒ d}	W n* t
k
rÆ }
 zt|
ƒ}	W d d }
~
X Y nX |	|_| |_d|_| ¡  qPW q6W d S )Nr   )r.   iè  r0   z.Failed: Area Code Or Area Name one is requiredr6   r   )r   r   r!   r7   r8   r9   r*   r:   r+   r-   r   rP   r;   r<   r.   r"   )rQ   rR   rS   rT   rU   rV   rW   r   r#   rX   r\   r   r   r   Úarea_migrationÒ   s*    


r^   c             C   sî   t jjdd}| ¡ }|sd S t|dƒ}xÀtd||ƒD ]°}|||| … }xš|D ]’}|jrd|j ¡ pfd}|jrx|j ¡ pzd}|sŠ|sŠd}	n>yt	||ƒ d}	W n* t
k
rÆ }
 zt|
ƒ}	W d d }
~
X Y nX |	|_| |_d|_| ¡  qPW q6W d S )Nr   )r.   iè  r0   z,Failed: Job Code Or Job Name one is requiredr6   r   )r   r   r!   r7   r8   r9   r>   r:   r?   r)   r   rP   r;   r<   r.   r"   )rQ   rR   rS   rT   rU   rV   rW   r   r#   rX   r\   r   r   r   Úposition_migrationì   s*    


r_   c             C   sî   t jjdd}| ¡ }|sdS t|dƒ}xÀtd||ƒD ]°}|||| … }xš|D ]’}|jp\d ¡ }|jpjd ¡ }|s~|s~d}	nFyt	||ƒ d}	W n2 t
k
rÂ }
 zt|
ƒdd… }	W dd}
~
X Y nX |	|_| |_d	|_|jd
d qPW q6W dS )zv
    Migrate data form middleware table(sync_department) to software
    :param dt_now: trigger time
    :return:
    r   )r.   Niè  r0   z:Failed: Department Code Or Department Name one is requiredr6   éÈ   r   T)Zforce_update)r   r   r!   r7   r8   r9   r   r:   r    r%   r   rP   r;   r<   r.   r"   )rQ   rR   rS   rT   rU   rV   rW   r   r#   rX   r\   r   r   r   Údepartment_migration  s*    


"ra   ) Zdjango.core.cacher   Zdjango.utils.translationr   Ú_Zdjango.contrib.admin.optionsr   ZdatetimeZjsonZmysite.personnel.modelsr   r   r   r   r	   Zmysite.admin.modelsr
   r   r   Zmysite.base.modelsr   r   r   r   r   r%   r)   r-   r]   r^   r_   ra   r   r   r   r   Ú<module>   s&   s