def path(self, name):
     try:
         path = safe_join(self.location, name)
     except ValueError:
         raise SuspiciousOperation("Attempted access to '%s' denied." %
                                   name)
     return os.path.normpath(path)
Example #2
0
    def file_path(self, url):
        """
        Returns the path to the media file on disk for the given URL.

        The passed URL is assumed to begin with ``self.base_url``.  If the
        resulting file path is outside the media directory, then a ValueError
        is raised.
        """
        relative_url = url[len(self.base_url[2]):]
        relative_path = urllib.url2pathname(relative_url)
        return safe_join(self.base_dir, relative_path)
Example #3
0
 def find_location(self, root, path, prefix=None):
     """
     Finds a requested static file in a location, returning the found
     absolute path (or ``None`` if no match).
     """
     if prefix:
         prefix = '%s%s' % (prefix, os.sep)
         if not path.startswith(prefix):
             return None
         path = path[len(prefix):]
     path = safe_join(root, path)
     if os.path.exists(path):
         return path
Example #4
0
 def get_template_sources(self, template_name, template_dirs=None):
     """
     Returns the absolute paths to "template_name", when appended to each
     directory in "template_dirs". Any paths that don't lie inside one of the
     template dirs are excluded from the result set, for security reasons.
     """
     if not template_dirs:
         template_dirs = app_template_dirs
     for template_dir in template_dirs:
         try:
             yield safe_join(template_dir, template_name)
         except UnicodeDecodeError:
             # The template dir name was a bytestring that wasn't valid UTF-8.
             raise
         except ValueError:
             # The joined path was located outside of template_dir.
             pass