1.1 --- a/MoinSupport.py Sun Jan 20 01:13:24 2013 +0100
1.2 +++ b/MoinSupport.py Sun Jan 20 01:45:00 2013 +0100
1.3 @@ -894,6 +894,16 @@
1.4 user = self.page.request.user
1.5 return user and user.may.write(self.page.page_name)
1.6
1.7 + def can_read(self):
1.8 +
1.9 + """
1.10 + Return whether the user associated with the request can read from the
1.11 + page owning this store.
1.12 + """
1.13 +
1.14 + user = self.page.request.user
1.15 + return user and user.may.read(self.page.page_name)
1.16 +
1.17 # High-level methods.
1.18
1.19 def append(self, item):
1.20 @@ -905,4 +915,25 @@
1.21
1.22 ItemDirectoryStore.append(self, item)
1.23
1.24 + def __len__(self):
1.25 +
1.26 + """
1.27 + Return the number of the next item (which should also be the number of
1.28 + items).
1.29 + """
1.30 +
1.31 + if not self.can_read():
1.32 + return 0
1.33 +
1.34 + return ItemDirectoryStore.__len__(self)
1.35 +
1.36 + def __getitem__(self, number):
1.37 +
1.38 + "Return the item with the given 'number'."
1.39 +
1.40 + if not self.can_read():
1.41 + raise IndexError, number
1.42 +
1.43 + return ItemDirectoryStore.__getitem__(self, number)
1.44 +
1.45 # vim: tabstop=4 expandtab shiftwidth=4