--- a/server/querier.py Wed Nov 18 09:16:38 2009 +0100
+++ b/server/querier.py Thu Nov 19 12:55:47 2009 +0100
@@ -71,14 +71,23 @@
# XXX has_text may have specific perm ?
if rel.r_type in READ_ONLY_RTYPES:
continue
- if not schema.rschema(rel.r_type).has_access(user, 'read'):
+ rschema = schema.rschema(rel.r_type)
+ if rschema.final:
+ eschema = schema.eschema(solution[rel.children[0].name])
+ rdef = eschema.rdef(rschema)
+ else:
+ rdef = rschema.rdef(solution[rel.children[0].name],
+ solution[rel.children[1].children[0].name])
+ if not user.matching_groups(rdef.get_groups('read')):
raise Unauthorized('read', rel.r_type)
localchecks = {}
# iterate on defined_vars and not on solutions to ignore column aliases
for varname in rqlst.defined_vars:
etype = solution[varname]
eschema = schema.eschema(etype)
- if not eschema.has_access(user, 'read'):
+ if eschema.final:
+ continue
+ if not user.matching_groups(eschema.get_groups('read')):
erqlexprs = eschema.get_rqlexprs('read')
if not erqlexprs:
ex = Unauthorized('read', etype)