text: import os
  import sys
  
  from raygun4py.middleware import flask as flask_raygun
  
  PYTHON_VERSION = sys.version_info[0]
  if PYTHON_VERSION == 3:
      import urllib.parse
  else:
      import urlparse
  
  basedir = os.path.abspath(os.path.dirname(__file__))
  
  if os.path.exists('config.env'):
      print('Importing environment from .env file')
      for line in open('config.env'):
          var = line.strip().split('=')
          if len(var) == 2:
              os.environ[var[0]] = var[1].replace("\"", "")
  
  
  
  class Config:
      APP_NAME = os.environ.get('APP_NAME', 'Ronald McDonald House')
  
      if os.environ.get('SECRET_KEY'):
          SECRET_KEY = os.environ.get('SECRET_KEY')
      else:
          SECRET_KEY = 'SECRET_KEY_ENV_VAR_NOT_SET'
          print('SECRET KEY ENV VAR NOT SET! SHOULD NOT SEE IN PRODUCTION')
      SQLALCHEMY_COMMIT_ON_TEARDOWN = True
  
      # Email
      MAIL_SERVER = os.environ.get('MAIL_SERVER', 'smtp.sendgrid.net')
      MAIL_PORT = os.environ.get('MAIL_PORT', 587)
      MAIL_USE_TLS = os.environ.get('MAIL_USE_TLS', True)
      MAIL_USE_SSL = os.environ.get('MAIL_USE_SSL', False)
      MAIL_USERNAME = os.environ.get('MAIL_USERNAME')
      MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
      MAIL_DEFAULT_SENDER = os.environ.get('MAIL_DEFAULT_SENDER')
      # Analytics
      GOOGLE_ANALYTICS_ID = os.environ.get('GOOGLE_ANALYTICS_ID', '')
      SEGMENT_API_KEY = os.environ.get('SEGMENT_API_KEY', '')
  
      # Azure Database Login
      AZURE_SERVER = os.environ.get('AZURE_SERVER')
      AZURE_DATABASE = os.environ.get('AZURE_DATABASE')
      AZURE_USERNAME = os.environ.get('AZURE_USERNAME')
      AZURE_PASS = os.environ.get('AZURE_PASS')
      # Admin account
      ADMIN_PASSWORD = os.environ.get('ADMIN_PASSWORD', 'password')
      ADMIN_EMAIL = os.environ.get('ADMIN_EMAIL', 'admin@prmh.org')
      # Staff account
      STAFF_PASSWORD = os.environ.get('STAFF_PASSWORD', 'password')
      STAFF_EMAIL = os.environ.get('STAFF_EMAIL', 'staff@prmh.org')
  
      # reCaptchaV2
      RECAPTCHA_PUBLIC_KEY = os.environ.get('RC_SITE_KEY')
      RECAPTCHA_PRIVATE_KEY = os.environ.get('RC_SECRET_KEY')
  
      # Email
      EMAIL_SUBJECT_PREFIX = '[{}]'.format(APP_NAME)
      EMAIL_SENDER = '{app_name} Admin <{email}>'.format(
          app_name=APP_NAME, email=MAIL_USERNAME)
  
      REDIS_URL = os.getenv('REDISTOGO_URL', 'http://localhost:6379')
  
      RAYGUN_APIKEY = os.environ.get('RAYGUN_APIKEY')
  
      # Parse the REDIS_URL to set RQ config variables
      if PYTHON_VERSION == 3:
          urllib.parse.uses_netloc.append('redis')
          url = urllib.parse.urlparse(REDIS_URL)
      else:
          urlparse.uses_netloc.append('redis')
          url = urlparse.urlparse(REDIS_URL)
  
      RQ_DEFAULT_HOST = url.hostname
      RQ_DEFAULT_PORT = url.port
      RQ_DEFAULT_PASSWORD = url.password
      RQ_DEFAULT_DB = 0
  
      @staticmethod
      def init_app(app):
          pass
  
  
  class DevelopmentConfig(Config):
      DEBUG = True
      ASSETS_DEBUG = True
      params = urllib.parse.quote_plus(
          'Driver=%s;' % '{ODBC Driver 17 for SQL Server}' +
          'Server=tcp:%s,1433;' % os.getenv('ROOM_REQUEST_SERVER') +
          'Database=%s;' % os.getenv('ROOM_REQUEST_DATABASE') +
          'Uid=%s;' % os.getenv('ROOM_REQUEST_USER') +
          'Pwd={%s};' % os.getenv('ROOM_REQUEST_PASS') +
          'Encrypt=yes;' +
          'TrustServerCertificate=no;' +
          'Connection Timeout=30;')
  
      conn_str = 'mssql+pyodbc:///?odbc_connect=' + params
  
      SQLALCHEMY_DATABASE_URI = conn_str
  
      @classmethod
      def init_app(cls, app):
          print('THIS APP IS IN DEBUG MODE. \
                  YOU SHOULD NOT SEE THIS IN PRODUCTION.')
  
  
  class TestingConfig(Config):
      TESTING = True
      params = urllib.parse.quote_plus(
          'Driver=%s;' % '{ODBC Driver 17 for SQL Server}' +
          'Server=tcp:%s,1433;' % os.getenv('ROOM_REQUEST_SERVER') +
          'Database=%s;' % os.getenv('ROOM_REQUEST_DATABASE') +
          'Uid=%s;' % os.getenv('ROOM_REQUEST_USER') +
          'Pwd={%s};' % os.getenv('ROOM_REQUEST_PASS') +
          'Encrypt=yes;' +
          'TrustServerCertificate=no;' +
          'Connection Timeout=30;')
  
      conn_str = 'mssql+pyodbc:///?odbc_connect=' + params
  
      SQLALCHEMY_DATABASE_URI = conn_str
      WTF_CSRF_ENABLED = False
  
      @classmethod
      def init_app(cls, app):
          print('THIS APP IS IN TESTING MODE.  \
                  YOU SHOULD NOT SEE THIS IN PRODUCTION.')
  
  
  class ProductionConfig(Config):
      params = urllib.parse.quote_plus(
          'Driver=%s;' % '{ODBC Driver 17 for SQL Server}' +
          'Server=tcp:%s,1433;' % os.getenv('ROOM_REQUEST_SERVER') +
          'Database=%s;' % os.getenv('ROOM_REQUEST_DATABASE') +
          'Uid=%s;' % os.getenv('ROOM_REQUEST_USER') +
          'Pwd={%s};' % os.getenv('ROOM_REQUEST_PASS') +
          'Encrypt=yes;' +
          'TrustServerCertificate=no;' +
          'Connection Timeout=30;')
  
      conn_str = 'mssql+pyodbc:///?odbc_connect=' + params
  
      SQLALCHEMY_DATABASE_URI = conn_str
      SSL_DISABLE = (os.environ.get('SSL_DISABLE', 'True') == 'True')
  
      @classmethod
      def init_app(cls, app):
          Config.init_app(app)
          assert os.environ.get('SECRET_KEY'), 'SECRET_KEY IS NOT SET!'
  
          flask_raygun.Provider(app, app.config['RAYGUN_APIKEY']).attach()
  
  
  class HerokuConfig(ProductionConfig):
      @classmethod
      def init_app(cls, app):
          ProductionConfig.init_app(app)
  
          # Handle proxy server headers
          from werkzeug.contrib.fixers import ProxyFix
          app.wsgi_app = ProxyFix(app.wsgi_app)
  
  
  class UnixConfig(ProductionConfig):
      @classmethod
      def init_app(cls, app):
          ProductionConfig.init_app(app)
  
          # Log to syslog
          import logging
          from logging.handlers import SysLogHandler
          syslog_handler = SysLogHandler()
          syslog_handler.setLevel(logging.WARNING)
          app.logger.addHandler(syslog_handler)
  
  
  config = {
      'development': DevelopmentConfig,
      'testing': TestingConfig,
      'production': ProductionConfig,
      'default': DevelopmentConfig,
      'heroku': HerokuConfig,
      'unix': UnixConfig
  }
  