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
![]() |
|||
83 |