diff options
author | Ted Trask <ttrask01@yahoo.com> | 2010-04-05 14:50:23 +0000 |
---|---|---|
committer | Ted Trask <ttrask01@yahoo.com> | 2010-04-05 14:50:23 +0000 |
commit | 7d9b79ae7878931e89c4a3f8c2a6560693022815 (patch) | |
tree | 4a4edf1de3d23fbd1ae5b0818bb6482cb369fa12 /did-model.lua | |
parent | 2c43d7669d917f3acad54650391429e7e0820646 (diff) | |
download | acf-did-7d9b79ae7878931e89c4a3f8c2a6560693022815.tar.bz2 acf-did-7d9b79ae7878931e89c4a3f8c2a6560693022815.tar.xz |
Call blank extension 'Restricted' in assigndefinition, extremely detailed change descriptions.
Diffstat (limited to 'did-model.lua')
-rw-r--r-- | did-model.lua | 66 |
1 files changed, 53 insertions, 13 deletions
diff --git a/did-model.lua b/did-model.lua index a84144c..c9256c8 100644 --- a/did-model.lua +++ b/did-model.lua @@ -341,18 +341,6 @@ local updaterules = function(did, rules) sql = table.concat(sql, "") res = assert (con:execute(sql)) end - if #rules > 1 then - res = {} - for i,rule in ipairs(rules) do - res[#res+1] = rule.extension - end - res = "Set DID "..did.." to extensions "..table.concat(res, ", ") - elseif #rules == 1 then - res = "Set DID "..did.." to extension "..rules[1].extension - else - res = "Cleared DID "..did - end - logme(res) return res end @@ -590,6 +578,48 @@ local function adddash(did) end end +local describechange = function(olddef, newdef) + local changes = {} + for name,val in pairs(newdef) do + if name ~= "did" and name ~= "rules" and val ~= (olddef[name] or "") then + changes[#changes+1] = name.." from '"..(olddef[name] or "").."' to '"..val.."'" + end + end + + if #changes > 0 then + return table.concat(changes, " ") + else + return nil + end +end + +local describeruleschange = function(oldrules, newrules) + local changes = {} + for i,rule in ipairs(newrules) do + rule2 = oldrules[i] or {did=rule.did, dayofweek="0000000"} + for name,val in pairs(rule) do + if val ~= (rule2[name] or "") then + changes[#changes+1] = "Rule "..i.." "..name.." from '"..(rule2[name] or "").."' to '"..val.."'" + end + end + end + for i=#newrules+1,#oldrules do + local values = {} + for name,val in pairs(oldrules[i]) do + if name ~= "did" and not (name == "dayofweek" and val == "0000000") then + values[#values+1] = name.." = "..val + end + end + changes[#changes+1] = "Rule "..i.." deleted ("..table.concat(values, ", ")..")" + end + + if #changes > 0 then + return table.concat(changes, " ") + else + return nil + end +end + -- ################################################################################ -- PUBLIC FUNCTIONS @@ -741,12 +771,22 @@ function savedefinition(defin, exists) elseif #def == 0 and exists then defin.value.did.errtxt = "DID Number does not exist" else + local descr = {} + descr[#descr+1] = describechange(def[1], definition) if exists then updatedefinitionentry(definition) else insertdefinitionentry(definition) end - defin.descr = updaterules(defin.value.did.value, rules) + local oldrules = listrules(definition.did) + updaterules(defin.value.did.value, rules) + descr[#descr+1] = describeruleschange(oldrules, listrules(definition.did)) + if #descr > 0 then + defin.descr = "Updated DID "..definition.did.." "..table.concat(descr, " ") + logme(defin.descr) + else + defin.descr = "Updated DID "..definition.did.." no change" + end defin.errtxt = nil end if connected then databasedisconnect() end |