summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2011-02-28 12:33:52 +0000
committerTed Trask <ttrask01@yahoo.com>2011-02-28 12:33:52 +0000
commitec3a8ef069def94b623279885dd9d3b64ef90818 (patch)
treeacae06c22ca0ee54677dabe0a817afa6a5987984
parente839d6e272fb8481d18063a75d6e63a2409c82c7 (diff)
downloadacf-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.lua2
-rw-r--r--provisioning-editdeviceparams-html.lsp1
l---------[-rw-r--r--]provisioning-getdevicevalues-html.lsp19
-rw-r--r--provisioning-listdevices-html.lsp4
-rw-r--r--provisioning-model.lua70
-rwxr-xr-xprovisioning-scripts.lua3
-rw-r--r--provisioning-searchdevices-html.lsp19
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>
<%