U
    Xs]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eeeddd	Z	eee
dd
dZ fddZ fddZd fdd	Zd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_change)r   returnc                 O   s4   i }t jj| dgdD ]}|jrddi||j< q|S )u   Список полей с точечными настройками

        Args:
            ui_form_id (str): ид экрана

        Returns:
            dict: Словарь настроенный полей

        r   parentfieldsrequired_changeT)modelsCmfUiFormFieldslistr   name)r   argskwargsresultui_form_fieldr   r   r   ui_fields_json   s
    zCmfUiForm.ui_fields_jsonc           
      O   s  t  }dddgdd| gdddgg}tjj|dgdD ]0}t |j|j|jg g g |j|j|j	d		||j< q4tj
j| dd
gdD ] }|jjrqz|jj|krt |jj|jj|jjg 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r^||jj d |j |jrz||jj d |j qzdd | D }	|	jdd d |	S )u   Группы и поля как должны отображаться на форме

        Args:
            ui_form_id (str): ид экрана

        Returns:
            list: Список групп на форме с полями
        action==Zclickr   hiddenFr   )filterr   )	r   r   r   r   hidden_fieldshide_empty_fieldsparamsordernotypezui_form_group.*r   linkzlink::r   r"   r#   c                 S   s   g | ]}|qS r   r   ).0ui_groupr   r   r   
<listcomp>Z   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)dictr   CmfUiFormGroupr   r   r   r   r$   r%   r&   r   ui_form_groupr    updateappendZ
hide_emptyvaluessort)
r   r   r   Z	ui_groupsZ_filterr2   r   r*   r'   resr   r   r   ui_group_fields&   sV    
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   r7   Zui_form	__class__r   r   r<   ^   s
    zCmfUiForm.savec                    s   t  j||S )N)r;   _save_import)r	   r   r   r@   r   r   rB   f   s    zCmfUiForm._save_importNc                    sV   |s*|sd| j  }t j|d|i|}tjj| dgdD ]}|j||j d q<|S )u   
        Копируем экран с настройкой полей

        Args:
            name (строка): имя нового экрана
        u   Копия r   r   r   )r   r   )r   r;   r?   r   r1   list)r	   r   r:   r   r   grpr@   r   r   r?   i   s    zCmfUiForm.copyF)TEXKOM_db_deletec                   sv   t jjdd| g|dD ]}|j|d|i| qt jjdd| g|dD ]}|j|d|i| qFt j|d|i|S )Nr   r   )r!   Zinclude_deletedrE   )r   r   rC   deleter1   r;   )r	   rE   r   r   Zfieldgroupr@   r   r   rF   x   s
    zCmfUiForm.delete)NN)__name__
__module____qualname__r   staticmethodZon_server_eventr   strr0   r   rC   r8   r<   rB   r?   rF   __classcell__r   r   r@   r   r      s   7r   )Zcmf.includeZcommon.fields.cmf_workflowcommonZmodules.settings.fieldsr   r   r   r   r   r   <module>   s   