94 |
94 |
95 def owns(self, eid): |
95 def owns(self, eid): |
96 try: |
96 try: |
97 return self._cw.execute( |
97 return self._cw.execute( |
98 'Any X WHERE X eid %(x)s, X owned_by U, U eid %(u)s', |
98 'Any X WHERE X eid %(x)s, X owned_by U, U eid %(u)s', |
99 {'x': eid, 'u': self.eid}, 'x') |
99 {'x': eid, 'u': self.eid}) |
100 except Unauthorized: |
100 except Unauthorized: |
101 return False |
101 return False |
102 owns = cached(owns, keyarg=1) |
102 owns = cached(owns, keyarg=1) |
103 |
103 |
104 def has_permission(self, pname, contexteid=None): |
104 def has_permission(self, pname, contexteid=None): |
105 rql = 'Any P WHERE P is CWPermission, U eid %(u)s, U in_group G, '\ |
105 rql = 'Any P WHERE P is CWPermission, U eid %(u)s, U in_group G, '\ |
106 'P name %(pname)s, P require_group G' |
106 'P name %(pname)s, P require_group G' |
107 kwargs = {'pname': pname, 'u': self.eid} |
107 kwargs = {'pname': pname, 'u': self.eid} |
108 cachekey = None |
|
109 if contexteid is not None: |
108 if contexteid is not None: |
110 rql += ', X require_permission P, X eid %(x)s' |
109 rql += ', X require_permission P, X eid %(x)s' |
111 kwargs['x'] = contexteid |
110 kwargs['x'] = contexteid |
112 cachekey = 'x' |
|
113 try: |
111 try: |
114 return self._cw.execute(rql, kwargs, cachekey) |
112 return self._cw.execute(rql, kwargs) |
115 except Unauthorized: |
113 except Unauthorized: |
116 return False |
114 return False |
117 |
115 |
118 # presentation utilities ################################################## |
116 # presentation utilities ################################################## |
119 |
117 |