summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2013-10-07 20:38:40 +0000
committerTed Trask <ttrask01@yahoo.com>2013-10-07 20:38:40 +0000
commit2c688f165d2f55dfb1f3f4f390d9b56b6d499e99 (patch)
tree6a75fb0a47f54970b876166dee0ffb28deefaa41
parentd8a41cc90f4ed30ab418bd662d93a1fa9cac5fb1 (diff)
downloadacf-provisioning-2c688f165d2f55dfb1f3f4f390d9b56b6d499e99.tar.bz2
acf-provisioning-2c688f165d2f55dfb1f3f4f390d9b56b6d499e99.tar.xz
Notify admin when a device has overridden group defaults
-rw-r--r--provisioning-editdeviceparams-html.lsp28
-rw-r--r--provisioning-model.lua16
2 files changed, 43 insertions, 1 deletions
diff --git a/provisioning-editdeviceparams-html.lsp b/provisioning-editdeviceparams-html.lsp
index e2f9d3c..54dad04 100644
--- a/provisioning-editdeviceparams-html.lsp
+++ b/provisioning-editdeviceparams-html.lsp
@@ -3,6 +3,23 @@ require("htmlviewfunctions")
html = require("acf.html")
%>
+<%
+-- Function to mark params that overridden the default set in a param group
+function markoverride(c)
+ if c.type == "group" then
+ for n,v in pairs(c.value) do
+ markoverride(v)
+ end
+ elseif c.groupdefault and c.value ~= c.groupdefault then
+ if c.class then
+ c.class = c.class .." groupdefaultoverride"
+ else
+ c.class = "groupdefaultoverride"
+ end
+ end
+end
+%>
+
<script type="text/javascript">
if (typeof jQuery == 'undefined') {
document.write('<script type="text/javascript" src="<%= html.html_escape(page_info.wwwprefix) %>/js/jquery-latest.js"><\/script>');
@@ -21,6 +38,7 @@ html = require("acf.html")
$(document).ready(function() {
$(".deletedevice").click(function(){ return confirm("Are you sure you want to delete this device?")});
+ $(".groupdefaultoverride").siblings().select("contains('Default:')").addClass("error");
});
</script>
@@ -36,5 +54,15 @@ html = require("acf.html")
<H1><%= html.html_escape(form.label) %></H1>
<%
form.value.device_id.readonly = "true"
+ if not form.errtxt and form.value.groupdefaultoverride.value then
+ form.errtxt = "Warning: Class defaults have been overridden for this device"
+ end
+ form.value.groupdefaultoverride = nil
+
+ -- Mark the parameters where the group default is overridden
+ for n,v in pairs(form.value) do
+ markoverride(v)
+ end
+
htmlviewfunctions.displayform(form, nil, nil, page_info, 2)
%>
diff --git a/provisioning-model.lua b/provisioning-model.lua
index a5e3fc3..8cf21ab 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -1371,6 +1371,15 @@ get_all_device_params = function(self, clientdata, action)
return get_device_params(self, clientdata.device_id, false)
end
+local checkgroupdefaultoverride = function(device_id)
+ sql = "SELECT p.param_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) JOIN provisioning_params p USING(param_id) JOIN provisioning_values v USING(param_id))"..
+ "WHERE d2t.device_id='"..provdb.escape(device_id).."' AND v.value IS NOT NULL AND g2p.value IS NOT NULL AND v.value!=g2p.value"
+ local tmp = getselectresponse(sql)
+ return (#tmp ~= 0)
+end
+
-- This function is used by scripts, do not change prototype
get_device_params = function(self, device_id, editable)
local retval = {}
@@ -1394,7 +1403,7 @@ get_device_params = function(self, device_id, editable)
retval[g.name].type="group"
end
-- Then, get all of the parameters for this device
- sql = "SELECT g.name AS group, g.label AS grouplabel, p.param_id, p.name, p.type, p.label, p.descr, p.seq, p.regexp, p.validate, CASE WHEN v.value IS NOT NULL THEN v.value WHEN g2p.value IS NOT NULL THEN g2p.value ELSE p.value END AS value, CASE WHEN g2p.value IS NOT NULL THEN g2p.value ELSE p.value END AS default "..
+ sql = "SELECT g.name AS group, g.label AS grouplabel, p.param_id, p.name, p.type, p.label, p.descr, p.seq, p.regexp, p.validate, CASE WHEN v.value IS NOT NULL THEN v.value WHEN g2p.value IS NOT NULL THEN g2p.value ELSE p.value END AS value, CASE WHEN g2p.value IS NOT NULL THEN g2p.value ELSE p.value END AS default, g2p.value AS groupdefault "..
"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) JOIN provisioning_params p USING(param_id)) LEFT JOIN provisioning_values v ON(d2t.device_id=v.device_id AND p.param_id=v.param_id AND g.name=v.group_name ) "..
"WHERE d2t.device_id='"..provdb.escape(device_id).."'"
@@ -1418,6 +1427,9 @@ get_device_params = function(self, device_id, editable)
if p.type == "boolean" then
p.value = (p.value == "true")
p.default = (p.default == "true")
+ if p.groupdefault then
+ p.groupdefault = (p.groupdefault == "true")
+ end
end
value[p.name] = p
end
@@ -1427,6 +1439,8 @@ get_device_params = function(self, device_id, editable)
retval[name] = nil
end
end
+ -- Even more finally, add in a flag to show if group defaults have been overridden
+ retval.groupdefaultoverride = cfe({ type="boolean", value=checkgroupdefaultoverride(device_id), label="Group defaults have been overridden", readonly=true })
end
if connected then provdb.databasedisconnect() end
end)