summaryrefslogtreecommitdiffstats
path: root/provisioning-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2011-03-01 16:10:16 +0000
committerTed Trask <ttrask01@yahoo.com>2011-03-01 16:10:16 +0000
commitcd761a32e4afafd6104a95867d3770f23229fde2 (patch)
tree068369f1c52725031ef636a6be2887486fdd7c83 /provisioning-model.lua
parent10db00827279e3cc3d8a6c2f4c89db325ae62ef4 (diff)
downloadacf-provisioning-cd761a32e4afafd6104a95867d3770f23229fde2.tar.bz2
acf-provisioning-cd761a32e4afafd6104a95867d3770f23229fde2.tar.xz
Made getdevicevalues and searchdevices into proper forms and added searchbyextension and searchbymac actions.
Diffstat (limited to 'provisioning-model.lua')
-rw-r--r--provisioning-model.lua79
1 files changed, 47 insertions, 32 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua
index b667154..d303855 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -1439,28 +1439,28 @@ set_device_params = function(params, editable)
return params
end
-fetch_device_values = function(parameter_id, parameter_value, comparison)
- local retval = cfe({})
+fetch_device_values = function(search)
local res, err = pcall(function()
local connected = databaseconnect()
- retval = search_device_values(parameter_id, parameter_value, comparison)
- if retval.errtxt then
- elseif #retval.value.result.value == 0 then
- retval.errtxt = "Device not found"
- elseif #retval.value.result.value > 1 then
- retval.errtxt = "Multiple devices found"
+ search = search_device_values(search)
+ if search.errtxt then
+ -- Just return the error
+ elseif #search.value.result.value == 0 then
+ search.errtxt = "Device not found"
+ elseif #search.value.result.value > 1 then
+ search.errtxt = "Multiple devices found"
else
- retval.value.values = get_device_values(retval.value.result.value[1].device_id)
- retval.value.values.seq = 5
+ search.value.values = get_device_values(search.value.result.value[1].device_id)
+ search.value.values.seq = 5
end
if connected then databasedisconnect() end
end)
if not res and err then
- retval.errtxt = err
+ search.errtxt = err
end
- retval.label="Provisioning Device Parameter Values"
- return retval
+ search.label="Provisioning Device Parameter Values"
+ return search
end
get_device_values = function(device_id)
@@ -1496,13 +1496,12 @@ get_device_values = function(device_id)
return cfe({type="structure", value=retval, label="Parameter Values", errtxt=errtxt})
end
-search_device_values = function(parameter_id, parameter_value, comparison)
+get_search_options = function()
local errtxt
retval = {}
- retval.id = cfe({type="select", value=parameter_id or "label", label="Parameter", option={"device_id", "label"}, seq=1})
- retval.comparison = cfe({type="select", value=comparison or "=", label="Comparison", option={"=", "!=", "~", "!~", "~*", "!*~"}, seq=2})
- retval.value = cfe({label="Parameter Value", value=parameter_value, descr="Parameter value or SQL regular expression", seq=3})
- retval.result = cfe({type="structure", value={}, label="List of Devices", seq=4 })
+ retval.id = cfe({type="select", value="label", label="Parameter", option={"device_id", "label"}, seq=1})
+ retval.comparison = cfe({type="select", value="=", label="Comparison", option={"=", "!=", "~", "!~", "~*", "!*~"}, seq=2})
+ retval.value = cfe({label="Parameter Value", descr="Parameter value or SQL regular expression", seq=3})
local res, err = pcall(function()
local connected = databaseconnect()
-- Get the group/parameter options
@@ -1521,15 +1520,29 @@ search_device_values = function(parameter_id, parameter_value, comparison)
for i,o in ipairs(blankopt) do
retval.id.option[#retval.id.option + 1] = o
end
- -- Get the devices from the DB
- if parameter_id and modelfunctions.validateselect(retval.id) and modelfunctions.validateselect(retval.comparison) then
- parameter_value = parameter_value or ""
+ if connected then databasedisconnect() end
+ end)
+ if not res and err then
+ errtxt = err
+ end
+ return cfe({type="group", value=retval, label="Device Search", errtxt=errtxt})
+end
+
+search_device_values = function(search)
+ local success = true
+ success = modelfunctions.validateselect(search.value.id) and success
+ success = modelfunctions.validateselect(search.value.comparison) and success
+ if success then
+ retval.result = cfe({type="structure", value={}, label="List of Devices", seq=4 })
+ local res, err = pcall(function()
+ local connected = databaseconnect()
+ -- Get the devices from the DB
sql = "SELECT d.device_id, d.label, "
- local group, param = string.match(parameter_id or "", "([^%.]*)%.(.*)")
+ local group, param = string.match(search.value.id.value, "([^%.]*)%.(.*)")
if not group then
- sql = sql.."'"..escape(parameter_id).."' AS param, "
- sql = sql.."d."..escape(parameter_id).." AS value FROM provisioning_devices d WHERE d."..escape(parameter_id)
- sql = sql..retval.comparison.value.."'"..escape(parameter_value).."'"
+ sql = sql.."'"..search.value.id.value.."' AS param, "
+ sql = sql.."d."..search.value.id.value.." AS value FROM provisioning_devices d WHERE d."..search.value.id.value
+ sql = sql..search.value.comparison.value.."'"..escape(search.value.value.value).."'"
else
sql = sql.."g.name as group, p.name as param, 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 FROM "..
"provisioning_devices d JOIN devices_to_classes d2t USING(device_id) JOIN provisioning_classes t USING(class_id) JOIN classes_to_param_groups t2g USING(class_id) "..
@@ -1540,17 +1553,19 @@ search_device_values = function(parameter_id, parameter_value, comparison)
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"..retval.comparison.value.."'"..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"..search.value.comparison.value.."'"..escape(search.value.value.value).."'"
end
sql = sql.." ORDER BY d.label ASC"
- retval.result.value = getselectresponse(sql)
+ search.value.result.value = getselectresponse(sql)
+ if connected then databasedisconnect() end
+ end)
+ if not res and err then
+ search.errtxt = err
end
- if connected then databasedisconnect() end
- end)
- if not res and err then
- errtxt = err
+ else
+ search.errtxt = "Search failed"
end
- return cfe({type="group", value=retval, label="Device Search", errtxt=errtxt})
+ return search
end
get_param_options = function(param_id)