diff options
author | Ted Trask <ttrask01@yahoo.com> | 2011-02-28 12:33:52 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2011-02-28 12:33:52 +0000 |
commit | ec3a8ef069def94b623279885dd9d3b64ef90818 (patch) | |
tree | acae06c22ca0ee54677dabe0a817afa6a5987984 | |
parent | e839d6e272fb8481d18063a75d6e63a2409c82c7 (diff) | |
download | acf-provisioning-ec3a8ef069def94b623279885dd9d3b64ef90818.tar.bz2 acf-provisioning-ec3a8ef069def94b623279885dd9d3b64ef90818.tar.xz |
Removed name from provisioning_devices, changed getdevicevalues to take parameter id, comparision, value (like search)
-rw-r--r-- | provisioning-controller.lua | 2 | ||||
-rw-r--r-- | provisioning-editdeviceparams-html.lsp | 1 | ||||
l---------[-rw-r--r--] | provisioning-getdevicevalues-html.lsp | 19 | ||||
-rw-r--r-- | provisioning-listdevices-html.lsp | 4 | ||||
-rw-r--r-- | provisioning-model.lua | 70 | ||||
-rwxr-xr-x | provisioning-scripts.lua | 3 | ||||
-rw-r--r-- | provisioning-searchdevices-html.lsp | 19 |
7 files changed, 47 insertions, 71 deletions
diff --git a/provisioning-controller.lua b/provisioning-controller.lua index ab8dc2b..155e17f 100644 --- a/provisioning-controller.lua +++ b/provisioning-controller.lua @@ -113,7 +113,7 @@ overridedeviceparams = function( self ) end getdevicevalues = function( self ) - return self.model.get_device_values_by_name(self.clientdata.name) + return self.model.fetch_device_values(self.clientdata.id, self.clientdata.value, self.clientdata.comparison) end searchdevices = function( self ) diff --git a/provisioning-editdeviceparams-html.lsp b/provisioning-editdeviceparams-html.lsp index 70c6e46..947e6b8 100644 --- a/provisioning-editdeviceparams-html.lsp +++ b/provisioning-editdeviceparams-html.lsp @@ -5,7 +5,6 @@ require("viewfunctions") <H1><%= html.html_escape(form.label) %></H1> <% form.value.device_id.readonly = "true" - form.value.name.readonly = "true" form.value.label.readonly = "true" displayform(form, nil, nil, page_info, 2) %> diff --git a/provisioning-getdevicevalues-html.lsp b/provisioning-getdevicevalues-html.lsp index cb1824a..01bd9fe 100644..120000 --- a/provisioning-getdevicevalues-html.lsp +++ b/provisioning-getdevicevalues-html.lsp @@ -1,18 +1 @@ -<% local form, viewlibrary, page_info = ... %> -<% require("viewfunctions") %> - -<H1><%= html.html_escape(form.label) %></H1> -<% -if form.errtxt then io.write("<P CLASS='error'>" .. string.gsub(html.html_escape(form.errtxt), "\n", "<BR>") .. "</P>\n") end -displayitem(form.value.device_id) -displayitem(form.value.name) -displayitem(form.value.label) -%> - -<H2>Parameter Values</H2> -<% -require("session") -val = session.serialize("values", form.value.values.value) -val = string.gsub(val, "[^\n]*%{%}\n", "") -print("<pre>"..val.."</pre>") -%> +provisioning-searchdevices-html.lsp
\ No newline at end of file diff --git a/provisioning-listdevices-html.lsp b/provisioning-listdevices-html.lsp index d51fb3a..a6b0554 100644 --- a/provisioning-listdevices-html.lsp +++ b/provisioning-listdevices-html.lsp @@ -19,7 +19,6 @@ require("viewfunctions") <TABLE id="list" class="tablesorter"><THEAD> <TR style="background:#eee;font-weight:bold;"> <TH>Action</TH> - <TH>Name</TH> <TH>Label</TH> <% if page_info.action == "searchdevices" then %> <% if view.value[1] and view.value[1].group and view.value[1].group ~= "" then %> @@ -45,10 +44,9 @@ require("viewfunctions") <%= html.link{value=page_info.script..page_info.prefix..page_info.controller.."/editdeviceparams?device_id="..v.device_id.."&redir="..page_info.orig_action, label="Params "} %> <% end %> <% if viewlibrary.check_permission("getdevicevalues") then %> - <%= html.link{value=page_info.script..page_info.prefix..page_info.controller.."/getdevicevalues?name="..v.name.."&viewtype=templated", label="View "} %> + <%= html.link{value=page_info.script..page_info.prefix..page_info.controller.."/getdevicevalues?id=device_id&value="..v.device_id.."&viewtype=templated", label="View "} %> <% end %> </TD> - <TD><%= html.html_escape(v.name) %></TD> <TD><%= html.html_escape(v.label) %></TD> <% if page_info.action == "searchdevices" then %> <% if v.group and v.group ~= "" then %> diff --git a/provisioning-model.lua b/provisioning-model.lua index 041d64e..b667154 100644 --- a/provisioning-model.lua +++ b/provisioning-model.lua @@ -1114,7 +1114,7 @@ list_devices = function() -- Get the devices from the DB local res, err = pcall(function() local connected = databaseconnect() - local sql = "SELECT * FROM provisioning_devices WHERE name IS NOT NULL ORDER BY name ASC, label ASC" + local sql = "SELECT * FROM provisioning_devices ORDER BY label ASC" retval = getselectresponse(sql) if connected then databasedisconnect() end end) @@ -1128,9 +1128,8 @@ end get_device = function(device_id) local retval = {} retval.device_id = cfe({value=device_id or "", label="Device ID", seq=1}) - retval.name = cfe({label="Name", seq=2}) - retval.label = cfe({label="Label", seq=3}) - retval.classes = cfe({type="group", value={}, label="Classes", seq=5}) + retval.label = cfe({label="Label", seq=2}) + retval.classes = cfe({type="group", value={}, label="Classes", seq=3}) local errtxt local res, err = pcall(function() local classes={} @@ -1185,9 +1184,9 @@ update_device = function(device, create) local success = true local errtxt -- Validate the settings - if device.value.name.value == "" then + if device.value.label.value == "" then success = false - device.value.name.errtxt = "Cannot be blank" + device.value.label.errtxt = "Cannot be blank" end for n,c in pairs(device.value.classes.value) do success = modelfunctions.validateselect(c) and success @@ -1210,15 +1209,15 @@ update_device = function(device, create) local sql = "BEGIN TRANSACTION" runsqlcommand(sql) if create then - sql = "INSERT INTO provisioning_devices VALUES(DEFAULT, '"..escape(device.value.name.value).."', '"..escape(device.value.label.value).."')" + sql = "INSERT INTO provisioning_devices VALUES(DEFAULT, '"..escape(device.value.label.value).."')" runsqlcommand(sql, true) - sql = "SELECT device_id FROM provisioning_devices WHERE name='"..escape(device.value.name.value).."' AND label='"..escape(device.value.label.value).."'" + sql = "SELECT device_id FROM provisioning_devices WHERE label='"..escape(device.value.label.value).."'" local tmp = getselectresponse(sql, true) if tmp and #tmp>0 then device.value.device_id.value = tmp[1].device_id end else - sql = "UPDATE provisioning_devices SET (name, label) = ('"..escape(device.value.name.value).."', '"..escape(device.value.label.value).."') WHERE device_id='"..escape(device.value.device_id.value).."'" + sql = "UPDATE provisioning_devices SET (label) = ('"..escape(device.value.label.value).."') WHERE device_id='"..escape(device.value.device_id.value).."'" runsqlcommand(sql, true) sql = "DELETE FROM devices_to_classes WHERE device_id='"..escape(device.value.device_id.value).."'" runsqlcommand(sql, true) @@ -1302,7 +1301,6 @@ end get_device_params = function(device_id, editable) local retval = {} retval.device_id = cfe({value=device_id or "", label="Device ID", seq=0}) - retval.name = cfe({label="Name", seq=0}) retval.label = cfe({label="Label", seq=0}) local errtxt = "Cannot find device" if device_id and device_id ~= "" then @@ -1313,7 +1311,6 @@ get_device_params = function(device_id, editable) local tmp = getselectresponse(sql) if tmp and #tmp > 0 then errtxt = nil - retval.name.value = tmp[1].name retval.label.value = tmp[1].label -- Next, get all of the param groups sql = "SELECT * FROM provisioning_groups" @@ -1442,41 +1439,28 @@ set_device_params = function(params, editable) return params end -get_device_values_by_name = function(name) - local retval = {} - retval.device_id = cfe({label="Device ID", seq=1}) - retval.name = cfe({value=name or "", label="Name", seq=2}) - retval.label = cfe({label="Label", seq=3}) - retval.values = cfe({type="structure", value={}, label="Parameter Values", option={}, seq=5}) - local errtxt +fetch_device_values = function(parameter_id, parameter_value, comparison) + local retval = cfe({}) local res, err = pcall(function() local connected = databaseconnect() - if name and name ~= "" then - local sql = "SELECT * FROM provisioning_devices WHERE name='"..escape(name).."'" - local tmp = getselectresponse(sql) - if tmp and #tmp > 0 then - for n,v in pairs(tmp[1]) do - if retval[n] then - retval[n].value = v - end - end - - -- Next, get all of the parameter values for this device - retval.values = get_device_values(tmp[1].device_id) - retval.values.seq = 5 - else - errtxt = "Invalid device name" - end - if connected then databasedisconnect() end + 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" else - errtxt = "Invalid device name" + retval.value.values = get_device_values(retval.value.result.value[1].device_id) + retval.value.values.seq = 5 end + if connected then databasedisconnect() end end) if not res and err then - errtxt = err + retval.errtxt = err end - return cfe({ type="group", value=retval, label="Provisioning Device Parameter Values", errtxt=errtxt }) + retval.label="Provisioning Device Parameter Values" + return retval end get_device_values = function(device_id) @@ -1515,7 +1499,7 @@ end search_device_values = function(parameter_id, parameter_value, comparison) local errtxt retval = {} - retval.id = cfe({type="select", value=parameter_id or "name", label="Parameter", option={"name", "label"}, seq=1}) + 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 }) @@ -1540,13 +1524,11 @@ search_device_values = function(parameter_id, parameter_value, comparison) -- 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 "" - sql = "SELECT d.device_id, d.name, d.label, " + sql = "SELECT d.device_id, d.label, " local group, param = string.match(parameter_id or "", "([^%.]*)%.(.*)") if not group then sql = sql.."'"..escape(parameter_id).."' AS param, " - if parameter_id == "name" or parameter_id=="label" then - sql = sql.."d."..escape(parameter_id).." AS value FROM provisioning_devices d WHERE d."..escape(parameter_id) - end + 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).."'" 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 ".. @@ -1560,7 +1542,7 @@ search_device_values = function(parameter_id, parameter_value, comparison) 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).."'" end - sql = sql.." ORDER BY d.name ASC, d.label ASC" + sql = sql.." ORDER BY d.label ASC" retval.result.value = getselectresponse(sql) end if connected then databasedisconnect() end diff --git a/provisioning-scripts.lua b/provisioning-scripts.lua index ed953dc..5700b23 100755 --- a/provisioning-scripts.lua +++ b/provisioning-scripts.lua @@ -4,8 +4,7 @@ module (..., package.seeall) -- List of each device that we manage provisioning_devices = { - "CREATE TABLE provisioning_devices (device_id SERIAL PRIMARY KEY, name VARCHAR(255) UNIQUE, label VARCHAR(255))", - "CREATE INDEX devices_name_idx ON provisioning_devices (name)", + "CREATE TABLE provisioning_devices (device_id SERIAL PRIMARY KEY, label VARCHAR(255) UNIQUE)", } -- Multi-to-multi mapping of devices to classes diff --git a/provisioning-searchdevices-html.lsp b/provisioning-searchdevices-html.lsp index f0d39b0..45e44d6 100644 --- a/provisioning-searchdevices-html.lsp +++ b/provisioning-searchdevices-html.lsp @@ -2,10 +2,25 @@ require("viewfunctions") %> -<% if form.value.result then +<% if form.value.values then %> +<H1>Device</H1> + <DL> +<% if form.errtxt then io.write("<P CLASS='error'>" .. string.gsub(html.html_escape(form.errtxt), "\n", "<BR>") .. "</P>\n") end %> + <DT>Device ID</DT><DD><input class="text" type="text" value="<%= html.html_escape(form.value.result.value[1].device_id) %>" readonly="true"></DD> + <DT>Label</DT><DD><input class="text" type="text" value="<%= html.html_escape(form.value.result.value[1].label) %>" readonly="true"></DD> +<H2>Parameter Values</H2> +<% + require("session") + val = session.serialize("values", form.value.values.value) + val = string.gsub(val, "[^\n]*%{%}\n", "") + print("<pre>"..val.."</pre>") + form.value.values = nil +elseif form.value.result then local func = haserl.loadfile(page_info.viewfile:gsub("searchdevices", "listdevices")) func(form.value.result, viewlibrary, page_info, session) -end %> +%> + </DL> +<% end %> <H1><%= html.html_escape(form.label) %></H1> <% |