Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(1222)

Delta Between Two Patch Sets: MoinMoin/storage/middleware/protecting.py

Issue 6423063: userheads
Left Patch Set: Created 12 years, 9 months ago
Right Patch Set: Created 12 years, 8 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
LEFTRIGHT
1 # Copyright: 2011 MoinMoin:ThomasWaldmann 1 # Copyright: 2011 MoinMoin:ThomasWaldmann
2 # License: GNU GPL v2 (or any later version), see LICENSE.txt for details. 2 # License: GNU GPL v2 (or any later version), see LICENSE.txt for details.
3 3
4 """ 4 """
5 MoinMoin - protecting middleware 5 MoinMoin - protecting middleware
6 6
7 This checks ACLs (access control lists), so a user will not be able to do 7 This checks ACLs (access control lists), so a user will not be able to do
8 operations without the respective permissions. 8 operations without the respective permissions.
9 9
10 Note: for method / attribute docs, please see the same methods / attributes in 10 Note: for method / attribute docs, please see the same methods / attributes in
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 def get_acls(self, itemname): 44 def get_acls(self, itemname):
45 for prefix, acls in self.acl_mapping: 45 for prefix, acls in self.acl_mapping:
46 if itemname.startswith(prefix): 46 if itemname.startswith(prefix):
47 return acls 47 return acls
48 else: 48 else:
49 raise ValueError('No acl_mapping entry found for item {0!r}'.format( itemname)) 49 raise ValueError('No acl_mapping entry found for item {0!r}'.format( itemname))
50 50
51 def query_parser(self, default_fields, idx_name=LATEST_REVS): 51 def query_parser(self, default_fields, idx_name=LATEST_REVS):
52 return self.indexer.query_parser(default_fields, idx_name=idx_name) 52 return self.indexer.query_parser(default_fields, idx_name=idx_name)
53 53
54 def search(self, q, idx_name=LATEST_REVS, **kw): 54 def search(self, q, idx_name=ALL_REVS, **kw):
55 for rev in self.indexer.search(q, idx_name, **kw): 55 for rev in self.indexer.search(q, idx_name, **kw):
56 rev = ProtectedRevision(self, rev) 56 rev = ProtectedRevision(self, rev)
57 if rev.allows(READ): 57 if rev.allows(READ):
58 yield rev 58 yield rev
59 59
60 def search_page(self, q, idx_name=LATEST_REVS, pagenum=1, pagelen=10, **kw): 60 def search_page(self, q, idx_name=LATEST_REVS, pagenum=1, pagelen=10, **kw):
61 for rev in self.indexer.search_page(q, idx_name, pagenum, pagelen, **kw) : 61 for rev in self.indexer.search_page(q, idx_name, pagenum, pagelen, **kw) :
62 rev = ProtectedRevision(self, rev) 62 rev = ProtectedRevision(self, rev)
63 if rev.allows(READ): 63 if rev.allows(READ):
64 yield rev 64 yield rev
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 self.require(READ) 204 self.require(READ)
205 if self: 205 if self:
206 for rev in self.item.iter_revs(): 206 for rev in self.item.iter_revs():
207 yield ProtectedRevision(self.protector, rev, p_item=self) 207 yield ProtectedRevision(self.protector, rev, p_item=self)
208 208
209 def __getitem__(self, revid): 209 def __getitem__(self, revid):
210 self.require(READ) # XXX 210 self.require(READ) # XXX
211 rev = self.item[revid] 211 rev = self.item[revid]
212 return ProtectedRevision(self.protector, rev, p_item=self) 212 return ProtectedRevision(self.protector, rev, p_item=self)
213 213
214 def get_revision(self, revid): 214 def get_revision(self, revid, branch=None):
215 return self[revid] 215 rev = self.item.get_revision(revid, branch)
216
217 def get_revision_by_branch(self, branch):
218 self.require(READ) # XXX
219 rev = self.item.get_revision_by_branch(branch)
220 return ProtectedRevision(self.protector, rev, p_item=self) 216 return ProtectedRevision(self.protector, rev, p_item=self)
221 217
222 def store_revision(self, meta, data, branch, overwrite=False, **kw): 218 def store_revision(self, meta, data, branch, overwrite=False, **kw):
223 self.require(WRITE) 219 self.require(WRITE)
224 if not self: 220 if not self:
225 self.require(CREATE) 221 self.require(CREATE)
226 if overwrite: 222 if overwrite:
227 self.require(DESTROY) 223 self.require(DESTROY)
228 rev = self.item.store_revision(meta, data, branch, overwrite=overwrite, **kw) 224 rev = self.item.store_revision(meta, data, branch, overwrite=overwrite, **kw)
229 return ProtectedRevision(self.protector, rev, p_item=self) 225 return ProtectedRevision(self.protector, rev, p_item=self)
230 226
231 def store_all_revisions(self, meta, data): 227 def store_all_revisions(self, meta, data):
232 self.require(DESTROY) 228 self.require(DESTROY)
233 self.item.store_all_revisions(meta, data) 229 self.item.store_all_revisions(meta, data)
234 230
235 def destroy_revision(self, revid): 231 def destroy_revision(self, revid):
236 self.require(DESTROY) 232 self.require(DESTROY)
237 self.item.destroy_revision(revid) 233 self.item.destroy_revision(revid)
238 234
239 def destroy_all_revisions(self): 235 def destroy_all_revisions(self):
240 for rev in self.item.iter_revs(): 236 for rev in self.item.iter_revs():
241 self.destroy_revision(rev.revid) 237 self.destroy_revision(rev.revid)
242 238
239 def get_head_revid_by_branch(self, branch):
240 return self.item.get_head_revid_by_branch(branch)
241
243 242
244 class ProtectedRevision(object): 243 class ProtectedRevision(object):
245 def __init__(self, protector, rev, p_item=None): 244 def __init__(self, protector, rev, p_item=None):
246 """ 245 """
247 :param protector: Protector middleware 246 :param protector: Protector middleware
248 :param rev: Revision to protect 247 :param rev: Revision to protect
249 :param p_item: instance of ProtectedItem for rev.item (optional) 248 :param p_item: instance of ProtectedItem for rev.item (optional)
250 """ 249 """
251 self.protector = protector 250 self.protector = protector
252 self.rev = rev 251 self.rev = rev
(...skipping 26 matching lines...) Expand all
279 278
280 def __enter__(self): 279 def __enter__(self):
281 return self 280 return self
282 281
283 def __exit__(self, exc_type, exc_value, exc_tb): 282 def __exit__(self, exc_type, exc_value, exc_tb):
284 self.close() 283 self.close()
285 284
286 def __cmp__(self, other): 285 def __cmp__(self, other):
287 return cmp(self.meta, other.meta) 286 return cmp(self.meta, other.meta)
288 287
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b