U
    Gf:                     @   s2   d dl T d dlZd dlmZ G dd dejZdS )    )*N)cmf_ui_formc                       s\   e Zd Zdd Zeedddd Zdd Z fd	d
Z fddZ	d fdd	Z
  ZS )	CmfUiFormc                 C   s   d| j ji}td| dS )uK   
        Сбрасываем кеш настройки полей
        
ui_form_idCmfUiForm:changedN)idvalueZcmf_emit_server_event)selfdata r   (./modules/settings/models/cmf_ui_form.pyinvalidate_cache   s    zCmfUiForm.invalidate_cacher   )Zchannelc                 K   s   | d t jkrt j| d = d S )Nr   )ZAPPZcache_cust_field_config_scheme)r
   _kwargsr   r   r   on_ui_form_change   s    zCmfUiForm.on_ui_form_changec           
      O   s~  t  }dddgdd| gdddgg}tjj|dgdD ].}t |j|j|jg g |j|j|j	d	||j< q4tj
j| dd
gdD ]}|jjrqx|jj|krt |jj|jj|jjg g |jj|jj|jj	d	}|||jj< |jjr||jj |j	dkr d|jd  d|j }||jj d | n||jj d |j |jrx||jj d |j qxdd | D }	|	jdd d |	S )Nactionz==ZclickparenthiddenFr   )filterfields)r   r   namer   hidden_fieldsparamsordernotypezui_form_group.*r   r   linkzlink::r   r   c                 S   s   g | ]}|qS r   r   ).0ui_groupr   r   r   
<listcomp><   s     z-CmfUiForm.ui_group_fields.<locals>.<listcomp>c                 S   s   | d S )Nr   r   )xr   r   r   <lambda>=       z+CmfUiForm.ui_group_fields.<locals>.<lambda>)key)dictmodelsCmfUiFormGroupZslistr   r   r   r   r   r   ZCmfUiFormFieldui_form_groupr   updateappendvaluessort)
r	   argskwargsZ	ui_groupsZ_filterr'   Zui_form_fieldr   r   resr   r   r   ui_group_fields   sN    

zCmfUiForm.ui_group_fieldsc                    s8   t  j||}| jr4| js4tjjdd}|j| d |S )Nzui_form.task:default)code)obj_copy)supersaveZis_newsystemr%   r   getcopy)r	   r,   r-   r.   Zui_form	__class__r   r   r3   @   s
    zCmfUiForm.savec                    s   t  j||S )N)r2   _save_import)r	   r,   r-   r7   r   r   r9   H   s    zCmfUiForm._save_importNc                    sR   |s*|sd| j  }t j|d|i|}tjj| dgdD ]}|j|d q<|S )u   
        Копируем экран с настройкой полей

        Args:
            name (строка): имя нового экрана
        u   Копия r   r   r   )r   )r   r2   r6   r%   r&   list)r	   r   r1   r,   r-   grpr7   r   r   r6   K   s    zCmfUiForm.copy)NN)__name__
__module____qualname__r   staticmethodZon_server_eventr   r/   r3   r9   r6   __classcell__r   r   r7   r   r      s   +r   )Zcmf.includeZcommon.fields.cmf_workflowcommonZmodules.settings.fieldsr   r   r   r   r   r   <module>   s   