From 764e1e3245fc6d1deac9042fad128362be59d042 Mon Sep 17 00:00:00 2001 From: jesopo Date: Wed, 5 Dec 2018 12:13:29 +0000 Subject: Prevent setting values to array settings and prevent adding to non-array settings --- modules/set.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'modules/set.py') diff --git a/modules/set.py b/modules/set.py index 24a234e6..d7310cc3 100644 --- a/modules/set.py +++ b/modules/set.py @@ -7,15 +7,22 @@ CHANNELSETADD_HELP = ("Add to a specified channel setting for the " class Module(ModuleManager.BaseModule): def _set(self, category, event, target, array): settings = self.exports.get_all(category) - settings_dict = dict([(setting["setting"], setting - ) for setting in settings]) + settings_dict = {setting["setting"]: setting for setting in settings} if len(event["args_split"]) > 1: setting = event["args_split"][0].lower() if setting in settings_dict: + setting_options = settings_dict[setting] + if not setting_options.get("array", False) == array: + if array: + raise utils.EventError( + "Can't add to a non-array setting") + else: + raise utils.EventError( + "You can only 'add' to an array setting") + value = " ".join(event["args_split"][1:]) - value = settings_dict[setting].get("validate", - lambda x: x)(value) + value = setting_options.get("validate", lambda x: x)(value) if not value == None: if array: -- cgit v1.3.1-10-gc9f91