summaryrefslogtreecommitdiffstats
path: root/aconf/model
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-03-19 13:38:32 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-03-25 09:02:58 +0200
commitbdcf6ff099f1acd7e2370a2478b5b4a5eac7dea0 (patch)
tree74f1df86d63cecef301690c61cd527520129b437 /aconf/model
parentc9f1d41a42dc2fedc8074e009cd3ac1432db48d9 (diff)
downloadaconf-bdcf6ff099f1acd7e2370a2478b5b4a5eac7dea0.tar.bz2
aconf-bdcf6ff099f1acd7e2370a2478b5b4a5eac7dea0.tar.xz
model: allow deletion of models from non-editable collections
requires defining the is_removable method for the model
Diffstat (limited to 'aconf/model')
-rw-r--r--aconf/model/node.lua9
1 files changed, 5 insertions, 4 deletions
diff --git a/aconf/model/node.lua b/aconf/model/node.lua
index 9a4f477..741aaeb 100644
--- a/aconf/model/node.lua
+++ b/aconf/model/node.lua
@@ -111,15 +111,16 @@ function M.TreeNode:init(context, params)
return getmetatable(next).fetch(path, create)
end
- function mt.removable() return true end
+ function mt.removable() end
function mt.value_removable(v)
- return not isinstance(v, M.TreeNode) or getmetatable(v).removable()
+ if isinstance(v, M.TreeNode) then return getmetatable(v).removable() end
end
local function key_removable(k)
- return params.editable and
- mt.value_removable(mt.load(k, {dereference=false}))
+ local res = mt.value_removable(mt.load(k, {dereference=false}))
+ if res == nil then return params.editable end
+ return res
end
function mt.check_removable(k, v)