U
    Af                     @   s*   d dl T d dlZG dd dejjjZdS )    )*Nc                       sR   e Zd Zdd Zdd Z fddZ fddZd	d
 fdd
Zdd Z  Z	S )CmfCustFieldc                 C   s  | j jsdS | js"tddd dS | j dkrHd| _d| _d| _d| _n| j d	krnd| _d| _d| _d| _nZ| j d
krd| _| j| _n>| j dkrd| _| j| _n"| j dkrd| _| j| _n| j dkrd| _| j| _n| j dkrd| _| j| _n| j dkrd| _| j| _n| j dkr6d| _| j| _n| j dkrTd| _| j| _nt| j dkrrd| _| j| _nV| j dkrd| _| j| _n8| j dkrd| _d| _d| _d| _n| j d krd!| _| j| _n| j d"krd#| _| j| _n| j d$krd%| _| j| _d&g| _n| j d'kr8d%| _| j| _d(g| _n| j d)kr\d*| _| j| _d(g| _nl| j d+krd*| _| j| _d,g| _nH| j d-krd*| _| j| _d.g| _n$| j d/krd0| _| j| _d1d2i| _	dS )3u-   DEPRECATED не копировать
        Nu-   Нелья менять шаблон поляTabortZchoice_cascade_multiZCmfM2MZCUSTOM_CHOICE_MODELZCmfCascadeChoiceZchoice_multitextZCmfTextstrCmfStrintZCmfIntfloatZ
CmfNumericZphoneZCmfPhoneZloginZCmfLoginZemailZCmfEmailurlZCmfUrlZ
choice_strZ	CmfChoiceZ
choice_intZCmfChoiceIntZtagsZCmfMarkdateZCmfDateZdatetimeZCmfDateTimeZcompanyZCmfGenericRelationZ
CmfCompanyuserZ	CmfPersonZusersZCmfGenericM2MZrolesZCmfRolegroupsZCmfPersonGroupZcheckboxZCmfBoolvalueF)
Zfield_custom_type
is_changedis_new	cmf_alert
field_typeleftmodelwidgetmodelsdefault)self r   ./cmf/models/cmf_cust_field.py_calc_custom_field_type   s    
















z$CmfCustField._calc_custom_field_typec                 C   sJ   | j jsd S | j r>ttj| jj }t|tjjs>t	ddd t	d d S )Nuo   Индексация доступна лишь для полей строкого/текстового типаTr   uz   Применится только для новых объектов или при полной переиндекации)
fullsearch_indexr   varscmffieldsr   r   
issubclassr   r   )r   Z	field_clsr   r   r   _calc_fullsearch_indexZ   s    z#CmfCustField._calc_fullsearch_indexc                    s   | j s.| jjrtddd | jjr.tddd |   |   | jdsVtddd | jst	ddd	d
dddddddg}t	| j
dd}||@ rd| _| jrt| jjtrd| jkrtd| j ddd d S t j||}| jrtt| jj   |S )NuY   Нельзя менять системное имя поля, создайте новоеTr   uF   Нельзя менять тип поля, создайте новоеZcf_uY   Системное имя должно обязательно начинаться с cf_captionr   placeholdernamer   commentr   visiblereadonlychoicesrequired)r   r   ua   Не правильный формат хранения значения по умолчанию u6   , используйте пример dict(value=None))r   r%   r   r   r   r   r"   
startswithZdirtysetkeysr   
isinstancer   dictsupersaver   r   Zcmf_model_nameZcustom_field_sync)r   argskwargsZcritical_fieldsZchanged_fieldsres	__class__r   r   r1   f   s8         zCmfCustField.savec                    s   |    t j||}|S )N)r   r0   _save_import)r   r2   r3   r4   r5   r   r   r7   ~   s    zCmfCustField._save_importF)TEXKOM_db_deletec                   sn   t jj| |dD ]}|j|d|i| qt jj| |dD ]}|j|d|i| q:t j|d|i| d S )N)Z
cust_fieldZinclude_deletedr8   )r   ZCmfUiFormFieldlistdeleteZCmfCustFieldConfFieldr0   )r   r8   r2   r3   Zui_fieldZ
conf_fieldr5   r   r   r:      s
    zCmfCustField.deletec                 C   s
  t | jjd}| jj|d< | jj|d< |d drL| jrDd|d< nd|d< | jr^| jj|d< | jrp| jj|d	< | j	d
 |d< | j
j|d< | jj|d< | j|d< | jjs| jj|d< | jjs| jj|d< | jjs| jj|d< | jjs| jj|d< | jjs| jj|d< |S )N)
class_namer#   r   ZM2MTrightr   r$   r&   r   r   r'   r(   r   r*   r   r   r)   r   )r/   r%   r   r#   r   endswithr<   r$   r&   r   r'   Zfield_readonlyr   r*   Zis_nullr   r   r)   r   )r   resultr   r   r   get_meta   s4    


zCmfCustField.get_meta)
__name__
__module____qualname__r   r"   r1   r7   r:   r?   __classcell__r   r   r5   r   r      s   Tr   )Zcmf.includeZcmf.fields.cmf_cust_fieldr   r    Zcmf_cust_fieldr   r   r   r   r   <module>   s   