diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-03-17 19:43:52 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-03-25 09:02:57 +0200 |
commit | 0e7b11021457934dd99f764ee24359a86146e976 (patch) | |
tree | 09c4201c1d7fdb14e59fe6308c8230f2508a5931 /aconf | |
parent | acbb01f353d7a156df33d7657f63a7c92fd9ace7 (diff) | |
download | aconf-0e7b11021457934dd99f764ee24359a86146e976.tar.bz2 aconf-0e7b11021457934dd99f764ee24359a86146e976.tar.xz |
model: fetch objects via metatable function when possible
Diffstat (limited to 'aconf')
-rw-r--r-- | aconf/model/aaa.lua | 2 | ||||
-rw-r--r-- | aconf/model/field.lua | 4 | ||||
-rw-r--r-- | aconf/model/init.lua | 9 | ||||
-rw-r--r-- | aconf/model/node.lua | 3 |
4 files changed, 12 insertions, 6 deletions
diff --git a/aconf/model/aaa.lua b/aconf/model/aaa.lua index e324381..1986b3b 100644 --- a/aconf/model/aaa.lua +++ b/aconf/model/aaa.lua @@ -57,7 +57,7 @@ function User:check_permission(permission) if self.superuser then return true end - assert(getmetatable(self).txn:fetch('/auth/permissions')[permission]) + assert(self:fetch('/auth/permissions')[permission]) for _, role in M.node.pairs(self.roles, true) do for _, p in M.node.pairs(role.permissions, true) do diff --git a/aconf/model/field.lua b/aconf/model/field.lua index 8b300a5..26711f2 100644 --- a/aconf/model/field.lua +++ b/aconf/model/field.lua @@ -335,7 +335,9 @@ function M.TreeNode:save(context, value) local path = context.path if value == path then return end - if type(value) == 'string' then value = context.txn:fetch(value) end + if type(value) == 'string' then + value = node.fetch(context.parent, value) + end if object.isinstance(value, node.TreeNode) and node.path(value) == path then return end diff --git a/aconf/model/init.lua b/aconf/model/init.lua index e3395cc..cab92e7 100644 --- a/aconf/model/init.lua +++ b/aconf/model/init.lua @@ -97,8 +97,9 @@ end function M.Reference:_choice(context) local res = {} - local txn = context.txn - local obj = relabel('system', txn.fetch, txn, self:abs_scope(context)) + local obj = relabel( + 'system', node.fetch, context.parent, self:abs_scope(context) + ) assert(isinstance(obj, node.Collection)) for k, v in node.pairs(obj) do @@ -136,7 +137,9 @@ function M.Reference:meta(context) end function M.Reference:follow(context, value) - return context.txn:fetch(M.path.rawjoin(self:abs_scope(context), value)) + return node.fetch( + context.parent, M.path.rawjoin(self:abs_scope(context), value) + ) end function M.Reference:load(context, options) diff --git a/aconf/model/node.lua b/aconf/model/node.lua index 4ef45d8..bc07ca4 100644 --- a/aconf/model/node.lua +++ b/aconf/model/node.lua @@ -148,7 +148,7 @@ function M.TreeNode:init(context, params) function mt.has_permission(user, permission) local p = permission..mt.path - if mt.txn:fetch('/auth/permissions')[p] then + if mt.fetch('/auth/permissions')[p] then return user:check_permission(p) end @@ -340,6 +340,7 @@ end for _, mf in ipairs{ 'addr', 'contains', + 'fetch', 'has_permission', 'insert', 'meta', |