Ejemplo n.º 1
0
def get_standard_processors():
    from google.appengine._internal.django.conf import settings
    global _standard_context_processors
    if _standard_context_processors is None:
        processors = []
        collect = []
        collect.extend(_builtin_context_processors)
        collect.extend(settings.TEMPLATE_CONTEXT_PROCESSORS)
        for path in collect:
            i = path.rfind('.')
            module, attr = path[:i], path[i + 1:]
            try:
                mod = import_module(module)
            except ImportError, e:
                raise ImproperlyConfigured(
                    'Error importing request processor module %s: "%s"' %
                    (module, e))
            try:
                func = getattr(mod, attr)
            except AttributeError:
                raise ImproperlyConfigured(
                    'Module "%s" does not define a "%s" callable request processor'
                    % (module, attr))
            processors.append(func)
        _standard_context_processors = tuple(processors)
Ejemplo n.º 2
0
def load_handler(path, *args, **kwargs):
    """
    Given a path to a handler, return an instance of that handler.

    E.g.::
        >>> load_handler('django.core.files.uploadhandler.TemporaryFileUploadHandler', request)
        <TemporaryFileUploadHandler object at 0x...>

    """
    i = path.rfind('.')
    module, attr = path[:i], path[i + 1:]
    try:
        mod = importlib.import_module(module)
    except ImportError as e:
        raise ImproperlyConfigured(
            'Error importing upload handler module %s: "%s"' % (module, e))
    except ValueError as e:
        raise ImproperlyConfigured(
            'Error importing upload handler module. Is FILE_UPLOAD_HANDLERS a correctly defined list or tuple?'
        )
    try:
        cls = getattr(mod, attr)
    except AttributeError:
        raise ImproperlyConfigured(
            'Module "%s" does not define a "%s" upload handler backend' %
            (module, attr))
    return cls(*args, **kwargs)
Ejemplo n.º 3
0
 def __init__(self, *args, **kwargs):
     self._fname = None
     if 'file_path' in kwargs:
         self.file_path = kwargs.pop('file_path')
     else:
         self.file_path = getattr(settings, 'EMAIL_FILE_PATH', None)
     # Make sure self.file_path is a string.
     if not isinstance(self.file_path, six.string_types):
         raise ImproperlyConfigured(
             'Path for saving emails is invalid: %r' % self.file_path)
     self.file_path = os.path.abspath(self.file_path)
     # Make sure that self.file_path is an directory if it exists.
     if os.path.exists(
             self.file_path) and not os.path.isdir(self.file_path):
         raise ImproperlyConfigured(
             'Path for saving email messages exists, but is not a directory: %s'
             % self.file_path)
     # Try to create it, if it not exists.
     elif not os.path.exists(self.file_path):
         try:
             os.makedirs(self.file_path)
         except OSError as err:
             raise ImproperlyConfigured(
                 'Could not create directory for saving email messages: %s (%s)'
                 % (self.file_path, err))
     # Make sure that self.file_path is writable.
     if not os.access(self.file_path, os.W_OK):
         raise ImproperlyConfigured('Could not write to directory: %s' %
                                    self.file_path)
     # Finally, call super().
     # Since we're using the console-based backend as a base,
     # force the stream to be None, so we don't default to stdout
     kwargs['stream'] = None
     super(EmailBackend, self).__init__(*args, **kwargs)
Ejemplo n.º 4
0
def get_storage_class(import_path=None):
    if import_path is None:
        import_path = settings.DEFAULT_FILE_STORAGE
    try:
        dot = import_path.rindex('.')
    except ValueError:
        raise ImproperlyConfigured("%s isn't a storage module." % import_path)
    module, classname = import_path[:dot], import_path[dot + 1:]
    try:
        mod = import_module(module)
    except ImportError, e:
        raise ImproperlyConfigured('Error importing storage module %s: "%s"' %
                                   (module, e))
Ejemplo n.º 5
0
 def _get_url_patterns(self):
     patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
     try:
         iter(patterns)
     except TypeError:
         raise ImproperlyConfigured("The included urlconf %s doesn't have any patterns in it" % self.urlconf_name)
     return patterns
Ejemplo n.º 6
0
def get_storage_class(import_path=None):
    if import_path is None:
        import_path = settings.DEFAULT_FILE_STORAGE
    try:
        dot = import_path.rindex('.')
    except ValueError:
        raise ImproperlyConfigured("%s isn't a storage module." % import_path)
    module, classname = import_path[:dot], import_path[dot+1:]
    try:
        mod = import_module(module)
    except ImportError as e:
        raise ImproperlyConfigured('Error importing storage module %s: "%s"' % (module, e))
    try:
        return getattr(mod, classname)
    except AttributeError:
        raise ImproperlyConfigured('Storage module "%s" does not define a "%s" class.' % (module, classname))
Ejemplo n.º 7
0
 def __init__(self, *args, **kwargs):
     self._fname = None
     if 'file_path' in kwargs:
         self.file_path = kwargs.pop('file_path')
     else:
         self.file_path = getattr(settings, 'EMAIL_FILE_PATH',None)
     # Make sure self.file_path is a string.
     if not isinstance(self.file_path, basestring):
         raise ImproperlyConfigured('Path for saving emails is invalid: %r' % self.file_path)
     self.file_path = os.path.abspath(self.file_path)
     # Make sure that self.file_path is an directory if it exists.
     if os.path.exists(self.file_path) and not os.path.isdir(self.file_path):
         raise ImproperlyConfigured('Path for saving email messages exists, but is not a directory: %s' % self.file_path)
     # Try to create it, if it not exists.
     elif not os.path.exists(self.file_path):
         try:
             os.makedirs(self.file_path)
         except OSError, err:
             raise ImproperlyConfigured('Could not create directory for saving email messages: %s (%s)' % (self.file_path, err))
Ejemplo n.º 8
0
def find_template_loader(loader):
    if isinstance(loader, (tuple, list)):
        loader, args = loader[0], loader[1:]
    else:
        args = []
    if isinstance(loader, basestring):
        module, attr = loader.rsplit('.', 1)
        try:
            mod = import_module(module)
        except ImportError, e:
            raise ImproperlyConfigured(
                'Error importing template source loader %s: "%s"' %
                (loader, e))
        try:
            TemplateLoader = getattr(mod, attr)
        except AttributeError, e:
            raise ImproperlyConfigured(
                'Error importing template source loader %s: "%s"' %
                (loader, e))
Ejemplo n.º 9
0
def find_template_loader(loader):
    if isinstance(loader, (tuple, list)):
        loader, args = loader[0], loader[1:]
    else:
        args = []
    if isinstance(loader, six.string_types):
        module, attr = loader.rsplit('.', 1)
        try:
            mod = import_module(module)
        except ImportError as e:
            raise ImproperlyConfigured(
                'Error importing template source loader %s: "%s"' %
                (loader, e))
        try:
            TemplateLoader = getattr(mod, attr)
        except AttributeError as e:
            raise ImproperlyConfigured(
                'Error importing template source loader %s: "%s"' %
                (loader, e))

        if hasattr(TemplateLoader, 'load_template_source'):
            func = TemplateLoader(*args)
        else:
            # Try loading module the old way - string is full path to callable
            if args:
                raise ImproperlyConfigured(
                    "Error importing template source loader %s - can't pass arguments to function-based loader."
                    % loader)
            func = TemplateLoader

        if not func.is_usable:
            import warnings
            warnings.warn(
                "Your TEMPLATE_LOADERS setting includes %r, but your Python installation doesn't support that type of template loading. Consider removing that line from TEMPLATE_LOADERS."
                % loader)
            return None
        else:
            return func
    else:
        raise ImproperlyConfigured(
            'Loader does not define a "load_template" callable template source loader'
        )
Ejemplo n.º 10
0
def get_connection(backend=None, fail_silently=False, **kwds):
    """Load an e-mail backend and return an instance of it.

    If backend is None (default) settings.EMAIL_BACKEND is used.

    Both fail_silently and other keyword arguments are used in the
    constructor of the backend.
    """
    path = backend or settings.EMAIL_BACKEND
    try:
        mod_name, klass_name = path.rsplit('.', 1)
        mod = import_module(mod_name)
    except ImportError as e:
        raise ImproperlyConfigured(
            ('Error importing email backend module %s: "%s"' % (mod_name, e)))
    try:
        klass = getattr(mod, klass_name)
    except AttributeError:
        raise ImproperlyConfigured(('Module "%s" does not define a '
                                    '"%s" class' % (mod_name, klass_name)))
    return klass(fail_silently=fail_silently, **kwds)
Ejemplo n.º 11
0
def include(arg, namespace=None, app_name=None):
    if isinstance(arg, tuple):
        # callable returning a namespace hint
        if namespace:
            raise ImproperlyConfigured(
                'Cannot override the namespace for a dynamic module that provides a namespace'
            )
        urlconf_module, app_name, namespace = arg
    else:
        # No namespace hint - use manually provided namespace
        urlconf_module = arg
    return (urlconf_module, app_name, namespace)
Ejemplo n.º 12
0
def load_handler(path, *args, **kwargs):
    """
    Given a path to a handler, return an instance of that handler.

    E.g.::
        >>> load_handler('django.core.files.uploadhandler.TemporaryFileUploadHandler', request)
        <TemporaryFileUploadHandler object at 0x...>

    """
    i = path.rfind('.')
    module, attr = path[:i], path[i+1:]
    try:
        mod = importlib.import_module(module)
    except ImportError, e:
        raise ImproperlyConfigured('Error importing upload handler module %s: "%s"' % (module, e))
Ejemplo n.º 13
0
def url(regex, view, kwargs=None, name=None, prefix=''):
    if isinstance(view, (list, tuple)):
        # For include(...) processing.
        urlconf_module, app_name, namespace = view
        return RegexURLResolver(regex,
                                urlconf_module,
                                kwargs,
                                app_name=app_name,
                                namespace=namespace)
    else:
        if isinstance(view, basestring):
            if not view:
                raise ImproperlyConfigured(
                    'Empty URL pattern view name not permitted (for pattern %r)'
                    % regex)
            if prefix:
                view = prefix + '.' + view
        return RegexURLPattern(regex, view, kwargs, name)
Ejemplo n.º 14
0
                'Error importing template source loader %s: "%s"' %
                (loader, e))
        try:
            TemplateLoader = getattr(mod, attr)
        except AttributeError, e:
            raise ImproperlyConfigured(
                'Error importing template source loader %s: "%s"' %
                (loader, e))

        if hasattr(TemplateLoader, 'load_template_source'):
            func = TemplateLoader(*args)
        else:
            # Try loading module the old way - string is full path to callable
            if args:
                raise ImproperlyConfigured(
                    "Error importing template source loader %s - can't pass arguments to function-based loader."
                    % loader)
            func = TemplateLoader

        if not func.is_usable:
            import warnings
            warnings.warn(
                "Your TEMPLATE_LOADERS setting includes %r, but your Python installation doesn't support that type of template loading. Consider removing that line from TEMPLATE_LOADERS."
                % loader)
            return None
        else:
            return func
    else:
        raise ImproperlyConfigured(
            'Loader does not define a "load_template" callable template source loader'
        )
Ejemplo n.º 15
0
    If backend is None (default) settings.EMAIL_BACKEND is used.

    Both fail_silently and other keyword arguments are used in the
    constructor of the backend.
    """
    path = backend or settings.EMAIL_BACKEND
    try:
        mod_name, klass_name = path.rsplit('.', 1)
        mod = import_module(mod_name)
    except ImportError, e:
        raise ImproperlyConfigured(
            ('Error importing email backend module %s: "%s"' % (mod_name, e)))
    try:
        klass = getattr(mod, klass_name)
    except AttributeError:
        raise ImproperlyConfigured(('Module "%s" does not define a '
                                    '"%s" class' % (mod_name, klass_name)))
    return klass(fail_silently=fail_silently, **kwds)


def send_mail(subject,
              message,
              from_email,
              recipient_list,
              fail_silently=False,
              auth_user=None,
              auth_password=None,
              connection=None):
    """
    Easy wrapper for sending a single message to a recipient list. All members
    of the recipient list will see the other recipients in the 'To' field.
Ejemplo n.º 16
0
            field_name = self.field_name,
            name = self.file_name,
            content_type = self.content_type,
            size = file_size,
            charset = self.charset
        )


def load_handler(path, *args, **kwargs):
    """
    Given a path to a handler, return an instance of that handler.

    E.g.::
        >>> load_handler('django.core.files.uploadhandler.TemporaryFileUploadHandler', request)
        <TemporaryFileUploadHandler object at 0x...>

    """
    i = path.rfind('.')
    module, attr = path[:i], path[i+1:]
    try:
        mod = importlib.import_module(module)
    except ImportError, e:
        raise ImproperlyConfigured('Error importing upload handler module %s: "%s"' % (module, e))
    except ValueError, e:
        raise ImproperlyConfigured('Error importing upload handler module. Is FILE_UPLOAD_HANDLERS a correctly defined list or tuple?')
    try:
        cls = getattr(mod, attr)
    except AttributeError:
        raise ImproperlyConfigured('Module "%s" does not define a "%s" upload handler backend' % (module, attr))
    return cls(*args, **kwargs)
Ejemplo n.º 17
0
        return urlparse.urljoin(self.base_url, filepath_to_uri(name))


def get_storage_class(import_path=None):
    if import_path is None:
        import_path = settings.DEFAULT_FILE_STORAGE
    try:
        dot = import_path.rindex('.')
    except ValueError:
        raise ImproperlyConfigured("%s isn't a storage module." % import_path)
    module, classname = import_path[:dot], import_path[dot + 1:]
    try:
        mod = import_module(module)
    except ImportError, e:
        raise ImproperlyConfigured('Error importing storage module %s: "%s"' %
                                   (module, e))
    try:
        return getattr(mod, classname)
    except AttributeError:
        raise ImproperlyConfigured(
            'Storage module "%s" does not define a "%s" class.' %
            (module, classname))


class DefaultStorage(LazyObject):
    def _setup(self):
        self._wrapped = get_storage_class()()


default_storage = DefaultStorage()
Ejemplo n.º 18
0
from google.appengine._internal.django.conf import settings
from google.appengine._internal.django.core.exceptions import ImproperlyConfigured
from google.appengine._internal.django.template import TemplateDoesNotExist
from google.appengine._internal.django.template.loader import BaseLoader
from google.appengine._internal.django.utils._os import safe_join
from google.appengine._internal.django.utils.importlib import import_module

# At compile time, cache the directories to search.
fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
app_template_dirs = []
for app in settings.INSTALLED_APPS:
    try:
        mod = import_module(app)
    except ImportError as e:
        raise ImproperlyConfigured('ImportError %s: %s' % (app, e.args[0]))
    template_dir = os.path.join(os.path.dirname(mod.__file__), 'templates')
    if os.path.isdir(template_dir):
        app_template_dirs.append(template_dir.decode(fs_encoding))

# It won't change, so convert it to a tuple to save memory.
app_template_dirs = tuple(app_template_dirs)

class Loader(BaseLoader):
    is_usable = True

    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.