U
    Ef                     @   s6   d dl T d dlZd dlmZ G dd dejjjZdS )    )*N)copyc                   @   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dg}dd|gddd|ggdddggdd	d|ggd	ddggg}	d}
t jj|	|d
gdD ]}|jrr||jkr^|}
 q|q^|
rZ|
jjD ]}tt jj|j	j
 j||j	j
< |jdd}||j	j
 D ]P}|dkr|d dk	r|d ||j	j
 d< q||dk	r|| ||j	j
 |< q|d dkr8|d ||j	j
 d< |d dk	r|d ||j	j
 d< qd}|
r|
jr|
jjj
|
jjj
|
jj	j
d}||fS )u   
        Для совместимости со старым функционалом генерирует json настройки полей
        Zlogic_typesz$cust_field_conf.cust_field_configs.*parent_logic_prefixparentz==ORINNZ
activitiesz-orderno)filterfieldsZorder_bydict)typereadonlyZfield_readonlydefaultZ_NONE_required)idcodename)ZmodelsZCmfCustFieldConfSchemeRulelistr   r   Zcust_field_configsr   ZCmfTaskr   r   r   Zui_metadumpsgetr   r   )cls	scheme_idZ
logic_typeZactivityZproject_logic_prefixargskwargsresult_fieldsZ_filterr   rowr   Zcust_field_dictkeyZcust_field_configr	   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)r   r   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_changeC   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   r   Zcmf_cust_field_conf_schemer   r	   r	   r	   r
   <module>   s   