Feature/overwritten settings (#1304)
prevent settings initalization from skills __init__ to override settings.json valuespull/1309/head
parent
f61ccfeed7
commit
4b7d6e5526
|
@ -130,6 +130,7 @@ def load_skill(skill_descriptor, emitter, skill_id, BLACKLISTED_SKILLS=None):
|
||||||
callable(skill_module.create_skill)):
|
callable(skill_module.create_skill)):
|
||||||
# v2 skills framework
|
# v2 skills framework
|
||||||
skill = skill_module.create_skill()
|
skill = skill_module.create_skill()
|
||||||
|
skill.settings.allow_overwrite = True
|
||||||
skill.bind(emitter)
|
skill.bind(emitter)
|
||||||
skill.skill_id = skill_id
|
skill.skill_id = skill_id
|
||||||
skill.load_data_files(dirname(skill_descriptor['info'][1]))
|
skill.load_data_files(dirname(skill_descriptor['info'][1]))
|
||||||
|
|
|
@ -80,6 +80,12 @@ class SkillSettings(dict):
|
||||||
|
|
||||||
def __init__(self, directory, name):
|
def __init__(self, directory, name):
|
||||||
super(SkillSettings, self).__init__()
|
super(SkillSettings, self).__init__()
|
||||||
|
# when skills try to instantiate settings
|
||||||
|
# in __init__, it can erase the settings saved
|
||||||
|
# on disk (settings.json). So this prevents that
|
||||||
|
# This is set to true in core.py after skill init
|
||||||
|
self.allow_overwrite = False
|
||||||
|
|
||||||
self.api = DeviceApi()
|
self.api = DeviceApi()
|
||||||
self.config = ConfigurationManager.get()
|
self.config = ConfigurationManager.get()
|
||||||
self.name = name
|
self.name = name
|
||||||
|
@ -93,9 +99,8 @@ class SkillSettings(dict):
|
||||||
self._device_identity = None
|
self._device_identity = None
|
||||||
self._api_path = None
|
self._api_path = None
|
||||||
self._user_identity = None
|
self._user_identity = None
|
||||||
# if settingsmeta.json exists
|
|
||||||
# this block of code is a control flow for
|
# if settingsmeta exist
|
||||||
# different scenarios that may arises with settingsmeta
|
|
||||||
if isfile(self._meta_path):
|
if isfile(self._meta_path):
|
||||||
self._poll_skill_settings()
|
self._poll_skill_settings()
|
||||||
self.load_skill_settings()
|
self.load_skill_settings()
|
||||||
|
@ -156,6 +161,7 @@ class SkillSettings(dict):
|
||||||
|
|
||||||
def __setitem__(self, key, value):
|
def __setitem__(self, key, value):
|
||||||
""" Add/Update key. """
|
""" Add/Update key. """
|
||||||
|
if self.allow_overwrite or key not in self:
|
||||||
return super(SkillSettings, self).__setitem__(key, value)
|
return super(SkillSettings, self).__setitem__(key, value)
|
||||||
|
|
||||||
def _load_settings_meta(self):
|
def _load_settings_meta(self):
|
||||||
|
|
Loading…
Reference in New Issue