def test_smtp_backend_submission_scheme_default_port(self): # Included in README url = 'submission://[email protected]:[email protected]' url = dj_email_url.parse(url) assert url['EMAIL_PORT'] == 587 assert url['EMAIL_USE_SSL'] is False assert url['EMAIL_USE_TLS'] is True
def test_file_path(self): url = 'smtp://[email protected]:[email protected]:587' \ '//tmp/app-messages?tls=True' url = dj_email_url.parse(url) assert url['EMAIL_FILE_PATH'] == "/tmp/app-messages" assert url['EMAIL_USE_SSL'] is False assert url['EMAIL_USE_TLS'] is True
def test_smtp_backend_local_mta(self): # Included in README url = 'smtp://' url = dj_email_url.parse(url) assert url['EMAIL_HOST'] == 'localhost' assert url['EMAIL_PORT'] == 25 assert url['EMAIL_USE_SSL'] is False assert url['EMAIL_USE_TLS'] is False
def _dj_email_url_parser(value, **kwargs): try: import dj_email_url except ImportError: raise RuntimeError( "The dj_email_url parser requires the dj-email-url package. " "You can install it with: pip install dj-email-url" ) return dj_email_url.parse(value, **kwargs)
def test_console_parsing(self): url = 'console://' url = dj_email_url.parse(url) assert url['EMAIL_BACKEND'] == \ 'django.core.mail.backends.console.EmailBackend' assert url['EMAIL_HOST'] is None assert url['EMAIL_HOST_PASSWORD'] is None assert url['EMAIL_HOST_USER'] is None assert url['EMAIL_PORT'] is None assert url['EMAIL_USE_TLS'] is False
def test_smtp_parsing(self): url = 'smtps://[email protected]:[email protected]:587' url = dj_email_url.parse(url) assert url['EMAIL_BACKEND'] == \ 'django.core.mail.backends.smtp.EmailBackend' assert url['EMAIL_HOST'] == 'smtp.example.com' assert url['EMAIL_HOST_PASSWORD'] == 'password' assert url['EMAIL_HOST_USER'] == '*****@*****.**' assert url['EMAIL_PORT'] == 587 assert url['EMAIL_USE_TLS'] is True
def test_server_email_parsed(self): url = 'console://[email protected]' url = dj_email_url.parse(url) assert url['SERVER_EMAIL'] == '*****@*****.**'
'This is a fake secret key for development/debugging only') os.environ.setdefault('DATABASE_URL', (Path(BASE_DIR) / 'db.sqlite3').as_uri().replace( 'file:///', 'sqlite:////')) os.environ.setdefault( 'EMAIL_URL', os.environ.get('DEFAULT_DEBUG_EMAIL_URL', 'console:')) os.environ.setdefault('DEFAULT_FROM_EMAIL', 'noreply@localhost') else: # Assume HTTPS. SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True SECURE_SSL_REDIRECT = True CSRF_COOKIE_HTTPONLY = True email_config = dj_email_url.parse(os.environ['EMAIL_URL']) # Sets a number of settings values, as described at # https://github.com/migonzalvar/dj-email-url vars().update(email_config) DEFAULT_FROM_EMAIL = os.environ['DEFAULT_FROM_EMAIL'] SECRET_KEY = os.environ['SECRET_KEY'] ALLOWED_HOSTS = ['*'] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth',
TIME_ZONE = 'America/Chicago' LANGUAGE_CODE = 'en-us' LOCALE_PATHS = [os.path.join(PROJECT_ROOT, 'locale')] USE_I18N = True USE_L10N = True USE_TZ = True FORM_RENDERER = 'django.forms.renderers.TemplatesSetting' EMAIL_URL = os.environ.get('EMAIL_URL') SENDGRID_USERNAME = os.environ.get('SENDGRID_USERNAME') SENDGRID_PASSWORD = os.environ.get('SENDGRID_PASSWORD') if not EMAIL_URL and SENDGRID_USERNAME and SENDGRID_PASSWORD: EMAIL_URL = 'smtp://%s:%[email protected]:587/?tls=True' % ( SENDGRID_USERNAME, SENDGRID_PASSWORD) email_config = dj_email_url.parse(EMAIL_URL or 'console://') EMAIL_FILE_PATH = email_config['EMAIL_FILE_PATH'] EMAIL_HOST_USER = email_config['EMAIL_HOST_USER'] EMAIL_HOST_PASSWORD = email_config['EMAIL_HOST_PASSWORD'] EMAIL_HOST = email_config['EMAIL_HOST'] EMAIL_PORT = email_config['EMAIL_PORT'] EMAIL_BACKEND = email_config['EMAIL_BACKEND'] EMAIL_USE_TLS = email_config['EMAIL_USE_TLS'] EMAIL_USE_SSL = email_config['EMAIL_USE_SSL'] ENABLE_SSL = ast.literal_eval( os.environ.get('ENABLE_SSL', 'False')) DEFAULT_FROM_EMAIL = os.environ.get('DEFAULT_FROM_EMAIL') ORDER_FROM_EMAIL = os.getenv('ORDER_FROM_EMAIL', DEFAULT_FROM_EMAIL)
def test_dj_email_url(self, env, set_env): email_url = "smtp://[email protected]:[email protected]:465/?ssl=True" set_env({"EMAIL_URL": email_url}) res = env.dj_email_url("EMAIL_URL") assert res == dj_email_url.parse(email_url)
('zh-hans', _('Simplified Chinese')), ('zh-hant', _('Traditional Chinese')) ] LOCALE_PATHS = [os.path.join(PROJECT_ROOT, 'locale')] USE_I18N = True USE_L10N = True USE_TZ = True FORM_RENDERER = 'django.forms.renderers.TemplatesSetting' EMAIL_URL = os.environ.get('EMAIL_URL') SENDGRID_USERNAME = os.environ.get('SENDGRID_USERNAME') SENDGRID_PASSWORD = os.environ.get('SENDGRID_PASSWORD') if not EMAIL_URL and SENDGRID_USERNAME and SENDGRID_PASSWORD: EMAIL_URL = 'smtp://%s:%[email protected]:587/?tls=True' % ( SENDGRID_USERNAME, SENDGRID_PASSWORD) email_config = dj_email_url.parse(EMAIL_URL or 'console://') EMAIL_FILE_PATH = email_config['EMAIL_FILE_PATH'] EMAIL_HOST_USER = email_config['EMAIL_HOST_USER'] EMAIL_HOST_PASSWORD = email_config['EMAIL_HOST_PASSWORD'] EMAIL_HOST = email_config['EMAIL_HOST'] EMAIL_PORT = email_config['EMAIL_PORT'] EMAIL_BACKEND = email_config['EMAIL_BACKEND'] EMAIL_USE_TLS = email_config['EMAIL_USE_TLS'] EMAIL_USE_SSL = email_config['EMAIL_USE_SSL'] ENABLE_SSL = get_bool_from_env('ENABLE_SSL', False) if ENABLE_SSL: SECURE_SSL_REDIRECT = not DEBUG
LOGGING["handlers"]["console"]["filters"] = None LOGGING["handlers"]["console"]["level"] = "DEBUG" LOGGING["loggers"] = { 'django': { 'handlers': ['console', 'mail_admins'], 'level': os.getenv('EGO_LOG_LEVEL', 'WARN'), } } DEFAULT_FROM_EMAIL = "*****@*****.**" SERVER_EMAIL = DEFAULT_FROM_EMAIL if os.getenv('EGO_EMAIL_URL'): import dj_email_url vars().update(dj_email_url.parse(os.getenv('EGO_EMAIL_URL'))) NO_SECURE_SETTINGS = True if os.getenv('EGO_NO_SECURE_SETTINGS') else False NO_STATICFILES_SETTINGS = False try: from local_settings import * except ImportError: pass # Enable secure settings in case DEBUG is disabled and NO_SECURE_SETTINGS is not set to True if not DEBUG and not NO_SECURE_SETTINGS: CSRF_COOKIE_SECURE = True SESSION_COOKIE_SECURE = True
def test_smtp_backend_smtp_scheme_default_port(self): url = 'smtp://[email protected]:[email protected]' url = dj_email_url.parse(url) assert url['EMAIL_PORT'] == 25 assert url['EMAIL_USE_SSL'] is False assert url['EMAIL_USE_TLS'] is False
def test_smtp_backend_with_timeout(self): url = 'smtp://[email protected]:[email protected]:587/?timeout=10' url = dj_email_url.parse(url) assert url['EMAIL_TIMEOUT'] == 10
# Internationalization # https://docs.djangoproject.com/en/1.10/topics/i18n/ LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) STATIC_ROOT = os.path.join(PROJECT_ROOT, '..', 'staticfiles') STATIC_URL = '/static/' SESSION_COOKIE_SECURE = True if DEBUG: SESSION_COOKIE_SECURE = False LOGIN_URL = 'login' LOGIN_REDIRECT_URL = 'home' LOGOUT_REDIRECT_URL = '/' ADMINS = [('Admin', os.environ['ADMIN_EMAIL'])] MANAGERS = ADMINS vars().update(dj_email_url.parse(os.environ['EMAIL_URL']))
timedelta(minutes=env('ACCESS_TOKEN_LIFETIME', default=15)), 'REFRESH_TOKEN_LIFETIME': timedelta(minutes=env('REFRESH_TOKEN_LIFETIME', default=120)), 'ROTATE_REFRESH_TOKENS': True, } ################## # AUTHENTICATION # ################## AUTH_USER_MODEL = "accounts.User" #################### # Email # #################### email_config = dj_email_url.parse(env('EMAIL_URL')) EMAIL_FILE_PATH = email_config.get('EMAIL_FILE_PATH', '') EMAIL_HOST_USER = email_config.get('EMAIL_HOST_USER', '') EMAIL_HOST_PASSWORD = email_config.get('EMAIL_HOST_PASSWORD', '') EMAIL_HOST = email_config.get('EMAIL_HOST', '') EMAIL_PORT = email_config.get('EMAIL_PORT', '') EMAIL_BACKEND = email_config.get('EMAIL_BACKEND', '') EMAIL_USE_TLS = email_config.get('EMAIL_USE_TLS', '') EMAIL_USE_SSL = email_config.get('EMAIL_USE_SSL', '') EMAIL_SENDER = env('EMAIL_SENDER', default='') ################# # documentation # ################# SWAGGER_SETTINGS = { 'SECURITY_DEFINITIONS': {
SECURE_HSTS_SECONDS = 604800 # One week SECURE_HSTS_INCLUDE_SUBDOMAINS = True SECURE_REDIRECT_EXEMPT = [r"^(create-timestamp|list-timestamps)/"] else: os.environ["OAUTHLIB_INSECURE_TRANSPORT"] = "1" WORKBENCH.TITLE = f"(debug) {WORKBENCH.TITLE}" MAILCHIMP_API_KEY = env("MAILCHIMP_API_KEY", warn=True) MAILCHIMP_LIST_ID = env("MAILCHIMP_LIST_ID", warn=True) GLASSFROG_TOKEN = env("GLASSFROG_TOKEN", warn=True) # Fine since it's only used for selected views CORS_ORIGIN_ALLOW_ALL = True if DEBUG: # pragma: no cover globals().update(dj_email_url.parse(env("EMAIL_URL", default="console:"))) else: # pragma: no cover globals().update( dj_email_url.parse(env("EMAIL_URL", default="smtp:", warn=True))) if env("SQL", default=False): # pragma: no cover from django.utils.log import DEFAULT_LOGGING as LOGGING LOGGING["handlers"]["console"]["level"] = "DEBUG" LOGGING["loggers"]["django.db.backends"] = { "level": "DEBUG", "handlers": ["console"], "propagate": False, } FEATURES = WORKBENCH.FEATURES
def test_default_from_email_undefined(self): url = 'console:' url = dj_email_url.parse(url) assert 'DEFAULT_FROM_EMAIL' not in url
def test_default_from_email_parsed(self): url = 'console://[email protected]' url = dj_email_url.parse(url) assert url['DEFAULT_FROM_EMAIL'] == '*****@*****.**'
{% endif -%} ########### # LOGGING # ########### LOGGING = { "version": 1, "disable_existing_loggers": False, "handlers": {"console": {"level": "INFO", "class": "logging.StreamHandler"}}, "loggers": {"": {"handlers": ["console"], "level": "ERROR", "propagate": True}}, } ############# # E-Mailing # ############# EMAIL_URL = get_env_variable("EMAIL_URL", "console://") email_config = dj_email_url.parse(EMAIL_URL) EMAIL_FILE_PATH = email_config["EMAIL_FILE_PATH"] EMAIL_HOST_USER = email_config["EMAIL_HOST_USER"] EMAIL_HOST_PASSWORD = email_config["EMAIL_HOST_PASSWORD"] EMAIL_HOST = email_config["EMAIL_HOST"] EMAIL_PORT = email_config["EMAIL_PORT"] EMAIL_BACKEND = email_config["EMAIL_BACKEND"] EMAIL_USE_TLS = email_config["EMAIL_USE_TLS"] EMAIL_USE_SSL = email_config["EMAIL_USE_SSL"] DEFAULT_FROM_EMAIL = get_env_variable("EMAIL_FROM", "webmaster@localhost")
HP_ACTION_CUSTOMER_KEY = '' RAPIDPRO_API_TOKEN = '' RAPIDPRO_FOLLOWUP_CAMPAIGN_RH = '' RAPIDPRO_FOLLOWUP_CAMPAIGN_LOC = '' LOB_SECRET_API_KEY = '' LOB_PUBLISHABLE_API_KEY = '' CELERY_BROKER_URL = '' CELERY_TASK_ALWAYS_EAGER = True DEBUG_DATA_DIR = '' DHCR_EMAIL_SENDER_ADDRESS = '*****@*****.**' DHCR_EMAIL_RECIPIENT_ADDRESSES = ['*****@*****.**'] email_config = dj_email_url.parse('dummy:') vars().update(email_config) DEFAULT_FILE_STORAGE = 'project.settings_pytest.NotActuallyFileStorage' # Use defaults for static file storage. STATICFILES_STORAGE = 'whitenoise.storage.CompressedStaticFilesStorage' STATIC_URL = '/static/' # Use very fast but horribly insecure password hashing # to make tests run faster. PASSWORD_HASHERS = ('django.contrib.auth.hashers.MD5PasswordHasher', ) # Access to the nycdb is read-only anyways, so we won't be able to create a # test database on it. if 'nycdb' in DATABASES: # noqa
USE_I18N = True USE_L10N = True USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.9/howto/static-files/ STATIC_URL = '/static/' # Email config email_config = dj_email_url.parse( config('EMAIL_URL', default='file:///./email-messages'), ) EMAIL_FILE_PATH = email_config['EMAIL_FILE_PATH'] EMAIL_HOST_USER = email_config['EMAIL_HOST_USER'] EMAIL_HOST_PASSWORD = email_config['EMAIL_HOST_PASSWORD'] EMAIL_HOST = email_config['EMAIL_HOST'] EMAIL_PORT = email_config['EMAIL_PORT'] EMAIL_BACKEND = email_config['EMAIL_BACKEND'] EMAIL_USE_TLS = email_config['EMAIL_USE_TLS'] # /media/ MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' # /static/ STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
def test_smtps_backend_with_ssl(self): url = 'smtps://[email protected]:[email protected]:465/?ssl=True' url = dj_email_url.parse(url) assert url['EMAIL_USE_SSL'] is True assert url['EMAIL_USE_TLS'] is False
# Statsd STATSD_CLIENT = "django_statsd.clients.normal" # Set to true to route statsd pings to the debug toolbar. KEGBOT_STATSD_TO_TOOLBAR = False # Notifications NOTIFICATION_BACKENDS = [ "pykeg.notification.backends.email.EmailNotificationBackend" ] # E-mail if KEGBOT_ENV == ENV_TEST: EMAIL_BACKEND = "django.core.mail.backends.dummy.EmailBackend" else: email_config = dj_email_url.parse(KEGBOT["KEGBOT_EMAIL_URL"]) vars().update(email_config) EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" DEFAULT_FROM_EMAIL = KEGBOT["KEGBOT_EMAIL_FROM_ADDRESS"] EMAIL_SUBJECT_PREFIX = "" # Imagekit IMAGEKIT_DEFAULT_IMAGE_CACHE_BACKEND = "imagekit.imagecache.NonValidatingImageCacheBackend" # Storage DEFAULT_FILE_STORAGE = "pykeg.web.kegweb.kbstorage.KegbotFileSystemStorage" from pykeg.core.util import get_plugin_template_dirs TEMPLATES = [
MESSAGE_TAGS = {ERROR: "danger"} MESSAGE_LEVEL = messages.DEBUG if DEBUG else messages.INFO WSGI_APPLICATION = "agir.api.wsgi.application" # Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databases DATABASES = { "default": dj_database_url.config(default="postgis://*****:*****@localhost/api") } # Mails # by default configured for mailhog sending email_config = dj_email_url.parse(os.environ.get("SMTP_URL", "smtp://localhost:1025/")) EMAIL_FILE_PATH = email_config["EMAIL_FILE_PATH"] EMAIL_HOST_USER = email_config["EMAIL_HOST_USER"] EMAIL_HOST_PASSWORD = email_config["EMAIL_HOST_PASSWORD"] EMAIL_HOST = email_config["EMAIL_HOST"] EMAIL_PORT = email_config["EMAIL_PORT"] EMAIL_BACKEND = email_config["EMAIL_BACKEND"] EMAIL_USE_TLS = email_config["EMAIL_USE_TLS"] EMAIL_USE_SSL = email_config["EMAIL_USE_SSL"] # fixed for now ==> maybe more flexible? EMAIL_TEMPLATES = { # WELCOME_MESSAGE variables: [PROFILE_LINK] "WELCOME_LFI_MESSAGE": "https://mosaico.lafranceinsoumise.fr/emails/ac205f71-61a3-465b-8161-cec5729ecdbb.html", # CONFIRM_SUBSCRIPTION_MESSAGE variables: [CONFIRMATION_URL]
def test_smtp_backend_without_tls(self): url = 'smtp://[email protected]:[email protected]:587/?tls=False' url = dj_email_url.parse(url) assert url['EMAIL_USE_SSL'] is False assert url['EMAIL_USE_TLS'] is False
LOCALE_PATHS = [os.path.join(PROJECT_ROOT, "locale")] USE_I18N = True USE_L10N = True USE_TZ = True FORM_RENDERER = "django.forms.renderers.TemplatesSetting" EMAIL_URL = os.environ.get("EMAIL_URL") SENDGRID_USERNAME = os.environ.get("SENDGRID_USERNAME") SENDGRID_PASSWORD = os.environ.get("SENDGRID_PASSWORD") if not EMAIL_URL and SENDGRID_USERNAME and SENDGRID_PASSWORD: EMAIL_URL = "smtp://%s:%[email protected]:587/?tls=True" % ( SENDGRID_USERNAME, SENDGRID_PASSWORD, ) email_config = dj_email_url.parse( EMAIL_URL or "console://[email protected]:console@example/") EMAIL_FILE_PATH = email_config["EMAIL_FILE_PATH"] EMAIL_HOST_USER = email_config["EMAIL_HOST_USER"] EMAIL_HOST_PASSWORD = email_config["EMAIL_HOST_PASSWORD"] EMAIL_HOST = email_config["EMAIL_HOST"] EMAIL_PORT = email_config["EMAIL_PORT"] EMAIL_BACKEND = email_config["EMAIL_BACKEND"] EMAIL_USE_TLS = email_config["EMAIL_USE_TLS"] EMAIL_USE_SSL = email_config["EMAIL_USE_SSL"] # If enabled, make sure you have set proper storefront address in ALLOWED_CLIENT_HOSTS. ENABLE_ACCOUNT_CONFIRMATION_BY_EMAIL = get_bool_from_env( "ENABLE_ACCOUNT_CONFIRMATION_BY_EMAIL", True) ENABLE_SSL = get_bool_from_env("ENABLE_SSL", False)
def test_special_chars(self): url = 'smtp://user%21%40%23%245678:pass%25%5E%26%2A%28%29123@' \ 'smtp.example.com:587' url = dj_email_url.parse(url) assert url['EMAIL_HOST_PASSWORD'] == 'pass%^&*()123' assert url['EMAIL_HOST_USER'] == 'user!@#$5678'
def test_server_email_undefined(self): url = 'console:' url = dj_email_url.parse(url) assert 'SERVER_EMAIL' not in url
USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.9/howto/static-files/ STATIC_URL = '/static/' MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(DATA_DIR, 'media') STATIC_ROOT = os.path.join(DATA_DIR, 'static') #SMTP settings import dj_email_url EMAIL_URL = os.environ.get('EMAIL_URL', 'smtps://*****:*****@smtp.sendgrid.net:587') email_config = dj_email_url.parse(EMAIL_URL) EMAIL_FILE_PATH = email_config['EMAIL_FILE_PATH'] EMAIL_HOST_USER = email_config['EMAIL_HOST_USER'] EMAIL_HOST_PASSWORD = email_config['EMAIL_HOST_PASSWORD'] EMAIL_HOST = email_config['EMAIL_HOST'] EMAIL_PORT = email_config['EMAIL_PORT'] EMAIL_BACKEND = email_config['EMAIL_BACKEND'] EMAIL_USE_TLS = email_config['EMAIL_USE_TLS'] # EMAIL_USE_TLS = True # EMAIL_HOST = 'smtp.sendgrid.net' # EMAIL_PORT = 587 # EMAIL_HOST_USER = '******' # EMAIL_HOST_PASSWORD = '******' # DEFAULT_FROM_EMAIL = '*****@*****.**'