summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-02-21 11:13:17 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2014-02-21 13:13:28 +0200
commit7f2ca9c42835c15d36c9adb13e172475542453d5 (patch)
treed87f26850f80656be8693c520165011db26f54f7
parentc90ff48c00b0fcd27284c30625b66350e1731739 (diff)
downloadaconf-7f2ca9c42835c15d36c9adb13e172475542453d5.tar.bz2
aconf-7f2ca9c42835c15d36c9adb13e172475542453d5.tar.xz
model: collection member name checking
-rw-r--r--acf2/model/init.lua1
-rw-r--r--acf2/model/node.lua12
2 files changed, 12 insertions, 1 deletions
diff --git a/acf2/model/init.lua b/acf2/model/init.lua
index bc0dc47..376ec64 100644
--- a/acf2/model/init.lua
+++ b/acf2/model/init.lua
@@ -206,6 +206,7 @@ function M.Collection:init(params, itype)
self.iparams = {
destroy=self.destroy,
editable=self:_editable(),
+ key=self.key,
layout=self.layout,
required=self.required,
ui_member=self.ui_member
diff --git a/acf2/model/node.lua b/acf2/model/node.lua
index d9d095d..711680e 100644
--- a/acf2/model/node.lua
+++ b/acf2/model/node.lua
@@ -1,5 +1,5 @@
--[[
-Copyright (c) 2012-2013 Kaarle Ritvanen
+Copyright (c) 2012-2014 Kaarle Ritvanen
See LICENSE file for license details
--]]
@@ -264,7 +264,17 @@ function M.Collection:init(context, params, dtype)
if not params.editable then
raise(mt.path, 'Collection is not editable')
end
+
mt.check_removable(k, v)
+
+ if params.key then
+ local kf = M.BoundMember(self, k, params.key)
+ if kf:normalize(k) ~= k then
+ raise(mt.path, 'Invalid member name: '..k)
+ end
+ kf:validate(k)
+ end
+
mt.member(k):save(v)
end
end