B
    CVvg                 @   sL   d Z ddlmZ ddlmZmZ ddlmZ ddlm	Z
 G dd de
Z	d	S )
z4
Wrapper for loading templates from the filesystem.
    )SuspiciousFileOperation)OriginTemplateDoesNotExist)	safe_join   )Loaderc                   s6   e Zd Zd
 fdd	Zdd Zdd Zdd	 Z  ZS )r   Nc                s   t  | || _d S )N)super__init__dirs)selfenginer
   )	__class__ F/tmp/pip-install-o3oxmrkh/Django/django/template/loaders/filesystem.pyr	      s    zLoader.__init__c             C   s   | j d k	r| j S | jj S )N)r
   r   )r   r   r   r   get_dirs   s    zLoader.get_dirsc          	   C   sH   y&t |j| jjd
}| S Q R X W n tk
rB   t|Y nX d S )N)encoding)opennamer   Zfile_charsetreadFileNotFoundErrorr   )r   originfpr   r   r   get_contents   s
    zLoader.get_contentsc          	   c   sL   xF|   D ]:}yt||}W n tk
r2   w
Y nX t||| dV  q
W dS )z
        Return an Origin object pointing to an absolute path in each directory
        in template_dirs. For security reasons, if a path doesn't lie inside
        one of the template_dirs it is excluded from the result set.
        )r   template_nameloaderN)r   r   r   r   )r   r   Ztemplate_dirr   r   r   r   get_template_sources   s    zLoader.get_template_sources)N)__name__
__module____qualname__r	   r   r   r   __classcell__r   r   )r   r   r      s   r   N)__doc__Zdjango.core.exceptionsr   Zdjango.templater   r   Zdjango.utils._osr   baser   Z
BaseLoaderr   r   r   r   <module>   s
   