summaryrefslogtreecommitdiffstats
path: root/acf/transaction/init.lua
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-03-15 10:05:18 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-03-15 10:05:18 +0200
commitfe648009635c8b744c51303020fd0b3b9cfe83c9 (patch)
treed7a18b2aef102b202b91e2715ba69f7bcd905801 /acf/transaction/init.lua
parentd0071b9d4ad1c595965cbce982ba9edee5f4176a (diff)
downloadacf2-fe648009635c8b744c51303020fd0b3b9cfe83c9.tar.bz2
acf2-fe648009635c8b744c51303020fd0b3b9cfe83c9.tar.xz
fix bugs in validation and deletion
Diffstat (limited to 'acf/transaction/init.lua')
-rw-r--r--acf/transaction/init.lua20
1 files changed, 12 insertions, 8 deletions
diff --git a/acf/transaction/init.lua b/acf/transaction/init.lua
index 99b8b9d..eb92c34 100644
--- a/acf/transaction/init.lua
+++ b/acf/transaction/init.lua
@@ -123,7 +123,9 @@ function Transaction:commit()
self:check()
local errors = ErrorDict()
- for path, func in pairs(self.validate) do errors:collect(func) end
+ for path, func in pairs(self.validate) do
+ if not self.deleted[path] then errors:collect(func) end
+ end
errors:raise()
local mods = {}
@@ -147,15 +149,17 @@ function Transaction:commit()
end
local function insert_del(path)
- local value = self.backend:get(path)
- if type(value) == 'table' then
- for _, child in ipairs(value) do
- local cp = pth.join(path, child)
- assert(self.deleted[cp])
- if not handled[cp] then insert_del(cp) end
+ if not handled[path] then
+ local value = self.backend:get(path)
+ if type(value) == 'table' then
+ for _, child in ipairs(value) do
+ local cp = pth.join(path, child)
+ assert(self.deleted[cp])
+ insert_del(cp)
+ end
end
+ insert(path)
end
- insert(path)
end
for path, deleted in pairs(self.deleted) do