diff options
author | Ted Trask <ttrask01@yahoo.com> | 2010-11-26 17:43:32 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2010-11-26 17:43:32 +0000 |
commit | 335a55e50948dfb9721986482cbe6c7221b84019 (patch) | |
tree | f1266fa6e27547b60abed896d0110bb4eecca47b /provisioning-model.lua | |
parent | 4e53685bed60e2163ea499385448c255ce5949a7 (diff) | |
download | acf-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.lua | 27 |
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) |