
    vg                        U d Z ddlZddlZddlmZ ddlmZ ddlmZm	Z	 ddl
mZ ddlmZ  ej                  e      Z G d d	e      Z eed
d      ZeZeed<   dZ eedej0                         er5eek7  r0ej3                  dd      \  ZZ ej8                  e      Z eee      Z G d de      Zeek7  r" eedd      Z eedd      Z ee_!        ee_"        dgZ#ejH                  Z%	 	 	 	 	 	 	 	 	 	 ddZ&e&e_$        y)z?
email_backend.py

This module is used to write email backends
    N)EmailMessage)EmailBackend)DynamicEmailConfigurationEmailLog)settings)_thread_localsc                        e Zd Z	 	 	 	 	 	 	 	 	 	 d fd	Zed        Zed        Zed        Zed        Z	ed        Z
ed        Zed        Zed	        Zed
        Zed        Zed        Zed        Z xZS )DefaultHorillaMailBackendc                    | j                         | _        | j                  rt        | j                  dd       n|	xs t        t        dd       }	| j                  rt        | j                  dd       n|
xs t        t        dd       }
t	        |   d| j                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  |	|
d
| y )Nssl_keyfilessl_certfile)
hostportusernamepassworduse_tlsfail_silentlyuse_ssltimeoutr   r    )get_dynamic_email_configconfigurationgetattrr   super__init__dynamic_hostdynamic_portdynamic_usernamedynamic_passworddynamic_use_tlsdynamic_fail_silentlydynamic_use_ssldynamic_timeout)selfr   r   r   r   r   r   r   r   r   r   kwargs	__class__s               !/var/www/horilla/base/backends.pyr   z"DefaultHorillaMailBackend.__init__   s     "::< !! D&&t<F- F 	 !! D&&=H>4!H 	 	 	
""""****((44((((#%	
 	
    c                  `   t        t        dd       } d }| r:| j                  j                  s$| j                  j                  j                         }t        j                  j                  |      j                         }|.t        j                  j                  d      j                         }|S )Nrequest)
company_idT)
is_primary)
r   r   useris_anonymousemployee_getget_companyr   objectsfilterfirst)r*   companyr   s      r'   r   z2DefaultHorillaMailBackend.get_dynamic_email_config=   s    .)T:7<<44ll//;;=G199@@ A 

%' 	  5==DD E eg  r(   c                 h    | j                   r| j                   j                  S t        t        dd       S )N
EMAIL_HOST)r   r   r   r   r$   s    r'   r   z&DefaultHorillaMailBackend.dynamic_hostL   6     !! ##	
 <6	
r(   c                 h    | j                   r| j                   j                  S t        t        dd       S )N
EMAIL_PORT)r   r   r   r   r7   s    r'   r   z&DefaultHorillaMailBackend.dynamic_portT   r8   r(   c                 h    | j                   r| j                   j                  S t        t        dd       S )NEMAIL_HOST_USER)r   r   r   r   r7   s    r'   r   z*DefaultHorillaMailBackend.dynamic_username\   s7     !! ''	
 #4d;	
r(   c                 h    | j                   r| j                   j                  S t        t        dd       S )NDEFAULT_FROM_EMAIL)r   
from_emailr   r   r7   s    r'   dynamic_mail_sent_fromz0DefaultHorillaMailBackend.dynamic_mail_sent_fromd   s7     !! ))	
 #7>	
r(   c                 J    | j                   r| j                   j                  S d S )N)r   display_namer7   s    r'   dynamic_display_namez.DefaultHorillaMailBackend.dynamic_display_namel   s!    262D2Dt!!..N$Nr(   c                 j    | j                   r| j                    d| j                   dS | j                  S )N <>)rC   r@   r7   s    r'   $dynamic_from_email_with_display_namez>DefaultHorillaMailBackend.dynamic_from_email_with_display_namep   sB     (( (()D,G,G+HJ	
 ,,	
r(   c                 h    | j                   r| j                   j                  S t        t        dd       S )NEMAIL_HOST_PASSWORD)r   r   r   r   r7   s    r'   r   z*DefaultHorillaMailBackend.dynamic_passwordx   s7     !! ''	
 #8$?	
r(   c                 h    | j                   r| j                   j                  S t        t        dd       S )NEMAIL_USE_TLS)r   r   r   r   r7   s    r'   r    z)DefaultHorillaMailBackend.dynamic_use_tls   6     !! &&	
 ?D9	
r(   c                 h    | j                   r| j                   j                  S t        t        dd      S )NEMAIL_FAIL_SILENTLYT)r   r   r   r   r7   s    r'   r!   z/DefaultHorillaMailBackend.dynamic_fail_silently   s7     !! ,,	
 #8$?	
r(   c                 h    | j                   r| j                   j                  S t        t        dd       S )NEMAIL_USE_SSL)r   r   r   r   r7   s    r'   r"   z)DefaultHorillaMailBackend.dynamic_use_ssl   rL   r(   c                 h    | j                   r| j                   j                  S t        t        dd       S )NEMAIL_TIMEOUT)r   r   r   r   r7   s    r'   r#   z)DefaultHorillaMailBackend.dynamic_timeout   rL   r(   )
NNNNNNNNNN)__name__
__module____qualname__r   staticmethodr   propertyr   r   r   r@   rC   rG   r   r    r!   r"   r#   __classcell__r&   s   @r'   r
   r
      s    &
P   
 
 
 
 
 
 
 
 O O 
 
 
 
 
 
 
 
 
 
 
 
r(   r
   EMAIL_BACKEND BACKEND_CLASSz$base.backends.ConfiguredEmailBackendsend_messages.   c                        e Zd Z fdZ xZS )ConfiguredEmailBackendc                     t         t        |   |      }|D ]N  }t        |j                  | j
                  |j                  |j                  |rdnd      }|j                          P |S )Nsentfailed)subjectr?   tobodystatus)	r   r\   r]   r   re   rG   rf   rg   save)r$   email_messagesresponsemessage	email_logr&   s        r'   r]   z$ConfiguredEmailBackend.send_messages   se    ;NK% 	G DD::\\!)vxI NN	 r(   )rS   rT   rU   r]   rX   rY   s   @r'   ra   ra      s     r(   ra   r>   zexample@gmail.comr<   c                 X   t        t        dd      }|rV	 |j                  j                  j	                          d|j                  j                  j
                   d}|s|n|}|
s|gn|
}
t        | |||||||||	|
       y# t        $ r}t        j                  |       Y d}~:d}~ww xY w)z*
    custom __init_method to override
    r*   NrE   rF   )
re   rg   r?   rf   bcc
connectionattachmentsheadersccreply_to)
r   r   r-   r/   get_full_nameemail	Exceptionloggererrormessage_init)r$   re   rg   r?   rf   ro   rp   rq   rr   rs   rt   r*   display_email_namees                 r'   new_initr}      s      ni6G	$+LL$=$=$K$K$M#NbQXQ]Q]QjQjQpQpPqqr!s3=+:J3;*+H
   	LLOO	s   AB 	B)
B$$B))
r[   r[   NNNNNNNN)'__doc__	importlibloggingdjango.core.mailr   django.core.mail.backends.smtpr   base.modelsr   r   horillar   horilla.horilla_middlewaresr   	getLoggerrS   rx   r
   r   rZ   r\   __annotations__defaultsetattrr]   rsplitmodule_path
class_nameimport_modulemodulera   	from_mailr   r   rG   __all__r   rz   r}   r   r(   r'   <module>r      sD     ) 7 ;  6			8	$J
 J
Z /26 8| 7
0 (A(O(O P]g-+223:K$Y$$[1FFJ/M]   G"68KLIx!24GHH.7+BK? $
$ $$
 	'T ! r(   