B
    b)                 @   s   d dl 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 G d	d
 d
ejZdddZdddZdddZdd ZdS )    N)settings)cache)modelsDatabaseError)ProgrammingError)gettext_lazy)db_const)sys_confc                   s   e Zd ZdZejeddddZejeddddZejed	d
ddZ	e
dddZG dd dZG dd dZ fddZ  ZS )SysParamu   系统参数表--作废 discardZsysParam_field_name   F)Z
max_lengthZnullZsysParam_field_type
   TZsysParam_field_value   c             C   sz   ddl m} | s(tdtj }|r(|S td}|j }i }x|D ]}t|j	||j
< qDW ||d< tdtj | |S )Nr   )SysParamDeptz%s_att-ruleZcustomer)Zmysite.base.modelsr   r   getr   UNIT_load_att_rule_by_idobjectsalliddept_idset)Zreload_datar   att_ruleZ	all_paramZdepartment_rule_dictt r   5G:\easytimepro\master/mysite/base\models\sys_param.pyload_att_rule   s    

zSysParam.load_att_rulec               @   s   e Zd Zedd ZdS )zSysParam.Adminc              C   s  t j  dk rddlm}  | tj dd}t dddd		  t d
ddd		  t dt
ddd		  t ddt
d dd		  t dddd		  t dddd		  t dddd		  t dddd		  t dddd		  t dddd		  t dddd		  t dddd		  t dddd		  t dddd		  t dddd		  t dd dd		  t d!ddd		  t d"ddd		  t d#d$dd		  t d%d&dd		  t d'd(d)d		  t d*|d)d		  t d+|d)d		  t d,d-d)d		  ttjd. d/}|| |  d S )0N   r   )	auth_codez%Y-%m-%dZENCODErule_id0Zrule_0)	para_name
para_value	para_typer   
apply_nameAll	rule_namez%sZsysParam_default_ruleNameminutes_earlyminutes_lateZminutes_no_break_inZ60Zminutes_no_break_outminutes_no_inZminutes_no_leaveZminutes_not_over_timeminutes_work_dayZ480Zno_break_inZ1012Zno_break_outZno_inZ1001Zno_leaveZ1002out_over_timetwo_dayZcheck_in_colorZ16777151Zcheck_out_colorZ12910591Z
db_versionZ2002 Zinstall_dateZsys_dateZADMSDBVersionZ544z_sys.datw)r
   r   r   countZmysite.zkauthr   datetimeZnowstrftimesave_openr   ZADDITION_FILE_ROOTwriteclose)r   Zauth_code_resultfr   r   r   initial_data2   s>    
zSysParam.Admin.initial_dataN)__name__
__module____qualname__staticmethodr7   r   r   r   r   Admin1   s   r<   c               @   s"   e Zd ZejZedZeZdZ	dS )zSysParam.MetazSystem Rule))r    r"   N)
r8   r9   r:   r   Z	APP_LABELZ	app_labelr2   Zverbose_nameZverbose_name_pluralZunique_togetherr   r   r   r   MetaV   s   r=   c                s   t t| j|| d S )N)superr
   r1   )selfargskwargs)	__class__r   r   r1   \   s    zSysParam.save)F)r8   r9   r:   __doc__r   Z	CharFieldr2   r    r"   r!   r;   r   r<   r=   r1   __classcell__r   r   )rB   r   r
      s   %r
   1r,   c          
   C   s   |}| t jkrn"tdtj|| f }|dk	r2|S | dkrLddlm} | S yH|dkrftj	j
| d}ntj	j
| |d}|r|d jdk	r|d j}W n8 ttfk
r } zd	S d}~X Y n tk
r   d
S X tdtj|| f | |S )u   从 SysParam 系统参数表中读取参数

    :param p_name: Parameter Name || 参数名
    :param default: 默认值
    :param p_type: Parameter Type || 参数类型
    :return: 参数名在数据库中的对应值
    z%s_%s_%sNZDEPT_VERSIONr   )UpdateDeptCacher,   )r    )r    r"   )r	   ZOPT_NOT_CACHEr   r   r   r   Zmysite.iclock.modelsrF   r
   r   filterr!   r   r   	Exceptionr   )p_namedefaultp_typeZdb_valueZp_cachedrF   found_paramer   r   r   get_param_value`   s*    
rP   c          	   C   s   | t jkr,yt| W n tk
r*   dS X yn|dkrJtjj| d }ntjj| d| d }|rz||_|j	dd nt| t
|t
|dj	dd	 W n ttfk
r   Y nX td
tj|| f | dS )u    设置系统参数，将系统参数表中以 p_name 为名的参数的值设置为

    :param p_name: 参数名
    :param p_value: 参数值
    :param p_type: 参数类型
    :return: None
    Nr,   )r    z%s)r    r"   T)Zforce_update)r    r!   r"   )Zforce_insertz%s_%s_%s)r	   ZOPT_IS_INTEGERint	TypeErrorr
   r   rI   firstr!   r1   strr   rJ   r   r   r   r   )rK   Zp_valuerM   rN   r   r   r   set_param_value   s$    

rU   c             C   sP   t jj| |d  tdtj|| f  t| drLtdtjdf  d S )N)r    r"   z%s_%s_%sZ
opt_check_z%s_%sZall_record_states)	r
   r   rI   deleter   r   r   rT   
startswith)rK   rM   r   r   r   del_param_value   s    rX   c              C   s   ddt d dt d dt dt dddddddd	d	dd
d
d
d
ddddddddddddd}tjjd|  d}xV|D ]N}|j}||d rt|jdkrd||< qt|tjkr|j||< qtt	|j||< qtW |
 S )Nr   z%szDefault Attendance Rulesr$   zOur Companyx   i  r   d   <   i           r   )r   r%   r#   r   Zcompany_logoZcompany_nameZearly_absentZlate_absentZmin_shift_intervalZmax_shift_intervalZmin_record_intervalr&   Zminutes_late_absentZminutes_early_absentr'   r(   Zminutes_no_outZminutes_out_over_timeZminutes_come_over_timer)   Zminutes_work_day1Zno_in_absentZno_out_absentZover_time_typeZout_check_typer*   Zcome_over_timer+   Zwork_month_start_dayZwork_week_start_dayZreal_work_no_latezrule_%s)r"   Zon)r2   r
   r   rI   r    r   r!   r	   ZATT_RULE_VALUE_STORE_AS_STRrQ   copy)Z_idr   Zdb_att_paramoptr%   r   r   r   r      sR    





r   )rE   r,   )r,   )r,   )r/   Zdjango.confr   Zdjango.core.cacher   Z	django.dbr   r   Zdjango.db.utilsr   Zdjango.utils.translationr   r2   Zmysite.baser   Zmysite.base.sys_configr	   ZModelr
   rP   rU   rX   r   r   r   r   r   <module>   s   M
+
#
	