
    G%i                         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
 d dlmZ d dlmZ d Z G d d	ej                         Zy
)    )Listget_args
get_origin)make_dataclass)EnvironmentChainableUndefinedmeta)*)cmfutil)cmf_email_templatec                     | | S dS )Nu   Не установлено )objs    2./modules/servicedesk/models/cmf_email_template.pynone_finalizerr      s    /3D'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	        |   |i |S )NuC   Запрещено изменять системный шаблонTabort)is_new
is_changedsystem	cmf_alertsupersave)selfargskwargs	__class__s      r   r   zCmfEmailTemplate.save   s6    {{t4;;[cghw|T,V,,r   c                 p   | j                   j                          t        j                  j	                  | dg      }|rKt        |D cg c]  }|j                  j                   c}      }d}|D ]
  }|d| z  } t        |d       | j                   rt        dd       t        | (  |i |S c c}w )Nparent)email_templatefieldsut   Удаление невозможно. Шаблон используется в схемах уведомлений:
Tr   uA   Запрещено удалять системный шаблон)r   loadmodelsCmfProjectNotifySchemeRulelistsetr%   namer   r   delete)	r    r!   r"   rulesaschemes	alert_strschemer#   s	           r   r/   zCmfEmailTemplate.delete   s    1166dT\S]6^%8Q188==89G OI! +r&]*	+ it,;;Ybfgw~t.v.. 9s   	B3c                    d }t        d       }i }| j                  ddgz   }	|	D ]K  }
t        ||
      st        ||
   d      rt        ||
   j                        ||
<   ;t        ||
         ||
<   M 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                     | j                   r2| 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;    zzmCJJ,>,>+?q@QRRu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.   gr?   r>   hrefrB   rD   rF   )clsr   rJ   rH   msg_type_textr"   r<   r;   ctxr'   fields              r   prepare_template_ctxz%CmfEmailTemplate.prepare_template_ctx*   s   	 -.%%h(?? 	1EsE"3u:v.!$SZ__!5CJ!$SZCJ	1 "!.."5"56N8?[8QVYVcVcS!3!34ilinM5
+I&sC0L7>sH7MRUR\R\s3::??3bebgO4;C4NSVSaSaCNN//0gjglH7>sI7NSVS^S^c#++"2"23dgdiNE
(KE
H
r   c                     |j                         D ]f  \  }}|j                         }|j                  |       t        |      s"|j                  dj	                  |              y | j                  |||       h y )N.)itemscopyappendlenjoinbuild_fields)rP   varspathrescurrentchildren	path_copys          r   r\   zCmfEmailTemplate.build_fieldsN   sf    !% 	7GX		IW%x=

388I./Xy#6	7r   c                    |y | j                   j                  |      }| j                  |      }	g }
| j                  |	j	                  di       g |
       |j                  |
| j                  z          t        j                         5  | j                   j                  |      } | j                  ||||fi |} |j                  di |cd d d        S # 1 sw Y   y xY w)Nr   )r'   r   )
_jinja_envparsecollect_varsr\   getload_fieldsrL   r   allow_lazyloadfrom_stringrT   render)rP   r   rJ   rH   rQ   templatecssr"   parsed_datanested_vars
obj_fieldstemplate_ctxs               r   render_templatez CmfEmailTemplate.render_templateZ   s    nn**84&&{3
3RDzC,@,@@A##% 	3~~11(;H3333Cm^W]^L"8??2\2	3 	3 	3s   ACCc                   
 fd
fd
i }t        |t        j                  j                        r| j	                  |j
                        } 
|      }|j                  D ]`  }| j	                  |      }|j                  j                  |v r, ||j                  |j                  j                                ||       b  ||       |S t        |t        j                  j                        r|}g }t        |t        j                  j                        rL|j                  |j                         |j                  }t        |t        j                  j                        rL|}i ||j                  <   ||j                     }|d d d   D ]  }	i ||	<   ||	   } |S t        |t        j                  j                        r1|j                         D ]  }| j	                  |      } ||        |S t        |t        j                  j                         ri ||j                  <   |S t        |t        j                  j"                        r+|j                  D ]  }| j	                  |      } ||        |S )Nc                     |j                         D ]7  \  }}t        |t              r | j                  |i       |      | |<   3|| |<   9 | S N)rW   
isinstancedictrg   )targetdatakv_updates       r   r|   z.CmfEmailTemplate.collect_vars.<locals>._updatem   sQ    

 "1a& '

1b(91 =F1I !F1I	"
 Mr   c                 l    | j                         D ]   \  }}t        |      s|c S  | |         c S  y ru   )rW   rZ   )varcurchild_get_last_attrs      r   r   z5CmfEmailTemplate.collect_vars.<locals>._get_last_attru   s7    !iik 0
U5z L%c#h//0r   )rv   r	   nodesForrf   iterbodyrx   r.   popGetattrrY   attrnodeOutputiter_child_nodesNameTemplate)rP   ast_noder_   iter_varr   r   ro   	attr_nodeattrsr   r   r|   s             @@r   rf   zCmfEmailTemplate.collect_varsk   s+   		0 h

/''6H *C! /!..u5??'';6C1E1E!FG+./ C"< 
9 $**"4"45 IEY

(:(:;Y^^,%NN	 Y

(:(:; C"$C	inn%Cdd  D	$i " 
 $**"3"34!224 *!..u5[)* 
 $**//2!#C 
 $**"5"56! *!..u5[)* 
r   )r?   r@   textr9   rE   r.   r<   rB   task_urlrA   rG   rI   rH   )__name__
__module____qualname__r   r   r   rd   r   r/   classmethodrT   r\   rr   rf   rL   __classcell__)r#   s   @r   r   r      sz    '9NSJ-/" ! !F 	7 	7 3 3  : :x& 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   9Ell):: llr   