summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2011-10-10 18:25:19 +0000
committerTed Trask <ttrask01@yahoo.com>2011-10-10 18:25:19 +0000
commitb802504e41cccda64b8f903973d01897bbec7451 (patch)
treec5ced769d4b328fc3bd5d0077039f23881f8c119
parent6e029cd625261b77c94cdf3c38139a7d0fc381c4 (diff)
downloadacf-provisioning-b802504e41cccda64b8f903973d01897bbec7451.tar.bz2
acf-provisioning-b802504e41cccda64b8f903973d01897bbec7451.tar.xz
Change viewclassparams to getclassvalues
-rw-r--r--provisioning-controller.lua4
-rw-r--r--provisioning-getclassvalues-html.lsp27
-rw-r--r--provisioning-listclasses-html.lsp4
-rw-r--r--provisioning-model.lua71
-rw-r--r--provisioning-viewclassparams-html.lsp48
-rw-r--r--provisioning.roles2
6 files changed, 64 insertions, 92 deletions
diff --git a/provisioning-controller.lua b/provisioning-controller.lua
index a4a49df..eaf5b8d 100644
--- a/provisioning-controller.lua
+++ b/provisioning-controller.lua
@@ -52,8 +52,8 @@ deleteclass = function( self )
return self:redirect_to_referrer(self.model.delete_class(self.clientdata.class_id))
end
-viewclassparams = function( self )
- return self.model.get_class_params(self.clientdata.class_id)
+getclassvalues = function( self )
+ return controllerfunctions.handle_form(self, function() return self.model.get_class_options(self.clientdata.class_id) end, self.model.get_class_values, self.clientdata, "Fetch", "Get Device Values")
end
listgroups = function( self )
diff --git a/provisioning-getclassvalues-html.lsp b/provisioning-getclassvalues-html.lsp
new file mode 100644
index 0000000..4f07db1
--- /dev/null
+++ b/provisioning-getclassvalues-html.lsp
@@ -0,0 +1,27 @@
+<% local form, viewlibrary, page_info = ...
+require("viewfunctions")
+%>
+
+<% if form.value.values then %>
+<H1>Class</H1>
+ <DL>
+<% if form.errtxt then io.write("<P CLASS='error'>" .. string.gsub(html.html_escape(form.errtxt), "\n", "<BR>") .. "</P>\n") end %>
+ <% displayitem(form.value.class_id) %>
+ <% 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>")
+ form.value.values = nil
+%>
+ </DL>
+<% end %>
+
+<H1><%= html.html_escape(form.label) %></H1>
+<%
+ form.value.values = nil
+ form.value.label = nil
+ displayform(form, nil, nil, page_info, 2)
+%>
diff --git a/provisioning-listclasses-html.lsp b/provisioning-listclasses-html.lsp
index 4d55604..82ded1f 100644
--- a/provisioning-listclasses-html.lsp
+++ b/provisioning-listclasses-html.lsp
@@ -33,8 +33,8 @@ require("viewfunctions")
<% if viewlibrary.check_permission("editclass") then %>
<%= html.link{value=page_info.script..page_info.prefix..page_info.controller.."/editclass?class_id="..v.class_id.."&redir="..page_info.orig_action, label="Edit "} %>
<% end %>
- <% if viewlibrary.check_permission("viewclassparams") then %>
- <%= html.link{value=page_info.script..page_info.prefix..page_info.controller.."/viewclassparams?class_id="..v.class_id.."&redir="..page_info.orig_action, label="Params "} %>
+ <% if viewlibrary.check_permission("getclassvalues") then %>
+ <%= html.link{value=page_info.script..page_info.prefix..page_info.controller.."/getclassvalues?class_id="..v.class_id, label="View "} %>
<% end %>
</TD>
<TD><%= html.html_escape(v.group) %></TD>
diff --git a/provisioning-model.lua b/provisioning-model.lua
index 292082c..4ada401 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -1430,60 +1430,53 @@ get_device_params = function(device_id, editable)
return output
end
-get_class_params = function(class_id)
+get_class_options = function(class_id)
local retval = {}
- retval.class_id = cfe({value=class_id or "", label="Class ID", readonly=true, seq=0})
- local errtxt = "Cannot find class"
- if class_id and class_id ~= "" then
+ retval.class_id = cfe({value=class_id or "", label="Class ID", seq=1})
+ return cfe({ type="group", value=retval, label="Provisioning Class Values" })
+end
+
+get_class_values = function(retval)
+ retval.errtxt = "Failed to find class"
+ if not validator.is_integer(retval.value.class_id.value) then
+ retval.value.class_id.errtxt = "Invalid class ID"
+ else
local res, err = pcall(function()
local connected = databaseconnect()
-- First, just check to see if class_id exists
- local sql = "SELECT * FROM provisioning_classes WHERE class_id='"..escape(class_id).."'"
+ local sql = "SELECT * FROM provisioning_classes WHERE class_id='"..escape(retval.value.class_id.value).."'"
local tmp = getselectresponse(sql)
if tmp and #tmp > 0 then
- errtxt = nil
- -- Next, get all of the param groups
- sql = "SELECT * FROM provisioning_groups"
- local tmp = getselectresponse(sql)
- -- Loop through the groups and put them into the result
- for i,g in ipairs(tmp) do
- retval[g.name] = g
- retval[g.name].label = g.name
- retval[g.name].type="group"
- end
- -- Then, get all of the parameters for this class
- sql = "SELECT g.name AS group, g.label AS grouplabel, p.param_id, p.name, p.type, p.label, p.descr, p.seq, p.regexp, p.validate, CASE WHEN g2p.value IS NOT NULL THEN g2p.value ELSE p.value END AS value "..
- "FROM (provisioning_classes t JOIN classes_to_param_groups t2g USING (class_id) JOIN provisioning_groups g USING(group_id) "..
+ retval.errtxt = nil
+ retval.value.label = cfe({ value=tmp[1].label or "", label="Label", seq=3})
+ retval.value.values = cfe({type="structure", value={}, label="Parameter Values"})
+
+ local sql = "SELECT g.name AS group, p.name, p.type, CASE WHEN g2p.value IS NOT NULL THEN g2p.value ELSE p.value END AS value "..
+ "FROM (provisioning_classes t JOIN classes_to_param_groups t2g USING(class_id) JOIN provisioning_groups g USING(group_id) "..
"JOIN param_groups_to_params g2p USING(group_id) JOIN provisioning_params p USING(param_id)) "..
- "WHERE t.class_id='"..escape(class_id).."'"
+ "WHERE t.class_id='"..escape(retval.value.class_id.value).."'"
local tmp = getselectresponse(sql)
- -- Loop through the params to figure out options and put them into the groups
+ -- Loop through the params and put them into the groups
for i,p in ipairs(tmp) do
- p.type = "text"
- p.readonly = true
- -- Groups
- if not retval[p.group].value then
- retval[p.group].value = {}
+ if p.type == "boolean" then
+ p.value = (p.value == "true")
end
- retval[p.group].label = p.grouplabel
- local value = retval[p.group].value
- value[p.name] = p
- end
- -- Finally, loop through the result and remove empty groups
- for name,val in pairs(retval) do
- if not val.value then
- retval[name] = nil
+ if not retval.value.values.value[p.group] then
+ retval.value.values.value[p.group] = {}
end
+ retval.value.values.value[p.group][p.name] = p.value
end
+ else
+ retval.value.class_id.errtxt = "Failed to find Class ID"
end
if connected then databasedisconnect() end
end)
if not res and err then
- errtxt = err
+ retval.errtxt = err
end
end
- local output = cfe({ type="group", value=retval, label="Provisioning Class Parameters", errtxt=errtxt })
- return output
+
+ return retval
end
set_editable_device_params = function(params)
@@ -1902,9 +1895,9 @@ function get_file(mac, ip, agent)
local class = callscript(determineclassscriptfile, agent, c)
if class then
- result.errtxt = nil
- result.value.values = get_class_params(class)
- result.value.values.seq = 5
+ local options = get_class_options()
+ options.value.class_id.value = class
+ result = get_class_values(options)
else
result.errtxt = "Unknown device"
end
diff --git a/provisioning-viewclassparams-html.lsp b/provisioning-viewclassparams-html.lsp
deleted file mode 100644
index e07a30f..0000000
--- a/provisioning-viewclassparams-html.lsp
+++ /dev/null
@@ -1,48 +0,0 @@
-<% local data, viewlibrary, page_info = ...
-require("viewfunctions")
-%>
-
-<%
-function displayitemcustom(myitem, header_level)
- if not myitem then return end
- if myitem.type == "group" then
- header_level = header_level or 2
- io.write("<H"..tostring(header_level)..">"..html.html_escape(myitem.label).."</H"..tostring(header_level)..">")
- if myitem.descr then io.write('<P CLASS="descr">' .. string.gsub(html.html_escape(myitem.descr), "\n", "<BR>") .. "</P>\n") end
- if myitem.errtxt then io.write('<P CLASS="error">' .. string.gsub(html.html_escape(myitem.errtxt), "\n", "<BR>") .. "</P>\n") end
- local seqorder = {}
- local order = {}
- for name,item in pairs(myitem.value) do
- if tonumber(item.seq) then
- seqorder[#seqorder+1] = {seq=tonumber(item.seq), name=name}
- else
- order[#order+1] = name
- end
- end
- table.sort(seqorder, function(a,b) if a.seq ~= b.seq then return a.seq > b.seq else return a.name > b.name end end)
- table.sort(order)
- for i,val in ipairs(seqorder) do
- table.insert(order, 1, val.name)
- end
- for x,name in ipairs(order) do
- if myitem.value[name] then
- displayitemcustom(myitem.value[name], tonumber(header_level)+1)
- end
- end
- elseif myitem.type ~= "hidden" then
- io.write("<DT")
- if myitem.errtxt then
- myitem.class = "error"
- io.write(' class="error"')
- end
- io.write(">" .. html.html_escape(myitem.label) .. "</DT>\n")
- io.write("<DD>")
- io.write(string.gsub(html.html_escape(tostring(myitem.value)), "\n", "<BR>") .. "\n")
- if myitem.descr then io.write("<P CLASS='descr'>" .. string.gsub(html.html_escape(myitem.descr), "\n", "<BR>") .. "</P>\n") end
- if myitem.errtxt then io.write("<P CLASS='error'>" .. string.gsub(html.html_escape(myitem.errtxt), "\n", "<BR>") .. "</P>\n") end
- io.write("</DD>\n")
- end
-end
-
-displayitemcustom(data, 1)
-%>
diff --git a/provisioning.roles b/provisioning.roles
index e543db3..bce76cb 100644
--- a/provisioning.roles
+++ b/provisioning.roles
@@ -1,3 +1,3 @@
EDITOR=provisioning:searchdevices,provisioning:listdevices,provisioning:editdevice,provisioning:createdevice,provisioning:duplicatedevice,provisioning:deletedevice,provisioning:searchbyextension,provisioning:searchbymac,provisioning:editdeviceparams
EXPERT=provisioning:listtemplates,provisioning:edittemplate,provisioning:createtemplate,provisioning:deletetemplate,provisioning:listclassgroups,provisioning:editclassgroup,provisioning:createclassgroup,provisioning:deleteclassgroup,provisioning:listclasses,provisioning:editclass,provisioning:createclass,provisioning:deleteclass,provisioning:listgroups,provisioning:editgroup,provisioning:creategroup,provisioning:deletegroup,provisioning:listparams,provisioning:editparam,provisioning:createparam,provisioning:deleteparam,provisioning:overridedeviceparams,provisioning:editoptions,provisioning:listfiles,provisioning:editfile,provisioning:getdevicevalues
-ADMIN=provisioning:listtemplates,provisioning:edittemplate,provisioning:createtemplate,provisioning:deletetemplate,provisioning:searchdevices,provisioning:listdevices,provisioning:editdevice,provisioning:createdevice,provisioning:duplicatedevice,provisioning:deletedevice,provisioning:listclassgroups,provisioning:editclassgroup,provisioning:createclassgroup,provisioning:deleteclassgroup,provisioning:listclasses,provisioning:editclass,provisioning:createclass,provisioning:deleteclass,provisioning:listgroups,provisioning:editgroup,provisioning:creategroup,provisioning:deletegroup,provisioning:listparams,provisioning:editparam,provisioning:createparam,provisioning:deleteparam,provisioning:editdeviceparams,provisioning:overridedeviceparams,provisioning:editoptions,provisioning:listfiles,provisioning:editfile,provisioning:searchbyextension,provisioning:searchbymac,provisioning:getdevicevalues,provisioning:dumpdatabase,provisioning:viewclassparams
+ADMIN=provisioning:listtemplates,provisioning:edittemplate,provisioning:createtemplate,provisioning:deletetemplate,provisioning:searchdevices,provisioning:listdevices,provisioning:editdevice,provisioning:createdevice,provisioning:duplicatedevice,provisioning:deletedevice,provisioning:listclassgroups,provisioning:editclassgroup,provisioning:createclassgroup,provisioning:deleteclassgroup,provisioning:listclasses,provisioning:editclass,provisioning:createclass,provisioning:deleteclass,provisioning:listgroups,provisioning:editgroup,provisioning:creategroup,provisioning:deletegroup,provisioning:listparams,provisioning:editparam,provisioning:createparam,provisioning:deleteparam,provisioning:editdeviceparams,provisioning:overridedeviceparams,provisioning:editoptions,provisioning:listfiles,provisioning:editfile,provisioning:searchbyextension,provisioning:searchbymac,provisioning:getdevicevalues,provisioning:dumpdatabase,provisioning:getclassvalues