summaryrefslogtreecommitdiffstats
path: root/provisioning-model.lua
diff options
context:
space:
mode:
authorTed Trask <ttrask01@yahoo.com>2010-10-28 14:08:15 +0000
committerTed Trask <ttrask01@yahoo.com>2010-10-28 14:08:15 +0000
commit570fd742bb0bcf2b3a0cd51a1222e42e05ac8f77 (patch)
treea485af0742d0d3ace9c76f5472371b31fe604d50 /provisioning-model.lua
parent5c93a38c2cc263727be345ff5a197ea9bc78595b (diff)
downloadacf-provisioning-570fd742bb0bcf2b3a0cd51a1222e42e05ac8f77.tar.bz2
acf-provisioning-570fd742bb0bcf2b3a0cd51a1222e42e05ac8f77.tar.xz
Modified get/update device/class to device up classes/groups by name to make selection clearer.
Diffstat (limited to 'provisioning-model.lua')
-rw-r--r--provisioning-model.lua52
1 files changed, 37 insertions, 15 deletions
diff --git a/provisioning-model.lua b/provisioning-model.lua
index 6d3d480..0142910 100644
--- a/provisioning-model.lua
+++ b/provisioning-model.lua
@@ -432,12 +432,13 @@ end
get_class = function(class_id)
local retval = {}
- retval.class_id = cfe({value=class_id or "", label="Class ID"})
- retval.name = cfe({label="Name"})
- retval.label = cfe({label="Label"})
- retval.groups = cfe({type="multi", value={}, label="Parameter Groups", option={}})
+ retval.class_id = cfe({value=class_id or "", label="Class ID", seq=1})
+ retval.name = cfe({label="Name", seq=2})
+ retval.label = cfe({label="Label", seq=3})
+ retval.groups = cfe({type="group", value={}, label="Parameter Groups", seq=4})
local errtxt
local res, err = pcall(function()
+ local groups = {}
local connected = databaseconnect()
if class_id and class_id ~= "" then
local sql = "SELECT * FROM provisioning_classes WHERE class_id='"..escape(class_id).."'"
@@ -453,14 +454,22 @@ get_class = function(class_id)
sql = "SELECT group_id FROM classes_to_param_groups WHERE class_id="..escape(class_id)
tmp = getselectresponse(sql)
for i,g in ipairs(tmp) do
- retval.groups.value[#retval.groups.value + 1] = g.group_id
+ groups[g.group_id] = true
end
end
-- Finally, get the paramgroup options
sql = "SELECT group_id, name, label FROM provisioning_groups ORDER BY label ASC"
tmp = getselectresponse(sql)
for i,g in ipairs(tmp) do
- retval.groups.option[#retval.groups.option + 1] = {value=g.group_id, label=g.label, name=g.name}
+ if not retval.groups.value[g.name] then
+ -- Use this line to allow blank selection: retval.groups.value[g.name] = cfe({type="select", label=g.name, option={{value="", label=""}}})
+ retval.groups.value[g.name] = cfe({type="select", label=g.name, option={}})
+ end
+ local group = retval.groups.value[g.name]
+ group.option[#group.option + 1] = {value=g.group_id, label=g.label}
+ if groups[g.group_id] then
+ group.value = g.group_id
+ end
end
if connected then databasedisconnect() end
end)
@@ -479,7 +488,6 @@ update_class = function(class, create)
local success = true
local errtxt
-- Validate the settings
- success = modelfunctions.validatemulti(class.value.groups)
if class.value.name.value == "" then
success = false
class.value.name.errtxt = "Cannot be blank"
@@ -488,6 +496,9 @@ update_class = function(class, create)
success = false
class.value.label.errtxt = "Cannot be blank"
end
+ for n,g in pairs(class.value.groups.value) do
+ success = modelfunctions.validateselect(g) and success
+ end
if success then
local res, err = pcall(function()
local connected = databaseconnect()
@@ -517,8 +528,8 @@ update_class = function(class, create)
runsqlcommand(sql, true)
end
-- Insert the class to group entries
- for i,g in ipairs(class.value.groups.value) do
- sql = "INSERT INTO classes_to_param_groups VALUES('"..escape(class.value.class_id.value).."', '"..escape(g).."')"
+ for n,g in pairs(class.value.groups.value) do
+ sql = "INSERT INTO classes_to_param_groups VALUES('"..escape(class.value.class_id.value).."', '"..escape(g.value).."')"
runsqlcommand(sql, true)
end
@@ -926,9 +937,10 @@ get_device = function(device_id)
retval.name = cfe({label="Name", seq=2})
retval.label = cfe({label="Label", seq=3})
retval.template_id = cfe({type="select", label="Template", option={}, seq=4})
- retval.classes = cfe({type="multi", value={}, label="Classes", option={}, seq=5})
+ retval.classes = cfe({type="group", value={}, label="Classes", seq=5})
local errtxt
local res, err = pcall(function()
+ local classes={}
local connected = databaseconnect()
if device_id and device_id ~= "" then
local sql = "SELECT * FROM provisioning_devices WHERE device_id='"..escape(device_id).."'"
@@ -944,7 +956,7 @@ get_device = function(device_id)
sql = "SELECT class_id FROM devices_to_classes WHERE device_id="..escape(device_id)
tmp = getselectresponse(sql)
for i,g in ipairs(tmp) do
- retval.classes.value[#retval.classes.value + 1] = g.class_id
+ classes[g.class_id] = true
end
end
-- Next, get the template options
@@ -957,7 +969,15 @@ get_device = function(device_id)
sql = "SELECT * FROM provisioning_classes ORDER BY class_id ASC"
tmp = getselectresponse(sql)
for i,c in ipairs(tmp) do
- retval.classes.option[#retval.classes.option + 1] = {value=c.class_id, label=c.label}
+ if not retval.classes.value[c.name] then
+ -- Use this line to allow blank selection: retval.classes.value[c.name] = cfe({type="select", label=c.name, option={{value="", label=""}}})
+ retval.classes.value[c.name] = cfe({type="select", label=c.name, option={}})
+ end
+ local class = retval.classes.value[c.name]
+ class.option[#class.option + 1] = {value=c.class_id, label=c.label}
+ if classes[c.class_id] then
+ class.value = c.class_id
+ end
end
if connected then databasedisconnect() end
end)
@@ -977,11 +997,13 @@ update_device = function(device, create)
local errtxt
-- Validate the settings
success = modelfunctions.validateselect(device.value.template_id)
- success = modelfunctions.validatemulti(device.value.classes) and success
if device.value.name.value == "" then
success = false
device.value.name.errtxt = "Cannot be blank"
end
+ for n,c in pairs(device.value.classes.value) do
+ success = modelfunctions.validateselect(c) and success
+ end
if success then
local res, err = pcall(function()
local connected = databaseconnect()
@@ -1011,8 +1033,8 @@ update_device = function(device, create)
runsqlcommand(sql, true)
end
-- Insert the device to class entries
- for i,c in ipairs(device.value.classes.value) do
- sql = "INSERT INTO devices_to_classes VALUES('"..escape(device.value.device_id.value).."', '"..escape(c).."')"
+ for n,c in pairs(device.value.classes.value) do
+ sql = "INSERT INTO devices_to_classes VALUES('"..escape(device.value.device_id.value).."', '"..escape(c.value).."')"
runsqlcommand(sql, true)
end