from django.conf import settings class AliyunVideoSettings: all_settings = [ 'ACCESS_KEY_ID', 'ACCESS_KEY_SECRET', 'WORKFLOW_ID', 'CDN_URL_PREFIX', 'CDN_ACCESS_TOKEN' ] default_settings = {} def __init__(self): self.user_settings = getattr(settings, "ALIYUN_VIDEO", {}) def check(self): for st in self.all_settings: getattr(self, st) def __getattr__(self, attr): try: val = self.user_settings[attr] except KeyError: try: val = self.default_settings[attr] except KeyError as exc: raise KeyError( "ALIYUN_VIDEO missed required settings: %s, " "please defined `ALIYUN_VIDEO = {'%s': ..}` " "in your settings." % (attr, attr)) from exc # Cache result setattr(self, attr, val) return val video_settings = AliyunVideoSettings()