def from_env(cls): host = get_env_var(cls._prefix, 'host', default='0.0.0.0') port = get_env_var(cls._prefix, 'port', default=7000) geo_service_url = get_env_var(cls._prefix, 'geo_service_url', raise_ex=True) return cls(host=host, port=port, geo_service_url=geo_service_url)
class Sandbox(CloudFoundryConfig): HTTP_PROTOCOL = get_env_var('HTTP_PROTOCOL', 'https') HEADER_COLOUR = get_env_var('HEADER_COLOUR', '#F499BE') # $baby-pink CSV_UPLOAD_BUCKET_NAME = get_env_var( 'CSV_UPLOAD_BUCKET_NAME', 'cf-sandbox-notifications-csv-upload') LOGO_UPLOAD_BUCKET_NAME = get_env_var( 'LOGO_UPLOAD_BUCKET_NAME', 'cf-sandbox-notifications-logo-upload') NOTIFY_ENVIRONMENT = get_env_var('NOTIFY_ENVIRONMENT', 'sandbox')
class Staging(Config): HTTP_PROTOCOL = get_env_var('HTTP_PROTOCOL', 'https') HEADER_COLOUR = get_env_var('HEADER_COLOUR', '#6F72AF') # $mauve CSV_UPLOAD_BUCKET_NAME = get_env_var( 'CSV_UPLOAD_BUCKET_NAME', 'cast-staging-notifications-csv-upload') CONTACT_LIST_UPLOAD_BUCKET_NAME = get_env_var( 'CONTACT_LIST_UPLOAD_BUCKET_NAME', 'cast-staging-contact-list') LOGO_UPLOAD_BUCKET_NAME = get_env_var('LOGO_UPLOAD_BUCKET_NAME', 'cast-public-logos-staging') MOU_BUCKET_NAME = get_env_var('MOU_BUCKET_NAME', 'cast-staging-notify.works-mou') TRANSIENT_UPLOADED_LETTERS = get_env_var( 'TRANSIENT_UPLOADED_LETTERS', 'cast-staging-transient-uploaded-letters') NOTIFY_ENVIRONMENT = get_env_var('NOTIFY_ENVIRONMENT', 'staging') CHECK_PROXY_HEADER = False ASSET_DOMAIN = get_env_var('ASSET_DOMAIN', 'static.staging-notify.works') ASSET_PATH = get_env_var('ASSET_PATH', 'https://static.staging-notify.works/')
class Preview(Config): HTTP_PROTOCOL = get_env_var('HTTP_PROTOCOL', 'https') HEADER_COLOUR = get_env_var('HEADER_COLOUR', '#F499BE') # $baby-pink CSV_UPLOAD_BUCKET_NAME = get_env_var('CSV_UPLOAD_BUCKET_NAME', 'preview-notifications-csv-upload') CONTACT_LIST_UPLOAD_BUCKET_NAME = get_env_var( 'CONTACT_LIST_UPLOAD_BUCKET_NAME', 'preview-contact-list') LOGO_UPLOAD_BUCKET_NAME = get_env_var('LOGO_UPLOAD_BUCKET_NAME', 'public-logos-preview') MOU_BUCKET_NAME = get_env_var('MOU_BUCKET_NAME', 'notify.works-mou') TRANSIENT_UPLOADED_LETTERS = get_env_var( 'TRANSIENT_UPLOADED_LETTERS', 'preview-transient-uploaded-letters') NOTIFY_ENVIRONMENT = get_env_var('NOTIFY_ENVIRONMENT', 'preview') CHECK_PROXY_HEADER = False ASSET_DOMAIN = get_env_var('ASSET_DOMAIN', 'static.notify.works') ASSET_PATH = get_env_var('ASSET_PATH', 'https://static.notify.works/') # On preview, extend the validation timeout to allow more leniency when running functional tests REPLY_TO_EMAIL_ADDRESS_VALIDATION_TIMEOUT = 120
class Development(Config): NOTIFY_LOG_PATH = 'application.log' DEBUG = True SESSION_COOKIE_SECURE = False SESSION_PROTECTION = None CSV_UPLOAD_BUCKET_NAME = 'development-notifications-csv-upload' CONTACT_LIST_UPLOAD_BUCKET_NAME = 'development-contact-list' LOGO_UPLOAD_BUCKET_NAME = 'public-logos-tools' MOU_BUCKET_NAME = 'notify.tools-mou' TRANSIENT_UPLOADED_LETTERS = 'development-transient-uploaded-letters' ADMIN_CLIENT_SECRET = 'dev-notify-secret-key' API_HOST_NAME = get_env_var('API_HOST_NAME', 'http://localhost:6011') DANGEROUS_SALT = 'dev-notify-salt' SECRET_KEY = 'dev-notify-secret-key' ANTIVIRUS_API_HOST = 'http://localhost:6016' ANTIVIRUS_API_KEY = 'test-key' ANTIVIRUS_ENABLED = get_env_var('ANTIVIRUS_ENABLED') == '1' ASSET_PATH = '/static/' REDIS_URL = 'redis://localhost:6379/0'
class Test(Development): NOTIFY_EMAIL_DOMAIN = 'test.notify.com' FROM_NUMBER = 'testing' NOTIFY_ENVIRONMENT = 'test' TESTING = True HIGH_VOLUME_SERVICE = [ '941b6f9a-50d7-4742-8d50-f365ca74bf27', '63f95b86-2d19-4497-b8b2-ccf25457df4e', '7e5950cb-9954-41f5-8376-962b8c8555cf', '10d1b9c9-0072-4fa9-ae1c-595e333841da', ] CSV_UPLOAD_BUCKET_NAME = 'test-notifications-csv-upload' CONTACT_LIST_BUCKET_NAME = 'test-contact-list' TEST_LETTERS_BUCKET_NAME = 'test-test-letters' DVLA_RESPONSE_BUCKET_NAME = 'test.notify.com-ftp' LETTERS_PDF_BUCKET_NAME = 'test-letters-pdf' LETTERS_SCAN_BUCKET_NAME = 'test-letters-scan' INVALID_PDF_BUCKET_NAME = 'test-letters-invalid-pdf' TRANSIENT_UPLOADED_LETTERS = 'test-transient-uploaded-letters' LETTER_SANITISE_BUCKET_NAME = 'test-letters-sanitise' # this is overriden in jenkins and on cloudfoundry SQLALCHEMY_DATABASE_URI = get_env_var('SQLALCHEMY_DATABASE_URI', 'postgresql://localhost/test_notification_api') BROKER_URL = 'you-forgot-to-mock-celery-in-your-tests://' ANTIVIRUS_ENABLED = True for queue in QueueNames.all_queues(): Config.CELERY_QUEUES.append( Queue(queue, Exchange('default'), routing_key=queue) ) API_RATE_LIMIT_ENABLED = True API_HOST_NAME = "http://localhost:6011" SMS_INBOUND_WHITELIST = ['203.0.113.195'] FIRETEXT_INBOUND_SMS_AUTH = ['testkey'] TEMPLATE_PREVIEW_API_HOST = 'http://localhost:9999' MMG_URL = 'https://example.com/mmg' FIRETEXT_URL = 'https://example.com/firetext' CBC_PROXY_ENABLED = True
def from_env(cls): host = get_env_var(cls._prefix, 'host', default='0.0.0.0') port = get_env_var(cls._prefix, 'port', default=8000) db_host_read = get_env_var(cls._prefix, 'db_host_read', raise_ex=True) db_host_write = get_env_var(cls._prefix, 'db_host_write', raise_ex=True) db_port = get_env_var(cls._prefix, 'db_port', default=3306) db_user = get_env_var(cls._prefix, 'db_user', raise_ex=True) db_password = get_env_var(cls._prefix, 'db_password', raise_ex=True) db_name = get_env_var(cls._prefix, 'db_name', default='kube') return cls(host=host, port=port, db_host_read=db_host_read, db_host_write=db_host_write, db_port=db_port, db_user=db_user, db_password=db_password, db_name=db_name)
class Config(object): ADMIN_CLIENT_SECRET = get_env_var('ADMIN_CLIENT_SECRET') API_HOST_NAME = get_env_var('API_HOST_NAME') SECRET_KEY = get_env_var('SECRET_KEY') DANGEROUS_SALT = get_env_var('DANGEROUS_SALT') ZENDESK_API_KEY = get_env_var('ZENDESK_API_KEY') # if we're not on cloudfoundry, we can get to this app from localhost. but on cloudfoundry its different ADMIN_BASE_URL = get_env_var('ADMIN_BASE_URL', 'http://localhost:6012') TEMPLATE_PREVIEW_API_HOST = get_env_var('TEMPLATE_PREVIEW_API_HOST', 'http://localhost:6013') TEMPLATE_PREVIEW_API_KEY = get_env_var('TEMPLATE_PREVIEW_API_KEY', 'my-secret-key') # Logging DEBUG = False NOTIFY_LOG_PATH = get_env_var('NOTIFY_LOG_PATH') ADMIN_CLIENT_USER_NAME = 'notify-admin' ANTIVIRUS_API_HOST = get_env_var('ANTIVIRUS_API_HOST') ANTIVIRUS_API_KEY = get_env_var('ANTIVIRUS_API_KEY') ASSETS_DEBUG = False AWS_REGION = get_env_var('AWS_REGION', 'eu-west-1') DEFAULT_SERVICE_LIMIT = 50 DEFAULT_FREE_SMS_FRAGMENT_LIMITS = { 'central': 1000, 'local': 1000, 'nhs_central': 1000, 'nhs_local': 1000, 'nhs_gp': 1000, 'emergency_service': 1000, 'school_or_college': 1000, 'other': 1000, 'charity': 1000, 'community_interest': 1000 } EMAIL_EXPIRY_SECONDS = 3600 # 1 hour INVITATION_EXPIRY_SECONDS = 3600 * 24 * 2 # 2 days - also set on api EMAIL_2FA_EXPIRY_SECONDS = 1800 # 30 Minutes HEADER_COLOUR = '#81878b' # mix(govuk-colour("dark-grey"), govuk-colour("mid-grey")) HTTP_PROTOCOL = 'http' MAX_FAILED_LOGIN_COUNT = 10 NOTIFY_APP_NAME = 'admin' NOTIFY_LOG_LEVEL = 'DEBUG' PERMANENT_SESSION_LIFETIME = 20 * 60 * 60 # 20 hours SEND_FILE_MAX_AGE_DEFAULT = 365 * 24 * 60 * 60 # 1 year SESSION_COOKIE_HTTPONLY = True SESSION_COOKIE_NAME = 'notify_admin_session' SESSION_COOKIE_SECURE = True # don't send back the cookie if it hasn't been modified by the request. this means that the expiry time won't be # updated unless the session is changed - but it's generally refreshed by `save_service_or_org_after_request` # every time anyway, except for specific endpoints (png/pdfs generally) where we've disabled that handler. SESSION_REFRESH_EACH_REQUEST = False WTF_CSRF_ENABLED = True WTF_CSRF_TIME_LIMIT = None CSV_UPLOAD_BUCKET_NAME = 'local-notifications-csv-upload' CONTACT_LIST_UPLOAD_BUCKET_NAME = 'local-contact-list' ACTIVITY_STATS_LIMIT_DAYS = 7 TEST_MESSAGE_FILENAME = 'Report' REPLY_TO_EMAIL_ADDRESS_VALIDATION_TIMEOUT = 45 NOTIFY_ENVIRONMENT = 'development' LOGO_UPLOAD_BUCKET_NAME = 'public-logos-local' MOU_BUCKET_NAME = 'local-mou' TRANSIENT_UPLOADED_LETTERS = 'local-transient-uploaded-letters' ROUTE_SECRET_KEY_1 = get_env_var('ROUTE_SECRET_KEY_1', '') ROUTE_SECRET_KEY_2 = get_env_var('ROUTE_SECRET_KEY_2', '') CHECK_PROXY_HEADER = False ANTIVIRUS_ENABLED = True REDIS_URL = get_env_var('REDIS_URL') REDIS_ENABLED = get_env_var('REDIS_ENABLED') == '1' ASSET_DOMAIN = '' ASSET_PATH = '/static/' # as defined in api db migration 0331_add_broadcast_org.py BROADCAST_ORGANISATION_ID = '38e4bf69-93b0-445d-acee-53ea53fe02df' NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553'
class Live(Config): HEADER_COLOUR = get_env_var('HEADER_COLOUR', '#005EA5') # $govuk-blue HTTP_PROTOCOL = get_env_var('HTTP_PROTOCOL', 'https') CSV_UPLOAD_BUCKET_NAME = get_env_var('CSV_UPLOAD_BUCKET_NAME', 'cast-live-notifications-csv-upload') CONTACT_LIST_UPLOAD_BUCKET_NAME = get_env_var( 'CONTACT_LIST_UPLOAD_BUCKET_NAME', 'cast-production-contact-list') LOGO_UPLOAD_BUCKET_NAME = get_env_var('LOGO_UPLOAD_BUCKET_NAME', 'cast-public-logos-production') MOU_BUCKET_NAME = get_env_var('MOU_BUCKET_NAME', 'cast-notifications.service.gov.uk-mou') TRANSIENT_UPLOADED_LETTERS = get_env_var( 'TRANSIENT_UPLOADED_LETTERS', 'cast-production-transient-uploaded-letters') NOTIFY_ENVIRONMENT = get_env_var('NOTIFY_ENVIRONMENT', 'live') CHECK_PROXY_HEADER = get_env_var("CHECK_PROXY_HEADER", 'False').lower() in ['true', '1'] ASSET_DOMAIN = get_env_var('ASSET_DOMAIN', 'static.notifications.service.gov.uk') ASSET_PATH = get_env_var('ASSET_PATH', 'https://static.notifications.service.gov.uk/')
from app.utils import get_env_var if get_env_var('VCAP_APPLICATION'): # on cloudfoundry, config is a json blob in VCAP_APPLICATION - unpack it, and populate # standard environment variables from it from app.cloudfoundry_config import extract_cloudfoundry_config extract_cloudfoundry_config() class Config(object): ADMIN_CLIENT_SECRET = get_env_var('ADMIN_CLIENT_SECRET') API_HOST_NAME = get_env_var('API_HOST_NAME') SECRET_KEY = get_env_var('SECRET_KEY') DANGEROUS_SALT = get_env_var('DANGEROUS_SALT') ZENDESK_API_KEY = get_env_var('ZENDESK_API_KEY') # if we're not on cloudfoundry, we can get to this app from localhost. but on cloudfoundry its different ADMIN_BASE_URL = get_env_var('ADMIN_BASE_URL', 'http://localhost:6012') TEMPLATE_PREVIEW_API_HOST = get_env_var('TEMPLATE_PREVIEW_API_HOST', 'http://localhost:6013') TEMPLATE_PREVIEW_API_KEY = get_env_var('TEMPLATE_PREVIEW_API_KEY', 'my-secret-key') # Logging DEBUG = False NOTIFY_LOG_PATH = get_env_var('NOTIFY_LOG_PATH') ADMIN_CLIENT_USER_NAME = 'notify-admin' ANTIVIRUS_API_HOST = get_env_var('ANTIVIRUS_API_HOST')
class Config(object): # URL of admin app ADMIN_BASE_URL = get_env_var('ADMIN_BASE_URL', 'http://*****:*****@notifications.service.gov.uk', '*****@*****.**', '*****@*****.**', ) SIMULATED_SMS_NUMBERS = ('+447700900000', '+447700900111', '+447700900222') FREE_SMS_TIER_FRAGMENT_COUNT = 250000 SMS_INBOUND_WHITELIST = json.loads(get_env_var('SMS_INBOUND_WHITELIST', '[]')) FIRETEXT_INBOUND_SMS_AUTH = json.loads(get_env_var('FIRETEXT_INBOUND_SMS_AUTH', '[]')) MMG_INBOUND_SMS_AUTH = json.loads(get_env_var('MMG_INBOUND_SMS_AUTH', '[]')) MMG_INBOUND_SMS_USERNAME = json.loads(get_env_var('MMG_INBOUND_SMS_USERNAME', '[]')) ROUTE_SECRET_KEY_1 = get_env_var('ROUTE_SECRET_KEY_1', '') ROUTE_SECRET_KEY_2 = get_env_var('ROUTE_SECRET_KEY_2', '') HIGH_VOLUME_SERVICE = json.loads(get_env_var('HIGH_VOLUME_SERVICE', '[]')) # Format is as follows: # {"dataset_1": "token_1", ...} PERFORMANCE_PLATFORM_ENDPOINTS = json.loads(get_env_var('PERFORMANCE_PLATFORM_ENDPOINTS', '{}')) TEMPLATE_PREVIEW_API_HOST = get_env_var('TEMPLATE_PREVIEW_API_HOST', 'http://localhost:6013') TEMPLATE_PREVIEW_API_KEY = get_env_var('TEMPLATE_PREVIEW_API_KEY', 'my-secret-key') DOCUMENT_DOWNLOAD_API_HOST = get_env_var('DOCUMENT_DOWNLOAD_API_HOST', 'http://localhost:7000') DOCUMENT_DOWNLOAD_API_KEY = get_env_var('DOCUMENT_DOWNLOAD_API_KEY', 'auth-token') # these environment vars aren't defined in the manifest so to set them on paas use `cf set-env` MMG_URL = get_env_var("MMG_URL", "https://api.mmg.co.uk/jsonv2a/api.php") FIRETEXT_URL = get_env_var("FIRETEXT_URL", "https://www.firetext.co.uk/api/sendsms/json") SES_STUB_URL = get_env_var("SES_STUB_URL") AWS_REGION = get_env_var('AWS_REGION', 'eu-west-1') # CBC Proxy # if the access keys are empty then noop client is used CBC_PROXY_AWS_ACCESS_KEY_ID = get_env_var('CBC_PROXY_AWS_ACCESS_KEY_ID', '') CBC_PROXY_AWS_SECRET_ACCESS_KEY = get_env_var('CBC_PROXY_AWS_SECRET_ACCESS_KEY', '') CBC_PROXY_ENABLED = bool(CBC_PROXY_AWS_ACCESS_KEY_ID) ENABLED_CBCS = {BroadcastProvider.EE, BroadcastProvider.THREE, BroadcastProvider.O2, BroadcastProvider.VODAFONE}
class Sandbox(CloudFoundryConfig): NOTIFY_EMAIL_DOMAIN = get_env_var('NOTIFY_EMAIL_DOMAIN', 'notify.works') NOTIFY_ENVIRONMENT = get_env_var('NOTIFY_ENVIRONMENT', 'sandbox') CSV_UPLOAD_BUCKET_NAME = get_env_var('CSV_UPLOAD_BUCKET_NAME', 'cf-sandbox-notifications-csv-upload') CONTACT_LIST_BUCKET_NAME = get_env_var('CONTACT_LIST_BUCKET_NAME', 'cf-sandbox-contact-list') LETTERS_PDF_BUCKET_NAME = get_env_var('LETTERS_PDF_BUCKET_NAME', 'cf-sandbox-letters-pdf') TEST_LETTERS_BUCKET_NAME = get_env_var('TEST_LETTERS_BUCKET_NAME', 'cf-sandbox-test-letters') DVLA_RESPONSE_BUCKET_NAME = get_env_var('DVLA_RESPONSE_BUCKET_NAME', 'notify.works-ftp') LETTERS_PDF_BUCKET_NAME = get_env_var('LETTERS_PDF_BUCKET_NAME', 'cf-sandbox-letters-pdf') LETTERS_SCAN_BUCKET_NAME = get_env_var('LETTERS_SCAN_BUCKET_NAME', 'cf-sandbox-letters-scan') INVALID_PDF_BUCKET_NAME = get_env_var('INVALID_PDF_BUCKET_NAME', 'cf-sandbox-letters-invalid-pdf') FROM_NUMBER = get_env_var('FROM_NUMBER', 'sandbox')
class Live(Config): NOTIFY_EMAIL_DOMAIN = get_env_var('NOTIFY_EMAIL_DOMAIN', 'notifications.service.gov.uk') NOTIFY_ENVIRONMENT = get_env_var('NOTIFY_ENVIRONMENT', 'live') CSV_UPLOAD_BUCKET_NAME = get_env_var('CSV_UPLOAD_BUCKET_NAME', 'cast-live-notifications-csv-upload') CONTACT_LIST_BUCKET_NAME = get_env_var('CONTACT_LIST_BUCKET_NAME', 'cast-production-contact-list') TEST_LETTERS_BUCKET_NAME = get_env_var('TEST_LETTERS_BUCKET_NAME', 'cast-production-test-letters') DVLA_RESPONSE_BUCKET_NAME = get_env_var('DVLA_RESPONSE_BUCKET_NAME', 'cast-notifications.service.gov.uk-ftp') LETTERS_PDF_BUCKET_NAME = get_env_var('LETTERS_PDF_BUCKET_NAME', 'cast-production-letters-pdf') LETTERS_SCAN_BUCKET_NAME = get_env_var('LETTERS_SCAN_BUCKET_NAME', 'cast-production-letters-scan') INVALID_PDF_BUCKET_NAME = get_env_var('INVALID_PDF_BUCKET_NAME', 'cast-production-letters-invalid-pdf') TRANSIENT_UPLOADED_LETTERS = get_env_var('TRANSIENT_UPLOADED_LETTERS', 'cast-production-transient-uploaded-letters') LETTER_SANITISE_BUCKET_NAME = get_env_var('LETTER_SANITISE_BUCKET_NAME', 'cast-production-letters-sanitise') FROM_NUMBER = get_env_var('FROM_NUMBER', 'GOVUK') PERFORMANCE_PLATFORM_ENABLED = get_env_var("PERFORMANCE_PLATFORM_ENABLED", 'True').lower() in ['true', '1'] API_RATE_LIMIT_ENABLED = get_env_var("API_RATE_LIMIT_ENABLED", 'True').lower() in ['true', '1'] CHECK_PROXY_HEADER = get_env_var("CHECK_PROXY_HEADER", 'False').lower() in ['true', '1'] SES_STUB_URL = None CRONITOR_ENABLED = get_env_var("CRONITOR_ENABLED", 'True').lower() in ['true', '1'] ENABLED_CBCS = {BroadcastProvider.VODAFONE}
class Staging(Config): NOTIFY_EMAIL_DOMAIN = get_env_var('NOTIFY_EMAIL_DOMAIN', 'staging-notify.works') NOTIFY_ENVIRONMENT = get_env_var('NOTIFY_ENVIRONMENT', 'staging') CSV_UPLOAD_BUCKET_NAME = get_env_var('CSV_UPLOAD_BUCKET_NAME', 'cast-staging-notifications-csv-upload') CONTACT_LIST_BUCKET_NAME = get_env_var('CONTACT_LIST_BUCKET_NAME', 'cast-staging-contact-list') TEST_LETTERS_BUCKET_NAME = get_env_var('TEST_LETTERS_BUCKET_NAME', 'cast-staging-test-letters') DVLA_RESPONSE_BUCKET_NAME = get_env_var('DVLA_RESPONSE_BUCKET_NAME', 'cast-staging-notify.works-ftp') LETTERS_PDF_BUCKET_NAME = get_env_var('LETTERS_PDF_BUCKET_NAME', 'cast-staging-letters-pdf') LETTERS_SCAN_BUCKET_NAME = get_env_var('LETTERS_SCAN_BUCKET_NAME', 'cast-staging-letters-scan') INVALID_PDF_BUCKET_NAME = get_env_var('INVALID_PDF_BUCKET_NAME', 'cast-staging-letters-invalid-pdf') TRANSIENT_UPLOADED_LETTERS = get_env_var('TRANSIENT_UPLOADED_LETTERS', 'cast-staging-transient-uploaded-letters') LETTER_SANITISE_BUCKET_NAME = get_env_var('LETTER_SANITISE_BUCKET_NAME', 'cast-staging-letters-sanitise') FROM_NUMBER = get_env_var('FROM_NUMBER', 'stage') API_RATE_LIMIT_ENABLED = get_env_var("API_RATE_LIMIT_ENABLED", 'True').lower() in ['true', '1'] CHECK_PROXY_HEADER = get_env_var("CHECK_PROXY_HEADER", 'False').lower() in ['true', '1']
class Development(Config): DEBUG = True SQLALCHEMY_ECHO = False CSV_UPLOAD_BUCKET_NAME = get_env_var('CSV_UPLOAD_BUCKET_NAME', 'development-notifications-csv-upload') CONTACT_LIST_BUCKET_NAME = get_env_var('CONTACT_LIST_BUCKET_NAME', 'development-contact-list') TEST_LETTERS_BUCKET_NAME = get_env_var('TEST_LETTERS_BUCKET_NAME', 'development-test-letters') DVLA_RESPONSE_BUCKET_NAME = get_env_var('DVLA_RESPONSE_BUCKET_NAME', 'notify.tools-ftp') LETTERS_PDF_BUCKET_NAME = get_env_var('LETTERS_PDF_BUCKET_NAME', 'development-letters-pdf') LETTERS_SCAN_BUCKET_NAME = get_env_var('LETTERS_SCAN_BUCKET_NAME', 'development-letters-scan') INVALID_PDF_BUCKET_NAME = get_env_var('INVALID_PDF_BUCKET_NAME', 'development-letters-invalid-pdf') TRANSIENT_UPLOADED_LETTERS = get_env_var('TRANSIENT_UPLOADED_LETTERS', 'development-transient-uploaded-letters') LETTER_SANITISE_BUCKET_NAME = get_env_var('LETTER_SANITISE_BUCKET_NAME', 'development-letters-sanitise') API_INTERNAL_SECRETS = ['dev-notify-secret-key'] SECRET_KEY = 'dev-notify-secret-key' DANGEROUS_SALT = 'dev-notify-salt' MMG_INBOUND_SMS_AUTH = ['testkey'] MMG_INBOUND_SMS_USERNAME = ['username'] NOTIFY_ENVIRONMENT = 'development' NOTIFY_LOG_PATH = 'application.log' NOTIFICATION_QUEUE_PREFIX = 'development' NOTIFY_EMAIL_DOMAIN = get_env_var('NOTIFY_EMAIL_DOMAIN', 'notify.tools') SQLALCHEMY_DATABASE_URI = get_env_var('SQLALCHEMY_DATABASE_URI', 'postgresql://localhost/notification_api') REDIS_URL = get_env_var('REDIS_URL', 'redis://localhost:6379/0') ANTIVIRUS_ENABLED = get_env_var('ANTIVIRUS_ENABLED') == '1' for queue in QueueNames.all_queues(): Config.CELERY_QUEUES.append( Queue(queue, Exchange('default'), routing_key=queue) ) API_HOST_NAME = get_env_var('API_HOST_NAME', "http://localhost:6011") API_RATE_LIMIT_ENABLED = True
from datetime import timedelta import os import json from celery.schedules import crontab from kombu import Exchange, Queue from app.utils import get_env_var if get_env_var('VCAP_SERVICES'): # on cloudfoundry, config is a json blob in VCAP_SERVICES - unpack it, and populate # standard environment variables from it from app.cloudfoundry_config import extract_cloudfoundry_config extract_cloudfoundry_config() class QueueNames(object): PERIODIC = 'periodic-tasks' PRIORITY = 'priority-tasks' DATABASE = 'database-tasks' SEND_SMS = 'send-sms-tasks' SEND_EMAIL = 'send-email-tasks' RESEARCH_MODE = 'research-mode-tasks' REPORTING = 'reporting-tasks' JOBS = 'job-tasks' RETRY = 'retry-tasks' NOTIFY = 'notify-internal-tasks' PROCESS_FTP = 'process-ftp-tasks' CREATE_LETTERS_PDF = 'create-letters-pdf-tasks' CALLBACKS = 'service-callbacks' CALLBACKS_RETRY = 'service-callbacks-retry'