U
    I(i&                     @   s6   d dl m Z  d dlT d dlmZ G dd dejZdS )    )copy)*)cmf_cust_field_conf_schemec                   @   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 )u-   DEPRECATED не копировать
        z,cust_field_conf_scheme_rules.cust_field_confN)Zload_fieldsZcust_field_conf_scheme_rulescust_field_confvalueZ
calc_cache)selfrule r
   -./common/models/cmf_cust_field_conf_scheme.py
cache_hook   s    
z!CmfCustFieldConfScheme.cache_hookc                    s   fdd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ddd	|ggddd
ggg}	t jj|	|dgd}
|
r|
jjD ]J t j jj| jj< | jj d
kr| jj= q jdd}| jj D ]T}|dkr|d d
k	r|d | jj d< q||d
k	r|| | jj |< q|d dkrV|d | jj d< |d d
k	rx|d | jj d< |d r|d | jj d< |
jj	j| jj d< d
| jj d<  j
r j
jj| jj d< qd
}|
r
|
jr
|
jj	j|
jjj|
jjjd}||fS )u   
        DEPRECATED не копировать
        Для совместимости со старым функционалом генерирует json настройки полей
        c                    sj   d }| d^}}| j|s6td jj  d S |rZtt| j| j	 d
|S t| j| jS )N.u(   Поля в задаче еще нет: )splitfieldsgetgdebugnamer   varsmodelsmodeljoinr   Zui_meta)r   Z
field_nameZ	sub_namesr   get_metar
   r   r      s     z7CmfCustFieldConfScheme.ui_fields_json.<locals>.get_metaZlogic_typesz$cust_field_conf.cust_field_configs.*z?cust_field_conf.cust_field_configs.cust_field.field_custom_typeparentz==ORINNZparent_logic_typesZ
activitiesz-orderno)filterr   Zorder_bydict)typereadonlyZfield_readonlydefaultZ_NONE_requiredZdisabled_choicesZcust_field_conf_idfield_custom_type)idcoder   )r   ZCmfCustFieldConfSchemeRuler   r   Zcust_field_configsZCmfTaskr   r   dumpsr$   Z
cust_fieldr#   r%   )cls	scheme_idZ
logic_typeZactivityZproject_logic_typeargskwargsresult_fieldsZ_filterr	   Zcust_field_dictkeyZcust_field_configr
   r   r   ui_fields_json   sN    



z%CmfCustFieldConfScheme.ui_fields_jsonc                 C   s   d| j ji}td| dS )ux   
        DEPRECATED не копировать
        Сбрасываем кеш настройки полей
        r(   CmfCustFieldConfScheme:changedN)r$   r   Zcmf_emit_server_event)r   datar
   r
   r   invalidate_cacheQ   s    z'CmfCustFieldConfScheme.invalidate_cacher/   )Zchannelc                 K   s.   t j D ]\}}| d |kr
|| d = q
dS )ue   DEPRECATED не копировать

        Args:
            data (_type_): _description_
        r(   N)ZAPPZcache_cust_field_config_schemeitems)r0   _kwargs_Zui_form_cacher
   r
   r    on_cust_field_conf_scheme_changeY   s    z7CmfCustFieldConfScheme.on_cust_field_conf_scheme_changeN)
__name__
__module____qualname__r   classmethodr.   r1   staticmethodZon_server_eventr5   r
   r
   r
   r   r      s   
Ar   N)r   Zcmf.includeZcommon.fieldsr   r   r
   r
   r
   r   <module>   s   