Issues (3)

memegen/settings.py (1 issue)

1
import os
2
import logging
3
4
5
class Config:
6
7
    ENV = None
8
9
    PATH = os.path.abspath(os.path.dirname(__file__))
10
    ROOT = os.path.dirname(PATH)
11
    DEBUG = False
12
    THREADED = False
13
14
    # Constants
15
    GITHUB_SLUG = "jacebrowning/memegen-flask"
16
    GITHUB_URL = "https://github.com/{}".format(GITHUB_SLUG)
17
    GITHUB_BASE = "https://raw.githubusercontent.com/{}/main/".format(GITHUB_SLUG)
18
    CHANGES_URL = GITHUB_BASE + "CHANGELOG.md"
19
    CONTRIBUTING_URL = GITHUB_BASE + "CONTRIBUTING.md"
20
21
    # Variables
22
    BUGSNAG_API_KEY = os.getenv('BUGSNAG_API_KEY')
23
    FACEBOOK_APP_ID = 'localhost'
24
    FACEBOOK_IMAGE_HEIGHT = 492
25
    FACEBOOK_IMAGE_WIDTH = 940
26
    GOOGLE_ANALYTICS_TID = 'localhost'
27
    GOOGLE_ANALYTICS_URL = "http://www.google-analytics.com/collect"
28
    LOG_LEVEL = getattr(logging, os.getenv('LOG_LEVEL', 'INFO'))
29
    REGENERATE_IMAGES = os.getenv('REGENERATE_IMAGES')
30
    REMOTE_TRACKING_URL = os.getenv('REMOTE_TRACKING_URL')
31
    TWITTER_IMAGE_HEIGHT = 440
32
    TWITTER_IMAGE_WIDTH = 880
33
    WATERMARK_OPTIONS = os.getenv('WATERMARK_OPTIONS', "").split(',')
34
35
36
class ProductionConfig(Config):
37
38
    ENV = 'production'
39
40
    FACEBOOK_APP_ID = os.getenv('FACEBOOK_APP_ID')
41
    GOOGLE_ANALYTICS_TID = os.getenv('GOOGLE_ANALYTICS_TID')
42
    SLACK_APP_ID = os.getenv('SLACK_APP_ID')
43
44
45
class StagingCongif(ProductionConfig):
46
47
    ENV = 'staging'
48
49
50
class LocalConfig(Config):
51
52
    ENV = 'local'
53
54
    DEBUG = True
55
56
    LOG_LEVEL = logging.DEBUG
57
    WATERMARK_OPTIONS = ['localhost'] + Config.WATERMARK_OPTIONS
58
59
60
class TestConfig(LocalConfig):
61
62
    ENV = 'test'
63
64
    TESTING = True
65
66
    WATERMARK_OPTIONS = ['test', 'memegen.test', 'werkzeug']
67
68
69
def get_config(name):
70
    assert name, "No configuration specified"
71
72
    for config in _subclasses(Config):
73
        if config.ENV == name:
74
            return config
75
76
    assert False, "No matching configuration"
77
    return None
78
79
80
def _subclasses(cls):
81
    yield from cls.__subclasses__()
82
    yield from (g for s in cls.__subclasses__() for g in _subclasses(s))
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable g does not seem to be defined.
Loading history...
83