summaryrefslogtreecommitdiffstats
path: root/provisioning-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2010-11-15 14:04:45 +0000
committerTed Trask <ttrask01@yahoo.com>2010-11-15 14:04:45 +0000
commiteccd3867912fcfac7ab762ff7b6e0a58bdeeb4ac (patch)
treef45cd2210cc5add9e578d25fc1b3ba3ec4bea682 /provisioning-model.lua
parent665a734bce62fceaeca2665a21d5262f7070a98a (diff)
downloadacf-provisioning-eccd3867912fcfac7ab762ff7b6e0a58bdeeb4ac.tar.bz2
acf-provisioning-eccd3867912fcfac7ab762ff7b6e0a58bdeeb4ac.tar.xz
Added ability to search for device by name, label, and template.
Diffstat (limited to 'provisioning-model.lua')
-rw-r--r--provisioning-model.lua34
1 files changed, 23 insertions, 11 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua
index 71e9434..6edd25c 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -671,6 +671,10 @@ update_group = function(group, create)
if group.value.name.value == "" then
success = false
group.value.name.errtxt = "Cannot be blank"
+ -- Group name cannot be device_id, name, or label or will mess up get_device_params
+ elseif group.value.name.value == "device_id" or group.value.name.value == "name" or group.value.name.value == "label" then
+ success = false
+ group.value.name.errtxt = "Illegal name"
end
if group.value.label.value == "" then
success = false
@@ -973,7 +977,7 @@ get_device = function(device_id)
tmp = getselectresponse(sql)
for i,c in ipairs(tmp) do
if not retval.classes.value[c.name] then
- retval.classes.value[c.name] = cfe({type="select", label=c.name, option={{value="", label=""}}})
+ retval.classes.value[c.name] = cfe({type="select", label=c.name, option={{value="", label=""}}, seq=i})
end
local class = retval.classes.value[c.name]
class.option[#class.option + 1] = {value=c.class_id, label=c.label}
@@ -1272,10 +1276,9 @@ end
search_device_values = function(parameter_id, parameter_value)
local errtxt
retval = {}
- retval.id = cfe({type="select", label="Parameter", option={}, seq=1})
+ retval.id = cfe({type="select", label="Parameter", option={"name", "label", "template_id", "template"}, seq=1})
retval.value = cfe({label="Parameter Value", seq=2})
retval.result = cfe({type="structure", value={}, label="List of Devices" })
- local group, param = string.match(parameter_id or "", "([^%.]*)%.?(.*)")
local res, err = pcall(function()
local connected = databaseconnect()
-- Get the group/parameter options
@@ -1298,18 +1301,27 @@ search_device_values = function(parameter_id, parameter_value)
retval.id.value = retval.id.option[1]
end
-- Get the devices from the DB
- if param and param ~= "" and parameter_value and parameter_value ~= "" then
+ if parameter_id and parameter_id ~= "" and parameter_value and parameter_value ~= "" then
retval.id.value = parameter_id
retval.value.value = parameter_value
- sql = "SELECT * FROM provisioning_devices WHERE device_id = ("..
- "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) 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 ) "
- if group and group ~= "" then
- sql = sql.."WHERE g.name='"..escape(group).."' AND p.name='"..escape(param).."' AND v.value='"..escape(parameter_value).."'"
+ sql = "SELECT * FROM provisioning_devices WHERE "
+ if parameter_id == "name" or parameter_id=="label" or parameter_id=="template_id" then
+ sql = sql..escape(parameter_id).."='"..escape(parameter_value).."'"
+ elseif parameter_id=="template" then
+ -- Search by template label
+ sql = sql.."template_id = (SELECT template_id FROM provisioning_templates WHERE label='"..escape(parameter_value).."')"
else
- sql = sql.."WHERE p.name='"..escape(param).."' AND v.value='"..escape(parameter_value).."'"
+ local group, param = string.match(parameter_id or "", "([^%.]*)%.?(.*)")
+ sql = "device_id = (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) 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 ) "
+ if group and group ~= "" then
+ sql = sql.."WHERE g.name='"..escape(group).."' AND p.name='"..escape(param).."' AND v.value='"..escape(parameter_value).."')"
+ else
+ sql = sql.."WHERE p.name='"..escape(param).."' AND v.value='"..escape(parameter_value).."')"
+ end
end
- sql = sql..") ORDER BY name ASC, label ASC"
+ sql = sql.." ORDER BY name ASC, label ASC"
retval.result.value = getselectresponse(sql)
end
if connected then databasedisconnect() end