Commits

Gregory Petukhov  committed 19ab967 Merge

Automated merge with ssh://bitbucket.org/lorien/django-common

  • Participants
  • Parent commits 87834ea, 5a4fe6a

Comments (0)

Files changed (3)

-recursive-include common *
-global-exclude *.pyc
+recursive-include common/templates *.html *.txt
+recursive-include common/data *

File common/mail.py

+"""
+Function get_custom_connection allow to select which email connection
+to use for sending the email message.
+
+Without `name` argument `get_custom_connection` function returns
+default email connection built with `settings.EMAIL_*` settings:
+
+* https://docs.djangoproject.com/en/dev/ref/settings/#email-backend
+
+If you pass `name` argument to that function then it will build
+email connection with settings from `settings.EMAIL_CONNECTIONS[name]`
+
+Exmaple of custom config::
+
+    EMAIL_CONNECTIONS = {
+        'gmail': {
+            'host': 'smtp.gmail.com',
+            'port': 587,
+            'username': 'xxx@gmail.com',
+            'password': 'xxx',
+            'use_tls': True,
+        },
+
+Note that you shuld use "username" and "password" keys (not "host_user" and
+"host_password" as you could think looking on `settings.EMAIL_*` options)
+"""
+from django.conf import settings
+import django.core.mail
+
+
+class MissingConnectionException(Exception):
+    pass
+
+
+def get_custom_connection(name=None, **kwargs):
+    """
+    If name is None return default email connection else
+    build connection with settings from settings.EMAIL_CONNECTIONS[name]
+
+    Args:
+        name: key in settings.EMAIL_CONNECTIONS
+    """
+
+    if name is None:
+        options = {}
+    else:
+        try:
+            options = getattr(settings, 'EMAIL_CONNECTIONS')[name]
+        except KeyError, AttributeError:
+            raise MissingConnectionException(
+                'Settings for email connection "%s" were not found' % label)
+
+    options.update(kwargs)
+    return django.core.mail.get_connection(**options)
 #!/usr/bin/env python
-import os
-from setuptools import setup
+from setuptools import setup, find_packages
 
-PACKAGE = 'common'
-VERSION = '0.1.44'
+setup(
+    name = 'django-common',
+    description = 'A number of useful django shortcuts and helpers',
+    version = '0.1.46',
+    author = 'Grigoriy Petukhov',
+    author_email = 'lorien@lorien.name',
+    url = 'http://bitbucket.org/lorien/django-common/',
 
-if __name__ == '__main__':
-    # Compile the list of packages available, because distutils doesn't have
-    # an easy way to do this.
-    packages, data_files = [], []
-    root_dir = os.path.dirname(__file__)
-    if root_dir:
-        os.chdir(root_dir)
+    packages = find_packages(),
+    include_package_data = True,
 
-    for dirpath, dirnames, filenames in os.walk(PACKAGE):
-        for i, dirname in enumerate(dirnames):
-            if dirname in ['.', '..']:
-                del dirnames[i]
-        if '__init__.py' in filenames:
-            pkg = dirpath.replace(os.path.sep, '.')
-            if os.path.altsep:
-                pkg = pkg.replace(os.path.altsep, '.')
-            packages.append(pkg)
-        elif filenames:
-            prefix = dirpath[len(PACKAGE) + 1:] # Strip package directory + path separator
-            for f in filenames:
-                data_files.append(os.path.join(prefix, f))
-
-
-    setup(
-        version = VERSION,
-        description = 'A number of useful django shortcuts and helpers',
-        author = 'Grigoriy Petukhov',
-        author_email = 'lorien@lorien.name',
-        url = 'http://bitbucket.org/lorien/django-common/',
-        name = 'django-common',
-
-        packages = packages,
-        package_data = {'common': data_files},
-
-        license = "BSD",
-        keywords = "django application development shortcuts helpers",
-        classifiers=[
-            'Development Status :: 4 - Beta',
-            'Environment :: Web Environment',
-            'Framework :: Django',
-            'Intended Audience :: Developers',
-            'License :: OSI Approved :: BSD License',
-            'Operating System :: OS Independent',
-            'Programming Language :: Python',
-            'Topic :: Software Development :: Libraries :: Python Modules',
-        ],
-    )
+    license = "BSD",
+    keywords = "django application development shortcuts helpers",
+    classifiers=[
+        'Development Status :: 4 - Beta',
+        'Environment :: Web Environment',
+        'Framework :: Django',
+        'Intended Audience :: Developers',
+        'License :: OSI Approved :: BSD License',
+        'Operating System :: OS Independent',
+        'Programming Language :: Python',
+        'Topic :: Software Development :: Libraries :: Python Modules',
+    ],
+)