
    Qa%i}4                     |    d dl  d dlZ G d d      Z G d dej                  j
                  j                        Zy)    )*Nc                       e Zd ZdZy)
_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d Z	 fdZ
 fdZd	d
 fd
Zd Z xZS )CmfCustFieldc                 0   | j                   j                  sy| j                  st        dd       y| j                   dk(  rd| _        d| _        d| _        d| _        y| j                   d	k(  rd| _        d| _        d| _        d| _        y| j                   d
k(  rd| _        | j                  | _        y| j                   dk(  rd| _        | j                  | _        y| j                   dk(  rd| _        | j                  | _        y| j                   dk(  rd| _        | j                  | _        y| j                   dk(  rd| _        | j                  | _        y| j                   dk(  rd| _        | j                  | _        y| j                   dk(  rd| _        | j                  | _        y| j                   dk(  rd| _        | j                  | _        y| j                   dk(  rd| _        | j                  | _        y| j                   dk(  rd| _        | j                  | _        y| j                   dk(  rd| _        d| _        d| _        d| _        y| j                   d k(  rd!| _        | j                  | _        y| j                   d"k(  rd#| _        | j                  | _        y| j                   d$k(  r!d%| _        | j                  | _        d&g| _        y| j                   d'k(  r!d%| _        | j                  | _        d(g| _        y| j                   d)k(  r!d*| _        | j                  | _        d(g| _        y| j                   d+k(  r!d*| _        | j                  | _        d,g| _        y| j                   d-k(  r!d*| _        | j                  | _        d.g| _        y| j                   d/k(  r"d0| _        | j                  | _        d1d2i| _	        y| j                   d3k(  r!d%| _        | j                  | _        d4g| _        y| j                   d5k(  r!d*| _        | j                  | _        d4g| _        yy)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0{{EdS!!%;;&DODI.DJ,DK##~5&DODI.DJ"DK##v-'DO//DK##u,&DO//DK##u,&DO//DK##w.*DO//DK##w.(DO//DK##w.(DO//DK##w.(DO//DK##u,&DO//DK##|3)DO//DK##|3,DO//DK##v-&DO#DKDI.DJ##v-'DO//DK##z1+DO//DK##y02DO//DK'.DK##v-2DO//DK&-DK##w.-DO//DK&-DK##w.-DO//DK$+DK##x/-DO//DK+,DK##z1'DO//DK#U+DL##w.2DO//DK%,DK##x/-DO//DK%,DK 0r   c                 "   | j                   j                  sy | j                   rat        t        j                        | j
                  j                     }t        |t        j                  j                        st        dd       t        d       y )Nuo   Индексация доступна лишь для полей строкого/текстового типаTr   uz   Применится только для новых объектов или при полной переиндекации)
fullsearch_indexrC   varscmffieldsrF   r>   
issubclassr   rE   )rM   	field_clss     r   _calc_fullsearch_indexz#CmfCustField._calc_fullsearch_indexf   su    $$//  SZZ()>)>?Ii):):;  L  TX  Y 	  O  	Pr   c                   
 |st        | t        j                        r| }| j                  j                  sy d | _        | j                  r)| j                  j                  j                         | _        | j                  rd
fd	
	 t        j                  | j                  j                        }|r|st        dd       |j                  g d       	 t         
|            }|r|| _        t               }|D ]  }t        ||d         t!        |      }d }|j"                  d	v r=d
}|j                  D ]+  }	|t$        j'                  |	      j)                  ||      z  }- nt        d| j*                   dd       t        d| d       y y y # t        j                  $ r#}t        d| j                   d| d        d }~ww xY w# t,        $ r}t        d|        Y d }~y d }~ww xY w)Nc                     |
t               }t        | t              r| D ]  } ||        |S t        | t              r6| j	                  d      r%| j                  d      }|j                  |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   sw    %!$Jc4(  J/jIJ
 "!  S)cnnY.GIIcNE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%    *Xv7J7J"K%N((33'+$ $$(0(A(A(G(G(M(M(OH%$$
"#'::h.G.G.M.M#N   % hquv**+XYS*./FGW/X*Y'*7J4 ",J*= B
NDAB%)z%:N $I%004[[$%	%3%:%: XE%)B)B5)I)O)O'7 *P *X XIX "$4X5O5O4P  QD  #E  MQ  R klukv  wF  G  H5  % % '' VW_WpWpVqqstusvw  @D  E< # S  MaSQRRSs1   )F B;G G	&GG		G-G((G-c                 &    | j                  |        y ri   )r}   rL   s    r   _calc_filter_optionsz!CmfCustField._calc_filter_options   s    !!$'r   c                 .    g d}t         |          |z   S )N)dirtyrK   cmf_model_namerF   )supersave_preload_fields)rM   rS   	__class__s     r   r   z CmfCustField.save_preload_fields   s    Dw*,v55r   c                     t        t        j                  | j                  j                        j
                  j                               dk\  rt        dd       y y )Ni@  u2   Превышен лимит в 1600 колонокTr   )lenrs   rt   r   r>   rS   keysrE   rL   s    r   _check_limitzCmfCustField._check_limit   sH    w(()<)<)B)BCJJOOQRTXXJRVW Yr   c                 >   | j                   sG| j                  j                  rt        dd       | j                  j                  rt        dd       n| j                          | j                          | j                          | j                          | j                  j                  d      st        dd       | j                  s+h d}t        | j                  d            }||z  rd| _
        | j                  rNt        | j                  j                  t               rd	| j                  vrt        d
| j                   dd       y t#        | H  |i |}| j                  r4t'        t(              | j*                  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   r   rN   rV   r   r_   r   r\   r   rK   r]   r>   rr   r   saverQ   rJ   r   custom_field_sync)rM   argskwargscritical_fieldschanged_fieldsresr   s         r   r   zCmfCustField.save   si   {{yy##u  ~B  C))bjno$$&##%!!#yy##E*qy}~zzcO !d!;<N/!
<<DLL,>,>!EX\XdXdIdyz~  {G  {G  zH  H~    GK  LglD+F+::L,,223EEG
r   c                 F    | j                          t        |   |i |}|S ri   )rN   r   _save_import)rM   r   r   r   r   s       r   r   zCmfCustField._save_import   s(    $$&g"D3F3
r   F)TEXKOM_db_deletec                   t         j                  j                  | |      D ]  } |j                  |d|i|  d| _        t        |   |d|i| t        t               | j                  j                     j                          y )N)
cust_fieldinclude_deletedr   T)
rJ   CmfCustFieldConfFieldr^   deleter   r   rQ   r   r>   r   )rM   r   r   r   
conf_fieldr   s        r   r   zCmfCustField.delete   s     66;;t]m;n 	RJJtQ6FQ&Q	R
J/?J6JVT((../AACr   c                    t        | j                  j                        }| j                  j                  |d<   | j                  j                  |d<   |d   j                  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   s1   1 LL..y#44|,((/zz"&w!%v$($4$4$:$:F=!<< $ 2 2F9 LL1y LL..y!0066z%)%:%:!"}}$$!%!4!4F:{{""#{{00F8zz!!"jj..F7O||## $ 2 2F9$$,,)-)>)>)D)DF%&''//,0,D,D,J,JF()--55262P2P2V2VF.///77484T4T4Z4ZF01{{""#{{00F8r   ri   )r   r   r   rN   rV   staticmethodr}   r   r   r   r   r   r   r   __classcell__)r   s   @r   r   r   	   sS    Z'x
P DS DSL(6X:
 .3 D%r   r   )cmf.includecmf.fields.cmf_cust_fieldrR   r   rS   cmf_cust_fieldr   r
   r   r   <module>r      s3       I3::,,99 Ir   