o
    oj                     @  s   d Z ddlmZ ddlZddlZddlmZ edZeddG dd	 d	Z	e	d
dddde	ddddddde	ddddde	dddddde	ddddde	dddddddZ
G d d! d!eZd)d'd(ZdS )*z)Strict, non-executable message templates.    )annotationsN)	dataclassz{{\s*([a-z][a-z0-9_]*)\s*}}T)frozenc                   @  sN   e Zd ZU ded< ded< ded< ded< ded< d	Zd
ed< d	Zd
ed< d	S )TemplateDefinitionstrkeychannelintversionztuple[str, ...]allowed_variablestextN
str | Nonesubject	html_body)__name__
__module____qualname____annotations__r   r    r   r   >/var/www/html/flask_server/apps/messaging_service/templates.pyr      s   
 r   security_login_code_smssms   )codeexpiry_minuteszcUSG verification code: {{ code }}. Expires in {{ expiry_minutes }} minutes. Do not share this code.security_login_code_emailemailzkYour verification code is {{ code }}.

It expires in {{ expiry_minutes }} minutes.

Do not share this code.zYour USG verification codez<p>Your verification code is <strong>{{ code }}</strong>.</p><p>It expires in {{ expiry_minutes }} minutes.</p><p>Do not share this code.</p>password_reset_smszeUSG password reset code: {{ code }}. Expires in {{ expiry_minutes }} minutes. Do not share this code.password_reset_emailzSYour password reset code is {{ code }}. It expires in {{ expiry_minutes }} minutes.zReset your USG passwordgeneric_system_alert_sms)alertzUSG alert: {{ alert }}generic_system_alert_emailz{{ alert }}zUSG system alert))r   r   )r   r   )r   r   )r   r   )r   r   )r!   r   c                   @  s   e Zd ZdS )TemplateErrorN)r   r   r   r   r   r   r   r"   5   s    r"   templatedatadictreturndict[str, str | None]c                   s   t  ts	tdt| j}t }|| || }}|r)tddt| |r7tddt| ddd fdd}|| j|| j|| j	dddS )Nztemplate_data must be an objectzMissing template variables: z, zUnexpected template variables: Fescape_htmlsourcer   r)   boolr&   c                  s"   | d u rd S t  fdd| S )Nc                   s2   rt jt | d ddS t | d S )Nr   T)quote)htmlescaper   group)match)r$   r)   r   r   <lambda>H   s   2 z5render_template.<locals>.substitute.<locals>.<lambda>)VARIABLEsub)r*   r)   r$   r(   r   
substituteD   s   z#render_template.<locals>.substituteT)r   r   r-   )r*   r   r)   r+   r&   r   )

isinstancer%   r"   setr   joinsortedr   r   r   )r#   r$   allowedsuppliedmissing
unexpectedr5   r   r4   r   render_template9   s   

	r>   )r#   r   r$   r%   r&   r'   )__doc__
__future__r   r-   redataclassesr   compiler2   r   BUILTIN_TEMPLATES
ValueErrorr"   r>   r   r   r   r   <module>   sH    

