
v^z                 @   sH   d  Z  d d l Z d d l 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)BaseEmailBackendc                   s:   e  Z d  Z   f d d   Z d d   Z d d   Z   S)EmailBackendc                s>   | j  d t j  |  _ t j   |  _ t   j | |   d  S)Nstream)	popsysstdoutr   	threadingRLock_locksuper__init__)selfargskwargs)	__class__ C/tmp/pip-build-8lau8j11/django/django/core/mail/backends/console.pyr      s    zEmailBackend.__init__c             C   s   | j    } | j   } | j   r6 | j   j   n d } | j |  } |  j j d |  |  j j d d  |  j j d  d  S)Nzutf-8z%s
-O   
)messageas_bytes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  { yU |  j   } x2 | D]* } |  j |  |  j j   | d 7} q0 W| rn |  j   Wn t k
 r |  j s   Yn XWd QRX| 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   r   r   r   r   r   <module>   s   