
    *`mh&4                     j    d dl T d dlZ G d d          Z G d dej        j        j                  ZdS )    )*Nc                       e Zd ZdZdS )
_NamespacezNamespace classN)__name__
__module____qualname____doc__     ./cmf/models/cmf_cust_field.pyr   r      s        r   r   c                   r     e Zd Zd Zd Zedd            Zd Z fdZ fdZ	 fdZ
d	d
 fd
Zd Z xZS )CmfCustFieldc                    | j         j        sdS | j        st          dd           dS | j         dk    rd| _        d| _        d| _        d| _        dS | j         d	k    rd| _        d| _        d| _        d| _        dS | j         d
k    rd| _        | j        | _        dS | j         dk    rd| _        | j        | _        dS | j         dk    rd| _        | j        | _        dS | j         dk    rd| _        | j        | _        dS | j         dk    rd| _        | j        | _        dS | j         dk    rd| _        | j        | _        dS | j         dk    rd| _        | j        | _        dS | j         dk    rd| _        | j        | _        dS | j         dk    rd| _        | j        | _        dS | j         dk    rd| _        | j        | _        dS | j         dk    rd| _        d| _        d| _        d| _        dS | j         d k    rd!| _        | j        | _        dS | j         d"k    rd#| _        | j        | _        dS | j         d$k    rd%| _        | j        | _        d&g| _        dS | j         d'k    rd%| _        | j        | _        d(g| _        dS | j         d)k    rd*| _        | j        | _        d(g| _        dS | j         d+k    rd*| _        | j        | _        d,g| _        dS | j         d-k    rd*| _        | j        | _        d.g| _        dS | j         d/k    rd0| _        | j        | _        d1d2i| _	        dS | j         d3k    rd%| _        | j        | _        d4g| _        dS | j         d5k    rd*| _        | j        | _        d4g| _        dS dS )6u-   DEPRECATED не копировать
        Nu-   Нелья менять шаблон поляTabortchoice_cascade_multiCmfM2MCUSTOM_CHOICE_MODELCmfCascadeChoicechoice_multitextCmfTextstrCmfStrintCmfIntfloat
CmfNumericphoneCmfPhoneloginCmfLoginemailCmfEmailurlCmfUrl
choice_str	CmfChoice
choice_intCmfChoiceInttagsCmfMarkdateCmfDatedatetimeCmfDateTimecompanyCmfGenericRelation
CmfCompanyuser	CmfPersonusersCmfGenericM2MrolesCmfRolegroupsCmfPersonGroupcheckboxCmfBoolvalueFassetCmfAssetassets)
field_custom_type
is_changedis_new	cmf_alert
field_typeleftmodelwidgetmodelsdefaultselfs    r   _calc_custom_field_typez$CmfCustField._calc_custom_field_type
   s    %0 	F{ 	FdSSSSF!%;;;&DODI.DJ,DKKK#~55&DODI.DJ"DKKK#v--'DO/DKKK#u,,&DO/DKKK#u,,&DO/DKKK#w..*DO/DKKK#w..(DO/DKKK#w..(DO/DKKK#w..(DO/DKKK#u,,&DO/DKKK#|33)DO/DKKK#|33,DO/DKKK#v--&DO#DKDI.DJJJ#v--'DO/DKKK#z11+DO/DKKK#y002DO/DK'.DKKK#v--2DO/DK&-DKKK#w..-DO/DK&-DKKK#w..-DO/DK$+DKKK#x//-DO/DK+,DKKK#z11'DO/DK#U+DLLL#w..2DO/DK%,DKKK#x//-DO/DK%,DKKK 0/r   c                     | j         j        sd S | j         rYt          t          j                  | j        j                 }t          |t          j        j                  st          dd           t          d           d S )Nuo   Индексация доступна лишь для полей строкого/текстового типаTr   uz   Применится только для новых объектов или при полной переиндекации)
fullsearch_indexrC   varscmffieldsrF   r>   
issubclassr   rE   )rM   	field_clss     r   _calc_fullsearch_indexz#CmfCustField._calc_fullsearch_indexf   s    $/ 	F  	YSZ(()>?Ii):;; Y  L  TX  Y  Y  Y  Y 	  O  	P  	P  	P  	P  	Pr   Nc                   
 |st          | t          j                  r| }| j        j        sd S d | _        | j        r#| j        j                                        | _        | j        rd
fd	
	 t          	                    | j        j                  }n4# t          j
        $ r"}t          d| j         d| d            d }~ww xY w|r%|st          dd           |                    g d           	 t           
|                    }|r|| _        t                      }|D ]}t          ||d            t!          |          }d }|j        d	v r?d
}|j        D ]4}	|t$                              |	                              ||          z  }5nt          d| j         dd           t          d| d           d S # t,          $ r}t          d|            Y d }~d S d }~ww xY wd S d S )Nc                 ,   |t                      }t          | t                    r| D ]} ||           nZt          | t                    rE|                     d          r0|                     d          }|                    |d                    |S )N)
fields_setz__SELF..   )set
isinstancelistr   
startswithsplitadd)bqlrY   ipartsrecursive_params_searchs       r   re   zBCmfCustField.check_filter_options.<locals>.recursive_params_search   s    %!$Jc4(( -  J J//jIIIIIJS)) -cnnY.G.G -IIcNNENN58,,,!!r   u:   Не корректное значение фильтра z: Tr   uH   Данное поле не поддерживает фильтрацию)rF   rJ   rB   )SELF)r2   r7   r   )filterfilter_contextu   Тип поля u3    не поддерживает фильтрациюuK   Фильтр корректный. Результат фильтрации u    записейu-   Ошибка проверки фильтра N)r]   rJ   r   options_list_bqlrC   options_list_paramsr>   stripjsonloadsJSONDecodeErrorrE   load_fieldsr^   r   setattrdictrF   cmfutilget_model_by_namecountrB   CmfOrmError)conf_objcust_field_objrj   erk   
obj_fieldsctx_field_namerh   	obj_countrH   re   s             @r   check_filter_optionsz!CmfCustField.check_filter_optionsr   s     	&*Xv7J"K"K 	&%N(3 	F'+$ $ 	P(0(A(G(M(M(O(OH%$ 0	S
" 
" 
" 
" 
" 
"#'::h.G.M#N#N  '   wW_Wpwwtuww  @D  E  E  E  E   S% wiquvvvv**+X+X+XYYYS*./F/FGW/X/X*Y*Y'* K7J4 ",J*= B B
NDAAAA%)z%:%:%:N $I%04[[[$%	%3%: X XE%)B)B5)I)I)O)O'7 *P *X *X XIIX "  #EX5O  #E  #E  #E  MQ  R  R  R  R  Glu  G  G  G  H  H  H  H  H" S S S QaQQRRRRRRRRRS[0	S 0	S$S Ss1   .$B C"B??C5CG 
G*G%%G*c                 0    |                      |            d S ri   )r}   rL   s    r   _calc_filter_optionsz!CmfCustField._calc_filter_options   s    !!$'''''r   c                 R    g d}t                                                      |z   S )N)dirtyrK   cmf_model_name)supersave_preload_fields)rM   rS   	__class__s     r   r   z CmfCustField.save_preload_fields   s)    777ww**,,v55r   c                    | j         s:| j        j        rt          dd           | j        j        rt          dd           |                                  |                                  |                                  | j                            d          st          dd           | j	        s3h d}t          |                     d                    }||z  rd| _	        | j        rDt          | j        j        t                    r	d	| j        vrt          d
| j         dd           d S  t!                      j        |i |}| j	        r6t%          t&                    | j        j                                                  |S )NuY   Нельзя менять системное имя поля, создайте новоеTr   uF   Нельзя менять тип поля, создайте новоеcf_uY   Системное имя должно обязательно начинаться с cf_>   namecaptionchoicescommentrK   visiblereadonlyrequiredrF   placeholderdisabled_choicesrP   rk   options_list_show_columnsoptions_list_search_columns)rC   r>   ua   Не правильный формат хранения значения по умолчанию u6   , используйте пример dict(value=None))rD   r   rC   rE   rF   rN   rV   r   r_   r   r\   keysrK   r]   r>   rr   r   saverQ   rJ   r   custom_field_sync)rM   argskwargscritical_fieldschanged_fieldsresr   s         r   r   zCmfCustField.save   s   { 	py# Cu  ~B  C  C  C  C) pbjnoooo$$&&&##%%%!!###y##E** 	qy}~~~~z 	"c c cO !d!;!;<<N/ "!
< 	DL,>!E!E 	X\XdIdId  z~  {G        GK  L  L  L  LFegglD+F++: 	HLL,23EEGGG
r   c                 b    |                                    t                      j        |i |}|S ri   )rN   r   _save_import)rM   r   r   r   r   s       r   r   zCmfCustField._save_import   s5    $$&&&"egg"D3F33
r   F)TEXKOM_db_deletec                   t           j                            | |          D ]} |j        |d|i| t           j                            | |          D ]} |j        |d|i| d| _         t                      j        |d|i| t          t                     | j        j	                 
                                 d S )N)
cust_fieldinclude_deletedr   T)rJ   CmfUiFormFieldr^   deleteCmfCustFieldConfFieldr   r   rQ   r   r>   r   )rM   r   r   r   ui_field
conf_fieldr   s         r   r   zCmfCustField.delete   s    -22dTd2ee 	P 	PHHOTO4DOOOOO 6;;t]m;nn 	R 	RJJtQ6FQ&QQQQ
J/?J6JJJVT(./AACCCCCr   c                 ~   t          | j        j                  }| j        j        |d<   | j        j        |d<   |d                             d          r| j        rd|d<   nd|d<   | j        r| j        j        |d<   | j        r| 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<   | 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   rF   M2MTrightrG   r   r   r>   rK   r   r   rP   r   rJ   rH   r   r   rk   r   r   rI   )rr   r   r>   r   rF   endswithr   r   r   rK   r   field_readonlyrP   r   is_nullrJ   rH   r   r   rk   r   r   rI   )rM   results     r   get_metazCmfCustField.get_meta   s   111 L.y#4|,((// 	&z &"&w!%v 	;$($4$:F=!< 	3 $ 2F9 L1y L.y!06z%)%:!"}$ 	5!%!4F:{" 	1#{0F8z! 	/"j.F7O|# 	3 $ 2F9$, 	E)-)>)DF%&'/ 	K,0,D,JF()-5 	W262P2VF.//7 	[484T4ZF01{" 	1#{0F8r   ri   )r   r   r   rN   rV   staticmethodr}   r   r   r   r   r   r   __classcell__)r   s   @r   r   r   	   s       Z' Z' Z'x
P 
P 
P DS DS DS \DSL( ( (6 6 6 6 6    6    
 .3 D D D D D D D% % % % % % %r   r   )cmf.includecmf.fields.cmf_cust_fieldrR   r   rS   cmf_cust_fieldr   r
   r   r   <module>r      s                      E E E E E3:,9 E E E E Er   