
    *`mh"                     @    d dl T d dlmZ  G d dej                  ZdS )    )*)cmf_global_settingsc                   ,    e Zd ZdZdZej        j        g dz   Zed             Z	ed             Z
ed             Zed             Z fdZd	 Zed
ddefd            Zed             Zedefd            Zedefd            Zed             Z xZS )CmfGlobalSettingsuF   
    Глобальные настройки приложения
    T)change_page_settingsenabled_plugin_nclisteva_available_versioneva_backup_entryeva_backup_historyeva_cancel_upgradeeva_current_sheduled_upgradeeva_current_versioneva_restoreeva_shedule_upgradeeva_upgradeeva_upgrade_entryeva_upgrade_historyget_settingsperformance_server_test
public_getpublic_get_page_customizepublic_get_settingspublic_listreset_page_settingsfstek_set_defaulthtml_clean_attributessend_front_statsc                     d S N clsargskwargss      #./cmf/models/cmf_global_settings.pyr   z%CmfGlobalSettings.public_get_settings$   s	     t    c                     d S r   r    r!   s      r%   r   zCmfGlobalSettings.public_list*   s	     tr&   c                     d S r   r    r!   s      r%   r   zCmfGlobalSettings.public_get/   s    tr&   c                 F    t           j                            dgd          S )Nr   T)fieldscache_inmemory)modelsr   get)r"   s    r%   r   zCmfGlobalSettings.get_settings3   s     '++C5+NNNr&   c                 ^    |                                    t                      j        |i |S r   )emitsupersave)selfr#   r$   	__class__s      r%   r1   zCmfGlobalSettings.save7   s+    		uww|T,V,,,r&   c                    ddl m}  |d| j         ddt          j        g           t                              d          }|si }i t          _        |                    | j        j                  }|ci }| j        j        |d	<   t          j        ot          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|                     d          D ]\  }}|dv rt!          | |          }|j        |j        k    r+t                              d| j         d|j                    Vt'          |t(          j        j                  rt'          |j        t.                    s,|j        %|                    |j        j        j                   nCt'          |j        t.                    r)|j        D ]!}|                    |j        j                   "|j        durt'          |t(          j        j                  rt'          |j        t.                    s,|j        %|                    |j        j        j                   nCt'          |j        t.                    r)|j        D ]!}|                    |j        j                   "|d                             |           |d                             |           d}	| j        rd}	|d                             |	           t/          t9          |d                             |d<   t/          t9          |d                             |d<   t/          t9          |d                             |d<   t/          t9          |d                             |d<   |t          j        | j        j        <   dS )u   
        Сообщаем во фронт о необходимости обновить объект
        :return:
        r   )cmf_emit_eventzevent-z1this event DEPRECATED, use is\_changed-class_name/)	namespaceevent_persons	emit_listNidcmf_modified_by	parent_id	person_idplace
class_namerelation_personschanged_fieldschanged_relationsactionT)
is_changed)cmf_modified_atr;   cmf_viewed_atcmf_viewed_bycmf_locked_atcmf_locked_byzemit: FIXME is changed bug ..updateinsert)cmf.includer5   r:   gcurrent_personr-   r9   valuer?   hasattrr<   
is_definedr=   r>   rD   itemsgetattrolddebug
isinstancecmfr*   
CmfRelBaselistappend_oldextendis_newset)
r2   r5   r9   bodyrB   kvfieldirC   s
             r%   r/   zCmfGlobalSettings.emit;   sp   
 	/.....)))+^jm~  O  ~P  	Q  	Q  	Q  	QEE+&&	 	IAK}}TW]++<DDJ&'&6&T1;K;N;TD"# $D $D DM!%D')D#$%'D!"(*D$%DN4%% 	5$.*C 	5 $ 4D4%% 	5$.*C 	5 $ 4D4!! 	-dj&; 	- J,DM HH%899?R? 	1

d
33 1 11 G G G a((9''GG^$/^^EL\^^___eSZ%:;; A%ek488 AU[=T)001EFFFF#EK66 A!& A AA-44QTZ@@@@:S((Zsz?T-U-U(%ei66 A59;P)001CDDDD#EIt44 A!& A AA-44QTZ@@@@%&--a0000 !(():;;;; 	FXf%%%c$x.1122X!%c$/?*@&A&A!B!B$(T2E-F)G)G$H$H !#'D1C,D(E(E#F#F %)DGM"""r&   N)backup_namere   c           
      >   dd l }t          j                                         g d}| r|                    |            |                    |ddt          dd          t          dd                    }|                                 |j        dk    s
J d            |S )	Nr   )/usr/bin/bashz/opt/bin/pg_backupbackupT"/var/log/eva-backup-subprocess.loga+&/var/log/eva-backup-subprocess.err.log)	close_fdsstart_new_sessionstdoutstderru-   Не удалось сделать бекап)	
subprocessr,   CmfAccessListcheck_admin_moder[   Popenopencommunicate
returncode)re   r#   r$   rp   cmdprocs         r%   	pg_backupzCmfGlobalSettings.pg_backup   s    --///??? 	$JJ{###ttTXY}  @D  UE  UE'+,TVZ'['[   ] ]!###%T###r&   c            	      $   dd l }dd l}g d}|                    |d|j        t	          dd                    }|                                \  }}|j        }|rt          d|           |                                	                    d          S )	Nr   )rg   /opt/bin/pg_restorerZ   Trk   rj   )rl   rn   ro   u4   Произошла ошибка при вызове 
)
rp   jsonrs   PIPErt   ru   rv   RuntimeErrordecodesplit)	r#   r$   rp   r}   rw   processouterrerrcodes	            r%   pg_backup_lszCmfGlobalSettings.pg_backup_ls   s    >>>""3$z'+,TVZ'['[ # ] ]&&((S$ 	][VY[[\\\zz||!!$'''r&   c           
          dd l }dd lddd| g}t          j                                         |                    |ddt          dd          t          dd          fd	j        D             
          S )Nr   rg   r{   restoreTri   rj   rk   c                 V    i | ]%}|                     d           |j        |         &S )UWSGI_)
startswithenviron).0envoss     r%   
<dictcomp>z0CmfGlobalSettings.pg_restore.<locals>.<dictcomp>   s6    $p$p$pcWZWeWefnWoWo$pS"*S/$p$p$pr&   )rl   rm   rn   ro   r   )rp   r   r,   rq   rr   rs   rt   r   )re   r#   r$   rp   rw   r   s        @r%   
pg_restorezCmfGlobalSettings.pg_restore   s    			 5y+N--///ttTXY}  @D  UE  UE'+,TVZ'['[$p$p$p$pRZ$p$p$p   r r 	rr&   returnc                     ddl } ddl}t          j        rt          j        S t	                      t          _        t          t          j         ddd          5 }|                    |          }ddd           n# 1 swxY w Y   | j	        j
        }| j	        j        }t          t          ||d         z                       t          j        d<   |                                t          j        d<   |d                                         D ]w\  }}|t          j        d         v rIt          t          t          j        d         |         |z                       t          j        d         |<   b|t          j        d         |<   xt          j        S )	us  Возвращаем и кешируем json настройки белого списка разрешенных html аттрибутов и их тегов
        вынесли в ручку для возможности использования на фронтенде

        Returns:
            dict: словарь аттрибутов и тегов
        r   Nz/cmf/util/clean_attributes.jsonrzutf-8)encodingtags
attributes)bleachr}   APPclean_attributesdictrt   configPROJECT_DIRload	sanitizerALLOWED_TAGSALLOWED_ATTRIBUTESrZ   r_   copyrS   )r   r}   filedatadefault_tagsdefault_attrskeyrP   s           r%   r   z'CmfGlobalSettings.html_clean_attributes   s    	 	(''#vvV'HHH#X_``` 	#dh99T??D	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# '4(; (,CtF|0K,L,L'M'MV$-:-?-?-A-A\*|,2244 	@ 	@JCc*<888:>s3CWXdCefiCjmrCr?s?s:t:t$\2377:?$\2377##s   A::A>A>c                     t                               d|             t          dd          5 }|                    t                              |           dz              d d d            d S # 1 swxY w Y   d S )NzSTATS: z/tmp/send_front_stats.logrj   r|   )rN   rV   rt   writer}   dumps)r   r#   r$   fs       r%   r   z"CmfGlobalSettings.send_front_stats   s    	 $  !!!-t44 	-GGDJJt$$t+,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   1A,,A03A0)__name__
__module____qualname____doc__	api_allowr   r   api_methodsclassmethodr   r   r   r   r1   r/   staticmethodstrry   r   r   r   r   r   __classcell__)r3   s   @r%   r   r      s         I%7C G
 G
 G
 
K4   [
   [   [ O O [O- - - - -F* F* F*P *. 
 
 
c 
 
 
 \
 
( 
( \
( rs r r r \r $4 $ $ $ \$@ - - \- - - - -r&   r   N)rM   
cmf.fieldsr   r   r    r&   r%   <module>r      se        * * * * * *G- G- G- G- G-+= G- G- G- G- G-r&   