
 X                 @   sX   d  Z  d d l Z d d l Z d d l m Z d d l m Z Gd d   d e  Z d S)zH
Email backend that writes messages to console instead of sending them.
    N)BaseEmailBackend)sixc                   s:   e  Z d  Z   f d d   Z d d   Z d d   Z   S)EmailBackendc                sD   | j  d t j  |  _ t j   |  _ t t |   j	 | |   d  S)Nstream)
popsysstdoutr   	threadingRLock_locksuperr   __init__)selfargskwargs)	__class__ O/home/ubuntu/projects/ifolica/build/django/django/core/mail/backends/console.pyr      s    zEmailBackend.__init__c             C   s   | j    } | j   } t j rW | j   r? | j   j   n d } | j |  } n  |  j j d |  |  j j d d  |  j j d  d  S)Nzutf-8z%s
-O   
)	messageas_bytesr   PY3get_charsetget_output_charsetdecoder   write)r   r   msgZmsg_datacharsetr   r   r   write_message   s    	$zEmailBackend.write_messagec             C   s   | s
 d Sd } |  j   yX |  j   } x2 | D]* } |  j |  |  j j   | d 7} q0 W| rq |  j   n  Wn! t k
 r |  j s   n  Yn XWd QX| S)z6Write all messages to the stream in a thread-safe way.Nr      )r   openr    r   flushclose	ExceptionZfail_silently)r   Zemail_messagesZ	msg_countZstream_createdr   r   r   r   send_messages   s     
	zEmailBackend.send_messages)__name__
__module____qualname__r   r    r&   r   r   )r   r   r      s   
r   )__doc__r   r	   Zdjango.core.mail.backends.baser   Zdjango.utilsr   r   r   r   r   r   <module>   s
   