Add config parsing

This commit is contained in:
Yusur 2021-07-25 17:41:44 +02:00
parent 5b09427f2f
commit 64f8b98acd
3 changed files with 26 additions and 3 deletions

1
.gitignore vendored
View file

@ -2,6 +2,7 @@
media/ media/
**.sqlite **.sqlite
database/ database/
site.conf
# automatically generated garbage # automatically generated garbage
**/__pycache__/ **/__pycache__/

27
app.py
View file

@ -43,10 +43,32 @@ REDIRECT_RE = r'\{\{\s*redirect\s*:\s*(\d+)\s*\}\}'
upload_types = {'jpeg': 1, 'jpg': 1, 'png': 2} upload_types = {'jpeg': 1, 'jpg': 1, 'png': 2}
upload_types_rev = {1: 'jpg', 2: 'png'} upload_types_rev = {1: 'jpg', 2: 'png'}
UPLOAD_DIR = APP_BASE_DIR + '/media'
UPLOAD_DIR = APP_BASE_DIR + '/media'
DATABASE_DIR = APP_BASE_DIR + "/database" DATABASE_DIR = APP_BASE_DIR + "/database"
#### GENERAL CONFIG ####
DEFAULT_CONF = {
('site', 'title'): 'Salvi',
('config', 'media_dir'): APP_BASE_DIR + '/media',
('config', 'database_dir'): APP_BASE_DIR + "/database",
}
_cfp = ConfigParser()
if _cfp.read([APP_BASE_DIR + '/site.conf']):
@lru_cache(maxsize=50)
def _getconf(k1, k2, fallback=None):
if fallback is None:
fallback = DEFAULT_CONF.get((k1, k2))
v = _cfp.get(k1, k2, fallback=fallback)
return v
else:
def _getconf(k1, k2, fallback=None):
if fallback is None:
fallback = DEFAULT_CONF.get((k1, k2))
return fallback
#### misc. helpers #### #### misc. helpers ####
def _makelist(l): def _makelist(l):
@ -61,7 +83,7 @@ def _makelist(l):
#### DATABASE SCHEMA #### #### DATABASE SCHEMA ####
database = SqliteDatabase(DATABASE_DIR + '/data.sqlite') database = SqliteDatabase(_getconf("config", "database_dir") + '/data.sqlite')
class BaseModel(Model): class BaseModel(Model):
class Meta: class Meta:
@ -484,6 +506,7 @@ def _before_request():
def _inject_variables(): def _inject_variables():
return { return {
'T': partial(get_string, g.lang), 'T': partial(get_string, g.lang),
'app_name': _getconf('site', 'title')
} }
@app.route('/') @app.route('/')

View file

@ -1,7 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
{% set app_name = 'Salvi' %}
<title>{% block title %}{{ app_name }}{% endblock %}</title> <title>{% block title %}{{ app_name }}{% endblock %}</title>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">