From 2f3772f3bf3792f8733a3951e8f02c54fa67b67f Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 11 Nov 2021 22:16:28 +1100 Subject: [PATCH] define "requires_restart" function for global setting --- InvenTree/common/models.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index 374cac24af..5b01a43ac9 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -545,6 +545,17 @@ class InvenTreeSetting(BaseInvenTreeSetting): even if that key does not exist. """ + def save(self, *args, **kwargs): + """ + When saving a global setting, check to see if it requires a server restart. + If so, set the "SERVER_RESTART_REQUIRED" setting to True + """ + + super().save() + + if self.requires_restart(): + InvenTreeSetting.set_setting('SERVER_REQUIRES_RESTART', True, None) + """ Dict of all global settings values: @@ -563,6 +574,14 @@ class InvenTreeSetting(BaseInvenTreeSetting): GLOBAL_SETTINGS = { + 'SERVER_RESTART_REQUIRED': { + 'name': _('Restart required'), + 'description': _('A setting has been changed which requires a server restart'), + 'default': False, + 'validator': bool, + 'hidden': True, + }, + 'INVENTREE_INSTANCE': { 'name': _('InvenTree Instance Name'), 'default': 'InvenTree server', @@ -936,6 +955,18 @@ class InvenTreeSetting(BaseInvenTreeSetting): return self.__class__.get_setting(self.key) + def requires_restart(self): + """ + Return True if this setting requires a server restart after changing + """ + + options = InvenTreeSetting.GLOBAL_SETTINGS.get(self.key, None) + + if options: + return options.get('requires_restart', False) + else: + return False + class InvenTreeUserSetting(BaseInvenTreeSetting): """