o
    AZc
                     @   sd   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 ddl	m
Z ddlmZ G dd	 d	eZ
dS )
z-
SMS backend that writes messages to a file.
    N)Optional)settings)ImproperlyConfigured)
SmsBackend)Messagec                       sh   e Zd Zdddee ddf fddZdedefdd	Zdefd
dZ	de
fddZdddZ  ZS )r   N)	file_pathr   returnc             
      s   d | _ |d ur|| _nttdd | _tj| j| _z
tj| jdd W n& ty3   t	d| j  t
yJ } zt	d| j d| dd }~ww t| jtjs[t	d| j d |d	< t j|i | d S )
NSMS_FILE_PATHT)exist_okz>Path for saving text messages exists, but is not a directory: z5Could not create directory for saving text messages: z ()zCould not write to directory: stream)_fnamer   getattrr   ospathabspathmakedirsFileExistsErrorr   OSErroraccessW_OKsuper__init__)selfr   argskwargsexc	__class__ L/var/www/chikooza/env/lib/python3.10/site-packages/sms/backends/filebased.pyr      s:   
zSmsBackend.__init__messagec                 C   sd   d}|j D ]*}d|j d| d|j }| j| d  | jd | jd |d7 }q|S )Nr   zfrom: z
to: 
sO   -------------------------------------------------------------------------------   
   )
recipients
originatorbodyr   writeencode)r   r!   	msg_count	recipientmsg_datar   r   r    write_message4   s   


zSmsBackend.write_messagec                 C   sF   | j du r tj d}d|tt| f }tj| j	|| _ | j S )zReturn a unique file name.Nz%Y%m%d-%H%M%Sz	%s-%s.log)
r   datetimenowstrftimeabsidr   r   joinr   )r   	timestampfnamer   r   r    _get_filenameB   s
   
zSmsBackend._get_filenamec                 C   s"   | j d u rt|  d| _ dS dS )NabTF)r   openr6   r   r   r   r    r8   J   s   
zSmsBackend.openc                 C   s6   z| j d ur| j   W d | _ d S W d | _ d S d | _ w )N)r   closer9   r   r   r    r:   P   s   

zSmsBackend.close)r   N)__name__
__module____qualname__r   strr   r   intr-   r6   boolr8   r:   __classcell__r   r   r   r    r      s    #r   )__doc__r.   r   typingr   django.confr   django.core.exceptionsr   sms.backends.consoler   BaseSmsBackendsms.messager   r   r   r   r    <module>   s    