summaryrefslogtreecommitdiffstats
path: root/provisioning-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2010-11-26 17:43:32 +0000
committerTed Trask <ttrask01@yahoo.com>2010-11-26 17:43:32 +0000
commit335a55e50948dfb9721986482cbe6c7221b84019 (patch)
treef1266fa6e27547b60abed896d0110bb4eecca47b /provisioning-model.lua
parent4e53685bed60e2163ea499385448c255ce5949a7 (diff)
downloadacf-provisioning-335a55e50948dfb9721986482cbe6c7221b84019.tar.bz2
acf-provisioning-335a55e50948dfb9721986482cbe6c7221b84019.tar.xz
Adjusted search to include != and regular expressions comparisons.
Diffstat (limited to 'provisioning-model.lua')
-rw-r--r--provisioning-model.lua27
1 files changed, 13 insertions, 14 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua
index ffc52e9..346eef3 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -1244,12 +1244,13 @@ get_device_values = function(name)
return cfe({ type="group", value=retval, label="Provisioning Device Parameter Values", errtxt=errtxt })
end
-search_device_values = function(parameter_id, parameter_value)
+search_device_values = function(parameter_id, parameter_value, comparison)
local errtxt
retval = {}
- 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" })
+ retval.id = cfe({type="select", value=parameter_id or "name", label="Parameter", option={"name", "label", "template_id", "template"}, seq=1})
+ retval.comparison = cfe({type="select", value=comparison or "=", label="Comparison", option={"=", "!=", "~", "!~", "~*", "!*~"}, seq=2})
+ retval.value = cfe({label="Parameter Value", value=parameter_value, seq=3})
+ retval.result = cfe({type="structure", value={}, label="List of Devices", seq=4 })
local res, err = pcall(function()
local connected = databaseconnect()
-- Get the group/parameter options
@@ -1268,19 +1269,17 @@ search_device_values = function(parameter_id, parameter_value)
for i,o in ipairs(blankopt) do
retval.id.option[#retval.id.option + 1] = o
end
- if #tmp>1 then
- retval.id.value = retval.id.option[1]
- end
-- Get the devices from the DB
- if parameter_id and parameter_id ~= "" and parameter_value and parameter_value ~= "" then
- retval.id.value = parameter_id
- retval.value.value = parameter_value
+ if parameter_id and modelfunctions.validateselect(retval.id) and modelfunctions.validateselect(retval.comparison) then
+ parameter_value = parameter_value or ""
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).."'"
+ if parameter_id == "name" or parameter_id=="label" then
+ sql = sql..escape(parameter_id)..retval.comparison.value.."'"..escape(parameter_value).."'"
+ elseif parameter_id=="template_id" then
+ sql = sql.."CAST(template_id AS text)"..retval.comparison.value.."'"..escape(parameter_value).."'"
elseif parameter_id=="template" then
-- Search by template label
- sql = sql.."template_id IN (SELECT template_id FROM provisioning_templates WHERE label='"..escape(parameter_value).."')"
+ sql = sql.."template_id IN (SELECT template_id FROM provisioning_templates WHERE label"..retval.comparison.value.."'"..escape(parameter_value).."')"
else
local group, param = string.match(parameter_id or "", "([^%.]*)%.?(.*)")
sql = sql.."device_id IN (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) "..
@@ -1291,7 +1290,7 @@ search_device_values = function(parameter_id, parameter_value)
else
sql = sql.."WHERE"
end
- sql = sql.." p.name='"..escape(param).."' AND CASE WHEN v.value IS NOT NULL THEN v.value WHEN g2p.value IS NOT NULL THEN g2p.value ELSE p.value END='"..escape(parameter_value).."')"
+ sql = sql.." p.name='"..escape(param).."' AND CASE WHEN v.value IS NOT NULL THEN v.value WHEN g2p.value IS NOT NULL THEN g2p.value ELSE p.value END"..retval.comparison.value.."'"..escape(parameter_value).."')"
end
sql = sql.." ORDER BY name ASC, label ASC"
retval.result.value = getselectresponse(sql)