diff options
author | Ted Trask <ttrask01@yahoo.com> | 2011-10-10 18:25:19 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2011-10-10 18:25:19 +0000 |
commit | b802504e41cccda64b8f903973d01897bbec7451 (patch) | |
tree | c5ced769d4b328fc3bd5d0077039f23881f8c119 | |
parent | 6e029cd625261b77c94cdf3c38139a7d0fc381c4 (diff) | |
download | acf-provisioning-b802504e41cccda64b8f903973d01897bbec7451.tar.bz2 acf-provisioning-b802504e41cccda64b8f903973d01897bbec7451.tar.xz |
Change viewclassparams to getclassvalues
-rw-r--r-- | provisioning-controller.lua | 4 | ||||
-rw-r--r-- | provisioning-getclassvalues-html.lsp | 27 | ||||
-rw-r--r-- | provisioning-listclasses-html.lsp | 4 | ||||
-rw-r--r-- | provisioning-model.lua | 71 | ||||
-rw-r--r-- | provisioning-viewclassparams-html.lsp | 48 | ||||
-rw-r--r-- | provisioning.roles | 2 |
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 |