U
    f	                     @   s*   d dl T d dlZG dd dejjjZdS )    )*Nc                   @   s>   e Zd Zdd Zedd Zdd Zeeddd	d
 Z	dS )CmfCustFieldConfSchemec                 C   s(   |  dg | jD ]}|jj  qd S )Nz,cust_field_conf_scheme_rules.cust_field_conf)Zload_fieldsZcust_field_conf_scheme_rulescust_field_confvalueZsave)selfrule r   *./cmf/models/cmf_cust_field_conf_scheme.py
cache_hook   s    
z!CmfCustFieldConfScheme.cache_hookc                 O   s  i }ddg}dd|gddd|ggdddggg}t jj||d}|r|jjD ]}	t jj|	jj j	||	jj< |	j
d	d
}
||	jj D ]z}|dkr|
d dk	r|
d ||	jj d< q|dkr|
d dkr|
d ||	jj d< q|
|dk	r|
| ||	jj |< qqJ|S )u   
        Для совместимости со старым функционалом генерирует json настройки полей
        Zlogic_typesz$cust_field_conf.cust_field_configs.*parentz==ORINN)filterfieldsdict)typereadonlyZfield_readonlydefaultZ_NONE_)ZmodelsZCmfCustFieldConfSchemeRulegetr   Zcust_field_configsZCmfTaskr   namer   Zui_metadumps)cls	scheme_idZ
logic_typeargskwargsresult_fieldsZ_filterr   r   Zcust_field_dictkeyr   r   r	   ui_fields_json   s(    z%CmfCustFieldConfScheme.ui_fields_jsonc                 C   s   d| j ji}td| dS )uK   
        Сбрасываем кеш настройки полей
        r   CmfCustFieldConfScheme:changedN)idr   Zcmf_emit_server_event)r   datar   r   r	   invalidate_cache%   s    z'CmfCustFieldConfScheme.invalidate_cacher   )Zchannelc                 K   s&   t jD ]}| d |kr|| d = qd S )Nr   )ZAPPZcache_cust_field_config_scheme)r!   _kwargsZui_form_cacher   r   r	    on_cust_field_conf_scheme_change,   s    
z7CmfCustFieldConfScheme.on_cust_field_conf_scheme_changeN)
__name__
__module____qualname__r
   classmethodr   r"   staticmethodZon_server_eventr$   r   r   r   r	   r      s   
r   )Zcmf.includeZ%cmf.fields.cmf_cust_field_conf_schemeZcmfr   Zcmf_cust_field_conf_schemer   r   r   r   r	   <module>   s   