This repository has been archived by the owner on Sep 18, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathconfig.py
125 lines (104 loc) · 4.09 KB
/
config.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# -*- coding: utf-8 -*-
import datetime
import os
import json
basedir = os.path.abspath(os.path.dirname(__file__))
class Config(object):
SECRET_KEY = 'hard string to guess'
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
DEBUG = True
CSRF_ENABLED = True
MD5_SALT = 'md5 salt'
CONFIRM_EMAIL_DURATION = 86400 # seconds (24 hours)
DISTRIBUTOR_REGISTER_DURATION = 86400
REMEMBER_COOKIE_DURATION = datetime.timedelta(days=30)
SMS_CAPTCHA_DURATION = 600
IMAGE_CAPTCHA_DURATION = 600
ITEM_PER_PAGE = 40
CDN_DOMAIN = 'static.wanmujia.com'
CDN_TIMESTAMP = False
CONFIG_PATH = os.path.join(basedir, 'config.json')
ADMIN_EMAILS = []
WMJ_MAIL_SENDER = (u'万木家', '[email protected]')
@classmethod
def init_app(cls, app):
pass
class DevelopmentConfig(Config):
DEBUG = True
IMAGE_DIR = os.path.join(basedir, 'app/static/')
HOST = 'http://127.0.0.1:5000'
@classmethod
def init_app(cls, app):
Config.init_app(app)
with open(cls.CONFIG_PATH) as f:
config_dict = json.load(f)['development']
cls.SQLALCHEMY_DATABASE_URI = config_dict['DATABASE_URL']
cls.OSS_ACCESS_ID = config_dict['OSS_ACCESS_ID']
cls.OSS_ACCESS_SECRET = config_dict['OSS_ACCESS_SECRET']
cls.OSS_BUCKET_NAME = config_dict['OSS_BUCKET_NAME']
cls.OSS_HOST = config_dict['OSS_HOST']
cls.FEEDBACK_EMAILS = config_dict['FEEDBACK_EMAILS']
cls.SMS_ACCOUNT = config_dict['SMS_ACCOUNT']
cls.SMS_PASSWORD = config_dict['SMS_PASSWORD']
cls.SMS_URL = config_dict['SMS_URL']
class TestingConfig(Config):
TESTING = True
WTF_CSRF_ENABLED = False
DEBUG_TB_ENABLED = False
SERVER_NAME = 'localhost'
IMAGE_DIR = os.path.join(basedir, 'app/static/')
@classmethod
def init_app(cls, app):
Config.init_app(app)
with open(cls.CONFIG_PATH) as f:
config_dict = json.load(f)['testing']
cls.SQLALCHEMY_DATABASE_URI = config_dict['DATABASE_URL']
class ProductionConfig(Config):
DEBUG = False
PROPAGATE_EXCEPTIONS = False
HOST = 'http://www.wanmujia.com'
CELERY_BROKER_URL = 'redis://localhost:6379/0'
IMAGE_DIR = '/var/www/WanMuJia/'
CDN_DOMAIN = 'static.wanmujia.com'
@classmethod
def init_app(cls, app):
Config.init_app(app)
with open(cls.CONFIG_PATH) as f:
config_dict = json.load(f)['production']
cls.SECRET_KEY = config_dict['SECRET_KEY']
cls.MD5_SALT = config_dict['MD5_SALT']
cls.SQLALCHEMY_DATABASE_URI = config_dict['DATABASE_URL']
cls.ADMIN_EMAILS = config_dict['ADMIN_EMAILS']
cls.OSS_ACCESS_ID = config_dict['OSS_ACCESS_ID']
cls.OSS_ACCESS_SECRET = config_dict['OSS_ACCESS_SECRET']
cls.OSS_BUCKET_NAME = config_dict['OSS_BUCKET_NAME']
cls.OSS_HOST = config_dict['OSS_HOST']
cls.ITEMS = config_dict['ITEMS']
cls.FEEDBACK_EMAILS = config_dict['FEEDBACK_EMAILS']
cls.SMS_ACCOUNT = config_dict['SMS_ACCOUNT']
cls.SMS_PASSWORD = config_dict['SMS_PASSWORD']
cls.SMS_URL = config_dict['SMS_URL']
import logging
file_handler = logging.FileHandler('/var/log/wmj/wmj_error.log')
file_handler.setLevel(logging.ERROR)
file_handler.setFormatter(logging.Formatter('\n%s\n%s' % ('-' * 30, '%(asctime)s %(levelname)s: %(message)s')))
app.logger.addHandler(file_handler)
class CeleryConfig(Config):
@classmethod
def init_app(cls, app):
Config.init_app(app)
with open(cls.CONFIG_PATH) as f:
config_dict = json.load(f)['celery']
cls.SQLALCHEMY_DATABASE_URI = config_dict['DATABASE_URL']
cls.MAIL_SERVER = config_dict['MAIL_SERVER']
cls.MAIL_PORT = config_dict['MAIL_PORT']
cls.MAIL_USE_SSL = config_dict['MAIL_USE_SSL']
cls.MAIL_USERNAME = config_dict['MAIL_USERNAME']
cls.MAIL_PASSWORD = config_dict['MAIL_PASSWORD']
config = {
'development': DevelopmentConfig,
'testing': TestingConfig,
'production': ProductionConfig,
'default': DevelopmentConfig,
'celery': CeleryConfig
}