import yaml

from random import SystemRandom

def generate_secret_key():
  cryptogen = SystemRandom()
  return  str(cryptogen.getrandbits(256))


def add_enterprise_config_defaults(config_obj, current_secret_key, hostname):
  """ Adds/Sets the config defaults for enterprise registry config. """
  # These have to be false.
  config_obj['TESTING'] = False
  config_obj['USE_CDN'] = False

  # Default features that are on.
  config_obj['FEATURE_USER_LOG_ACCESS'] = config_obj.get('FEATURE_USER_LOG_ACCESS', True)
  config_obj['FEATURE_USER_CREATION'] = config_obj.get('FEATURE_USER_CREATION', True)
  config_obj['FEATURE_ANONYMOUS_ACCESS'] = config_obj.get('FEATURE_ANONYMOUS_ACCESS', True)

  # Default features that are off.
  config_obj['FEATURE_MAILING'] = config_obj.get('FEATURE_MAILING', False)
  config_obj['FEATURE_BUILD_SUPPORT'] = config_obj.get('FEATURE_BUILD_SUPPORT', False)

  # Default auth type.
  if not 'AUTHENTICATION_TYPE' in config_obj:
    config_obj['AUTHENTICATION_TYPE'] = 'Database'

  # Default secret key.
  if not 'SECRET_KEY' in config_obj:
    config_obj['SECRET_KEY'] = current_secret_key

  # Default storage configuration.
  if not 'DISTRIBUTED_STORAGE_CONFIG' in config_obj:
    config_obj['DISTRIBUTED_STORAGE_PREFERENCE'] = ['local']
    config_obj['DISTRIBUTED_STORAGE_CONFIG'] = {
      'local': ['LocalStorage', {'storage_path': '/datastorage/registry'}]
    }

    config_obj['USERFILES_LOCATION'] = 'local'
    config_obj['USERFILES_PATH'] = 'userfiles/'

    config_obj['LOG_ARCHIVE_LOCATION'] = 'local'

  if not 'SERVER_HOSTNAME' in config_obj:
    config_obj['SERVER_HOSTNAME'] = hostname

  # Misc configuration.
  config_obj['PREFERRED_URL_SCHEME'] = config_obj.get('PREFERRED_URL_SCHEME', 'http')
  config_obj['ENTERPRISE_LOGO_URL'] = config_obj.get('ENTERPRISE_LOGO_URL',
                                                     '/static/img/quay-logo.png')
