107 |
107 |
108 def owns(self, eid): |
108 def owns(self, eid): |
109 try: |
109 try: |
110 return self._cw.execute( |
110 return self._cw.execute( |
111 'Any X WHERE X eid %(x)s, X owned_by U, U eid %(u)s', |
111 'Any X WHERE X eid %(x)s, X owned_by U, U eid %(u)s', |
112 {'x': eid, 'u': self.eid}, 'x') |
112 {'x': eid, 'u': self.eid}) |
113 except Unauthorized: |
113 except Unauthorized: |
114 return False |
114 return False |
115 owns = cached(owns, keyarg=1) |
115 owns = cached(owns, keyarg=1) |
116 |
116 |
117 def has_permission(self, pname, contexteid=None): |
117 def has_permission(self, pname, contexteid=None): |
118 rql = 'Any P WHERE P is CWPermission, U eid %(u)s, U in_group G, '\ |
118 rql = 'Any P WHERE P is CWPermission, U eid %(u)s, U in_group G, '\ |
119 'P name %(pname)s, P require_group G' |
119 'P name %(pname)s, P require_group G' |
120 kwargs = {'pname': pname, 'u': self.eid} |
120 kwargs = {'pname': pname, 'u': self.eid} |
121 cachekey = None |
|
122 if contexteid is not None: |
121 if contexteid is not None: |
123 rql += ', X require_permission P, X eid %(x)s' |
122 rql += ', X require_permission P, X eid %(x)s' |
124 kwargs['x'] = contexteid |
123 kwargs['x'] = contexteid |
125 cachekey = 'x' |
|
126 try: |
124 try: |
127 return self._cw.execute(rql, kwargs, cachekey) |
125 return self._cw.execute(rql, kwargs) |
128 except Unauthorized: |
126 except Unauthorized: |
129 return False |
127 return False |
130 |
128 |
131 # presentation utilities ################################################## |
129 # presentation utilities ################################################## |
132 |
130 |