summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--provisioning-listdevices-html.lsp16
-rw-r--r--provisioning-model.lua31
2 files changed, 33 insertions, 14 deletions
diff --git a/provisioning-listdevices-html.lsp b/provisioning-listdevices-html.lsp
index 0b646c0..40da260 100644
--- a/provisioning-listdevices-html.lsp
+++ b/provisioning-listdevices-html.lsp
@@ -20,6 +20,13 @@ require("viewfunctions")
<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 %>
+ <TH>Group</TH>
+ <% end %>
+ <TH>Param</TH>
+ <TH>Value</TH>
+ <% end %>
</TR>
</THEAD><TBODY>
<% for k,v in ipairs( view.value ) do %>
@@ -42,6 +49,13 @@ require("viewfunctions")
</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 %>
+ <TD><%= html.html_escape(v.group) %></TD>
+ <% end %>
+ <TD><%= html.html_escape(v.param) %></TD>
+ <TD><%= html.html_escape(v.value) %></TD>
+ <% end %>
</TR>
<% end %>
</TBODY>
@@ -55,6 +69,6 @@ require("viewfunctions")
<% end %>
</DL>
-<% if viewlibrary and viewlibrary.dispatch_component and viewlibrary.check_permission("createdevice") then
+<% if page_info.action == "listdevices" and viewlibrary and viewlibrary.dispatch_component and viewlibrary.check_permission("createdevice") then
viewlibrary.dispatch_component("createdevice")
end %>
diff --git a/provisioning-model.lua b/provisioning-model.lua
index e517907..1c063fd 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -1292,27 +1292,32 @@ 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 * FROM provisioning_devices WHERE "
- 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"..retval.comparison.value.."'"..escape(parameter_value).."')"
+ sql = "SELECT d.device_id, d.name, d.label, d.template_id, "
+ 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)
+ elseif parameter_id=="template_id" then
+ sql = sql.."d.template_id AS value FROM provisioning_devices d WHERE CAST(d.template_id AS text)"
+ elseif parameter_id=="template" then
+ -- Search by template label
+ sql = sql.."t.label AS value FROM provisioning_devices d JOIN provisioning_templates t USING(template_id) WHERE t.label"
+ end
+ sql = sql..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) "..
- "JOIN provisioning_groups g USING(group_id) JOIN param_groups_to_params g2p USING(group_id) JOIN provisioning_params p USING(param_id)) "..
+ 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 "..
+ "provisioning_devices d JOIN devices_to_classes d2t USING(device_id) JOIN provisioning_classes t USING(class_id) 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) "..
"LEFT JOIN provisioning_values v ON(d2t.device_id=v.device_id AND p.param_id=v.param_id AND g.name=v.group_name ) "
if group and group ~= "" then
sql = sql.."WHERE g.name='"..escape(group).."' AND"
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"..retval.comparison.value.."'"..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"
+ sql = sql.." ORDER BY d.name ASC, d.label ASC"
retval.result.value = getselectresponse(sql)
end
if connected then databasedisconnect() end