diff options
Diffstat (limited to 'provisioning-model.lua')
-rw-r--r-- | provisioning-model.lua | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua index 6e91b6f..f32d34c 100644 --- a/provisioning-model.lua +++ b/provisioning-model.lua @@ -901,6 +901,7 @@ update_group = function(self, group, action, create) if success then local res, err = pcall(function() local connected = databaseconnect() + local devices = {} if not create then local sql = "SELECT * FROM provisioning_groups WHERE group_id='"..provdb.escape(group.value.group_id.value).."'" local tmp = getselectresponse(sql) @@ -908,6 +909,16 @@ update_group = function(self, group, action, create) success = false errtxt = "Group does not exist" end + + -- Find all devices that have this group so we can notify on a param default value change + sql = "SELECT d2t.device_id ".. + "FROM (devices_to_classes d2t JOIN provisioning_classes t USING(class_id) JOIN classes_to_param_groups t2g USING (class_id)) ".. + "WHERE t2g.group_id='"..provdb.escape(group.value.group_id.value).."'" + devices = getselectresponse(sql) + -- Make sure the current params are saved for each device + for i,d in ipairs(devices) do + if not saved_device_params[d.device_id] then get_device_params(self, d.device_id) end + end end if success then local sql = "BEGIN TRANSACTION" @@ -947,6 +958,13 @@ update_group = function(self, group, action, create) sql = "COMMIT" runsqlcommand(sql) + + -- Notify the devices that their params might have changed + for i,d in ipairs(devices) do + local tmp = saved_device_params[d.device_id] + local p = get_device_params(self, d.device_id) + callscript(self, updatedeviceparamsscriptfile, p, tmp) + end end if connected then provdb.databasedisconnect() end end) @@ -1090,6 +1108,7 @@ update_param = function(self, param, action, create) if success then local res, err = pcall(function() local connected = databaseconnect() + local devices = {} if not create then local sql = "SELECT * FROM provisioning_params WHERE param_id='"..provdb.escape(param.value.param_id.value).."'" local tmp = getselectresponse(sql) @@ -1097,6 +1116,16 @@ update_param = function(self, param, action, create) success = false errtxt = "Param does not exist" end + + -- Find all devices that have this param so we can notify on a param default value change + sql = "SELECT d2t.device_id FROM (devices_to_classes d2t JOIN provisioning_classes t USING(class_id) JOIN classes_to_param_groups t2g USING (class_id) ".. + "JOIN provisioning_groups g USING(group_id) JOIN param_groups_to_params g2p USING(group_id))".. + "WHERE g2p.param_id='"..provdb.escape(param.value.param_id.value).."'" + devices = getselectresponse(sql) + -- Make sure the current params are saved for each device + for i,d in ipairs(devices) do + if not saved_device_params[d.device_id] then get_device_params(self, d.device_id) end + end end if success then local sql = "BEGIN TRANSACTION" @@ -1118,6 +1147,13 @@ update_param = function(self, param, action, create) sql = "COMMIT" runsqlcommand(sql) + + -- Notify the devices that their params might have changed + for i,d in ipairs(devices) do + local tmp = saved_device_params[d.device_id] + local p = get_device_params(self, d.device_id) + callscript(self, updatedeviceparamsscriptfile, p, tmp) + end end if connected then provdb.databasedisconnect() end end) |