
    *.+h                         d dl mZmZmZ d dlmZ d dlmZmZm	Z	 d dl
T d dlmZ d dlmZ d Z G d d	ej                  Zd
S )    )Listget_args
get_origin)make_dataclass)EnvironmentChainableUndefinedmeta)*)cmfutil)cmf_email_templatec                     | | ndS )Nu   Не установлено )objs    2./modules/servicedesk/models/cmf_email_template.pynone_finalizerr      s    /33'DD    c                        e Zd Z eee          Z fdZ fdZe	d             Z
e	d             Ze	d             Ze	d             Z	 g dZ xZS )	CmfEmailTemplate)	undefinedfinalizec                     | j         s| j        r| j        rt          dd            t	                      j        |i |S )NuC   Запрещено изменять системный шаблонTabort)is_new
is_changedsystem	cmf_alertsupersave)selfargskwargs	__class__s      r   r   zCmfEmailTemplate.save   sR    { 	it 	i4; 	i[cghhhhuww|T,V,,,r   c                 R   | j                                          t          j                            | dg          }|r9t          d |D                       }d}|D ]
}|d| z  }t          |d           | j         rt          dd            t                      j        |i |S )	Nparent)email_templatefieldsc                 &    g | ]}|j         j        S r   )r%   name).0as     r   
<listcomp>z+CmfEmailTemplate.delete.<locals>.<listcomp>   s    888Q18=888r   ut   Удаление невозможно. Шаблон используется в схемах уведомлений:
Tr   uA   Запрещено удалять системный шаблон)	r   loadmodelsCmfProjectNotifySchemeRulelistsetr   r   delete)r    r!   r"   rulesschemes	alert_strschemer#   s          r   r3   zCmfEmailTemplate.delete   s    166dT\S]6^^ 	-88%88899G PI! + +]&]]*		it,,,,; 	hZbfgggguww~t.v...r   c                    d }t          d           }i }| j        ddgz   }	|	D ]^}
t          ||
          rLt          ||
         d          rt          ||
         j                  ||
<   Ft          ||
                   ||
<   _t          t
          j        j                  |d<   t          |d          r |j        rt          |j        j                  nt                      |d<   | |j         |d	<    |||          |d
<   t          |d          r |j	        rt          |j	        j                  nt                      |d<   t          |d          r |j
        rt          |j
        j                  nt                      |d<   t          |d          r |j        rt          |j        j                  nt                      |d<   ||d<   ||d<   ||d<   ||d<   |S )z	
        c                 h    | j         r| d| j         j         d| j         j         S t                      S )Nz/servicedesk//)r%   ui_namecodestr)r   urls     r   
portal_urlz9CmfEmailTemplate.prepare_template_ctx.<locals>.portal_url-   s:    z RRCJ,>RRRRRuur   T)full_url	cmf_ownerr%   r)   current_userresponsibleobj_urlr?   statusclient_status
cmf_authorauthorprojectproject_namemsg	msg_titler   notify)app_base_href_template_fieldshasattrr=   r)   grB   rA   hrefrE   rG   rI   )clsr   rM   rK   msg_type_textr"   r?   r>   ctxr'   fields              r   prepare_template_ctxz%CmfEmailTemplate.prepare_template_ctx)   s   	 	 	 ---/%h(?? 	1 	1EsE"" 13u:v.. 1!$SZ_!5!5CJJ!$SZCJ!!."566N8?[8Q8QnVYVcnS!3444ilininM+++I&JsC00L7>sH7M7MgRUR\gs3:?333bebgbgO4;C4N4NlSVSalCN/000gjglglH7>sI7N7NiSVS^ic#+"2333dgdidiNE
(KE
H
r   c                 .   |                                 D ]\  }}|                                }|                    |           t          |          s+|                    d                    |                      d S |                     |||           d S )N.)itemscopyappendlenjoinbuild_fields)rS   varspathrescurrentchildren	path_copys          r   r_   zCmfEmailTemplate.build_fieldsM   s    !% 	7 	7GX		IW%%%x== 

388I..///Xy#6666	7 	7r   c                    |d S | j                             |          }|                     |          }	g }
|                     |	                    di           g |
           |                    |
| j        z              t          j                    5  | j         	                    |          } | j
        ||||fi |} |j        di |cd d d            S # 1 swxY w Y   d S )Nr   )r'   r   )
_jinja_envparsecollect_varsr_   getload_fieldsrO   r   allow_lazyloadfrom_stringrW   render)rS   r   rM   rK   rT   templatecssr"   parsed_datanested_vars
obj_fieldstemplate_ctxs               r   render_templatez CmfEmailTemplate.render_templateY   s:   Fn**844&&{33
33RDDDzC,@@AAA#%% 	3 	3~11(;;H333Cm^^W]^^L"8?22\22	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   8CCCc                   
 fd
fd
i }t          |t          j        j                  r|                     |j                  } 
|          }|j        D ]Z}|                     |          }|j        j        |v r) ||	                    |j        j                              ||           [ ||           nt          |t          j        j
                  r|}g }t          |t          j        j
                  r@|                    |j                   |j        }t          |t          j        j
                  @|}i ||j        <   ||j                 }|d d d         D ]}	i ||	<   ||	         }nt          |t          j        j                  r9|                                D ]#}|                     |          } ||           $ntt          |t          j        j                  ri ||j        <   nJt          |t          j        j                  r+|j        D ]#}|                     |          } ||           $|S )Nc                     |                                 D ]C\  }}t          |t                    r$ |                     |i           |          | |<   >|| |<   D| S N)rZ   
isinstancedictrj   )targetdatakv_updates       r   r   z.CmfEmailTemplate.collect_vars.<locals>._updatel   se    

 " "1a&& " '

1b(9(91 = =F1II !F1IIMr   c                     |                                  D ]*\  }}t          |          s|c S  | |                   c S d S rx   )rZ   r]   )varcurchild_get_last_attrs      r   r   z5CmfEmailTemplate.collect_vars.<locals>._get_last_attrt   sY    !iikk 0 0
U5zz ! LLL%~c#h/////0 0r   )ry   r	   nodesForri   iterbodyr{   r)   popGetattrr\   attrnodeOutputiter_child_nodesNameTemplate)rS   ast_noderb   iter_varr   r   rr   	attr_nodeattrsr   r   r   s             @@r   ri   zCmfEmailTemplate.collect_varsj   s   	 	 	 	 		0 	0 	0 	0 	0 h
// '	*''66H .**C! / /!..u55?';66GC1E!F!FGGG+....GC""""$*"455 	* IEY
(:;; +Y^,,,%N	 Y
(:;; + C"$C	in%Cddd    D	$i  $*"344 	*!2244 * *!..u55[))))* $*/22 	*!#C$*"566 	*! * *!..u55[))))
r   )rB   rC   textr<   rH   r)   r?   rE   task_urlrD   rJ   rL   rK   )__name__
__module____qualname__r   r   r   rg   r   r3   classmethodrW   r_   ru   ri   rO   __classcell__)r#   s   @r   r   r      s        '9NSSSJ- - - - -/ / / / /" ! ! [!F 	7 	7 [	7 3 3 [3  : : [:x& l  l  lr   r   N)typingr   r   r   dataclassesr   jinja2r   r   r	   cmf.includecmf.utilr   modules.servicedesk.fieldsr   r   r   r   r   r   <module>r      s    - - - - - - - - - - & & & & & & 8 8 8 8 8 8 8 8 8 8           9 9 9 9 9 9E E Ekl kl kl kl kl): kl kl kl kl klr   