From 2c290643ff330430bebafbc3253bee59f4bdb631 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Tue, 15 Feb 2022 10:15:37 -0600 Subject: [PATCH] Add AppHandler methods to get/save/delete settings --- rattail/app.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/rattail/app.py b/rattail/app.py index 66db285e..da6faf30 100644 --- a/rattail/app.py +++ b/rattail/app.py @@ -71,6 +71,8 @@ class AppHandler(object): 'vendors': 'rattail.autocomplete.vendors:VendorAutocompleter', } + setting_utctime_format = '%Y-%m-%d %H:%M:%S' + def __init__(self, config): self.config = config @@ -199,6 +201,40 @@ class AppHandler(object): value = session.execute(sql).scalar() return value + def get_setting(self, session, name, typ=None, **kwargs): + model = self.model + setting = session.query(model.Setting).get(name) + value = None if setting is None else setting.value + + if typ == 'utctime': + if value: + value = datetime.datetime.strptime(value, self.setting_utctime_format) + else: + value = None + + return value + + def save_setting(self, session, name, value, typ=None, **kwargs): + model = self.model + + if typ == 'utctime': + if value: + value = value.strftime(self.setting_utctime_format) + else: + value = None + + setting = session.query(model.Setting).get(name) + if not setting: + setting = model.Setting(name=name) + session.add(setting) + setting.value = value + + def delete_setting(self, session, name, **kwargs): + model = self.model + setting = session.query(model.Setting).get(name) + if setting: + session.delete(setting) + def get_active_stores(self, session, **kwargs): """ Returns the list of "active" stores. A store is considered