B
    fl                 @   s*   d dl T d dlmZ G dd dejZdS )    )*)cmf_global_settingsc                   s   e Zd ZdZdZejjddddddd	d
dddddddddddddg Zedd Z	edd Z
edd Zedd Zeed d!d"d# Zed$d% Z fd&d'Zd(d) Zed*d+ed+d,d-Zed.d/ Zeed+d0d1Z  ZS )2CmfGlobalSettingsuF   
    Глобальные настройки приложения
    TZchange_page_settingsZenabled_plugin_nclistZeva_available_versionZeva_backup_entryZeva_backup_historyZeva_cancel_upgradeZeva_current_sheduled_upgradeZeva_current_versionZeva_restoreZeva_shedule_upgradeZeva_upgradeZeva_upgrade_entryZeva_upgrade_historyget_settingsZperformance_server_test
public_getZpublic_get_page_customizepublic_get_settingspublic_listZreset_page_settingsZfstek_set_defaultc             O   s   d S )N )clsargskwargsr	   r	   #./cmf/models/cmf_global_settings.pyr   "   s    z%CmfGlobalSettings.public_get_settingsc             O   s   d S )Nr	   )r
   r   r   r	   r	   r   r   (   s    zCmfGlobalSettings.public_listc             O   s   d S )Nr	   )r
   r   r   r	   r	   r   r   -   s    zCmfGlobalSettings.public_getc             C   s$   t | dd stjjdgd| _| jS )N_global_settingsr   )fields)getattrmodelsr   getr   )r
   r	   r	   r   r   1   s    zCmfGlobalSettings.get_settingszCmfGlobalSettings:changed)Zchannelc              O   s   d t j_d S )N)r   r   r   )Z_argsZ_kwargsr	   r	   r   clean_cache8   s    zCmfGlobalSettings.clean_cachec             C   s   t d tdd  d S )Nz"CmfGlobalSettings::changed triggerzCmfGlobalSettings:changed)gdebugZcmf_emit_server_event)r
   r	   r	   r   trigger_reload=   s    
z CmfGlobalSettings.trigger_reloadc                s   |    |   t j||S )N)emitr   supersave)selfr   r   )	__class__r	   r   r   B   s    zCmfGlobalSettings.savec       
      C   s  ddl m} |d| j ddtjgd td}|s@i }i t_|| jj}|dkri }| jj|d	< tjottjjj|d
< d|d< d|d< d|d< | j|d< g |d< g |d< g |d< g |d< t	| dr| j
jr| j
j|d< t	| dr| jjr| jj|d< t	| dr| jjr| jj|d< |dp(g }| jrxN| jddD ]<\}}|dkrZqBt| |}|j|jkrtd| j d|j  qBt|tjjrt|jts|jdk	r||jjj n.t|jtrx|jD ]}||jj qW |jdk	rpt|tjjrpt|jtsB|jdk	rB||jjj n.t|jtrpx|jD ]}||jj qXW |d | qBW |d | d}	| jrd}	|d |	 tt|d |d< tt|d |d< tt|d |d< tt|d |d< |tj| jj< dS )u   
        Сообщаем во фронт о необходимости обновить объект
        :return:
        r   )cmf_emit_eventzevent-z1this event DEPRECATED, use is\_changed-class_name/)	namespaceZevent_persons	emit_listNidcmf_modified_by	parent_id	person_idplace
class_nameZrelation_personsZchanged_fieldschanged_relationsactionT)
is_changed)Zcmf_modified_atr!   Zcmf_viewed_atZcmf_viewed_byZcmf_locked_atZcmf_locked_byzemit: FIXME is changed bug ..updateinsert)cmf.includer   r    r   Zcurrent_personr   r   valuer%   hasattrr"   Z
is_definedr#   r$   r(   itemsr   oldr   
isinstanceZcmfr   Z
CmfRelBaselistappendZ_oldextendZis_newset)
r   r   r   Zbodyr&   kvZfieldir'   r	   r	   r   r   G   sr    



zCmfGlobalSettings.emitN)backup_namec             O   sh   dd l }tj  dddg}| r*||  |j|ddtddtddd	}|  |jdksdt	d
|S )Nr   z/usr/bin/bashz/opt/bin/pg_backupZbackupTz"/var/log/eva-backup-subprocess.logza+z&/var/log/eva-backup-subprocess.err.log)	close_fdsstart_new_sessionstdoutstderru-   Не удалось сделать бекап)

subprocessr   CmfAccessListcheck_admin_moder3   Popenopencommunicate
returncodeAssertionError)r9   r   r   r>   cmdprocr	   r	   r   	pg_backup   s    


zCmfGlobalSettings.pg_backupc        	      O   sf   dd l }dd l}dddg}|j|d|jtddd}| \}}|j}|rXtd	| | 	d
S )Nr   z/usr/bin/bashz/opt/bin/pg_restorer2   Tz&/var/log/eva-backup-subprocess.err.logza+)r:   r<   r=   u4   Произошла ошибка при вызове 
)
r>   jsonrA   PIPErB   rC   rD   RuntimeErrordecodesplit)	r   r   r>   rJ   rF   ZprocessouterrZerrcoder	   r	   r   pg_backup_ls   s    
zCmfGlobalSettings.pg_backup_lsc          	      sX   dd l }dd l ddd| g}tj  |j|ddtddtdd fd	d
 jD dS )Nr   z/usr/bin/bashz/opt/bin/pg_restoreZrestoreTz"/var/log/eva-backup-subprocess.logza+z&/var/log/eva-backup-subprocess.err.logc                s"   i | ]}| d s j| |qS )ZUWSGI_)
startswithenviron).0env)osr	   r   
<dictcomp>   s    z0CmfGlobalSettings.pg_restore.<locals>.<dictcomp>)r:   r;   r<   r=   rU   )r>   rV   r   r?   r@   rA   rB   rS   )r9   r   r   r>   rF   r	   )rV   r   
pg_restore   s    
zCmfGlobalSettings.pg_restore)__name__
__module____qualname____doc__Z	api_allowr   r   Zapi_methodsclassmethodr   r   r   r   staticmethodZon_server_eventr   r   r   r   strrH   rQ   rX   __classcell__r	   r	   )r   r   r      sL   Hr   N)r,   Z
cmf.fieldsr   r   r	   r	   r	   r   <module>   s   