Skip to content

Commit 1b7e16a

Browse files
feat: use keyvalue for persistent values
1 parent 9b3f458 commit 1b7e16a

17 files changed

Lines changed: 56 additions & 56 deletions

File tree

pythoncms/app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
from shopyo_admin import MyAdminIndexView
3838
from shopyo_admin import DefaultModelView
39-
from modules.box__default.settings.models import Settings
39+
from modules.box__default.keyvalue.models import KeyValue
4040
from init import db
4141

4242

@@ -141,7 +141,7 @@ def setup_flask_admin(app):
141141
template_mode="bootstrap4",
142142
index_view=MyAdminIndexView(),
143143
)
144-
admin.add_view(DefaultModelView(Settings, db.session))
144+
admin.add_view(DefaultModelView(KeyValue, db.session))
145145
admin.add_link(MenuLink(name="Logout", category="", url="/auth/logout?next=/admin"))
146146

147147

pythoncms/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from flask_login import current_user as _current_user
1414
from init import db as _db
1515
from modules.box__default.auth.models import User
16-
from modules.box__default.settings.models import Settings
16+
from modules.box__default.keyvalue.models import Settings
1717
from sqlalchemy import event
1818

1919
# run in shopyo/shopyo

pythoncms/modules/box__default/info/templates/info/dashboard.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
Site title<br>
1414
<input
1515
class="form-control"
16-
name="site_title" value="{{get_setting('SITE_TITLE')}}">
16+
name="site_title" value="{{get_value('SITE_TITLE')}}">
1717
<br>
1818
Site description<br>
1919
<textarea
@@ -23,7 +23,7 @@
2323
name="site_description"
2424
class="form-control"
2525

26-
>{{get_setting('SITE_DESCRIPTION')}}</textarea>
26+
>{{get_value('SITE_DESCRIPTION')}}</textarea>
2727
<br>
2828
<input type="hidden" name="csrf_token" value="{{csrf_token()}}"
2929
>

pythoncms/modules/box__default/info/view.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
# context.update({"pages": pages})
2121
# return render_template("page/all_pages.html", **context)
2222

23-
from modules.box__default.settings.helpers import set_setting
24-
from modules.box__default.settings.helpers import get_setting
23+
from modules.box__default.keyvalue.helpers import set_value
24+
from modules.box__default.keyvalue.helpers import get_value
2525

2626
@module_blueprint.route(mhelp.info["dashboard"], methods=['POST', 'GET'])
2727
@login_required
2828
def index():
2929
if request.method == 'POST':
3030
print(request.form)
31-
set_setting('SITE_TITLE', request.form['site_title'])
32-
set_setting('SITE_DESCRIPTION', request.form['site_description'])
33-
return mhelp.render('dashboard.html', get_setting=get_setting)
31+
set_value('SITE_TITLE', request.form['site_title'])
32+
set_value('SITE_DESCRIPTION', request.form['site_description'])
33+
return mhelp.render('dashboard.html', get_value=get_value)
File renamed without changes.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from .helpers import *
2+
3+
available_everywhere = {"get_value": get_value}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from .models import KeyValue
2+
from init import db
3+
4+
def set_value(key, value):
5+
keyvalue = KeyValue.query.filter(KeyValue.key == key).first()
6+
if keyvalue:
7+
keyvalue.value = value
8+
keyvalue.update()
9+
else:
10+
s = KeyValue(key=key,value=value)
11+
db.session.add(s)
12+
db.session.commit()
13+
14+
15+
def get_value(key):
16+
"""
17+
Used as key-value lookup from KeyValue table
18+
19+
Parameters
20+
----------
21+
name: str
22+
name of key
23+
24+
Returns
25+
-------
26+
str
27+
value of key
28+
"""
29+
s = KeyValue.query.filter(KeyValue.key == key).first()
30+
31+
if s:
32+
return s.value
33+
else:
34+
return ''
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
2-
"display_string": "Settings",
2+
"display_string": "KeyValue",
33
"type": "hide",
44
"icons":{
55
"fa": "fa fa-envelope",
66
"boxicons": "bx bxs-leaf",
77
"file": "icon.svg"
88
},
9-
"url_prefix": "/settings",
10-
"module_name": "settings"
9+
"url_prefix": "/keyvalue",
10+
"module_name": "keyvalue"
1111
}

pythoncms/modules/box__default/settings/models.py renamed to pythoncms/modules/box__default/keyvalue/models.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
from init import db
22

33

4-
class Settings(db.Model):
5-
__tablename__ = "settings"
4+
class KeyValue(db.Model):
5+
__tablename__ = "keyvalue"
66
id = db.Column(db.Integer, primary_key=True)
77

8-
setting = db.Column(db.String(100), unique=True)
8+
key = db.Column(db.String(100), unique=True)
99
value = db.Column(db.String(100))
1010

1111
def add(self):

pythoncms/modules/box__default/settings/templates/settings/edit.html renamed to pythoncms/modules/box__default/keyvalue/templates/settings/edit.html

File renamed without changes.

0 commit comments

Comments
 (0)