def show_page(self, title): if title.startswith('w/'): raise Exception('No such page.') if not access.can_read_page(title, users.get_current_user(), users.is_current_user_admin()): raise Forbidden self.title = title.replace('_', ' ') self.raw = self.request.get("format") == "raw" self.revision = self.request.get("r") if self.raw: body = self.get_memcache() content_type = str(body.get("content-type", "text/plain")) self.reply(body["text"], content_type=content_type) else: self.reply(self.get_memcache(), 'text/html')
def test_page_reading(self): user = users.User('*****@*****.**') # Unknown user, default access. settings.change({'open-reading': None, 'readers': None, 'editors': None}) self.assertEquals(access.can_read_page('foo', user, False), True) # Unknown user, private wiki. settings.change({'open-reading': 'no'}) self.assertEquals(access.can_read_page('foo', user, False), False) # A privilaged reader, private wiki. settings.change({'open-reading': 'no', 'readers': user.email(), 'editors': None}) self.assertEquals(access.can_read_page('foo', user, False), True) # A privilaged editor, private wiki. settings.change({'open-reading': 'no', 'readers': None, 'editors': user.email()}) self.assertEquals(access.can_read_page('foo', user, False), True) page = model.WikiContent(title='foo') # An unknown user, a private wiki and a public page. settings.change({'open-reading': 'no', 'readers': None, 'editors': None}) page.body = 'public: yes\n---\n# foo' page.put() self.assertEquals(access.can_read_page('foo', user, False), True) # An unknown user, an open wiki and a private page. settings.change({'open-reading': 'yes', 'readers': None, 'editors': None}) page.body = 'private: yes\n---\n# foo' page.put() self.assertEquals(access.can_read_page('foo', user, False), False) # An open wiki, a private page with explicit access to some regular user. settings.change({'open-reading': 'yes', 'readers': None, 'editors': None}) page.body = 'private: yes\nreaders: %s\n---\n# foo' % user.email() page.put() self.assertEquals(access.can_read_page('foo', user, False), True)
def get(self): self.title = self.request.get('page') if not access.can_read_page(self.title, users.get_current_user(), users.is_current_user_admin()): raise Forbidden self.reply(self.get_memcache(), 'text/html')
def test_page_reading(self): user = users.User('*****@*****.**') # Unknown user, default access. settings.change({ 'open-reading': None, 'readers': None, 'editors': None }) self.assertEquals(access.can_read_page('foo', user, False), True) # Unknown user, private wiki. settings.change({'open-reading': 'no'}) self.assertEquals(access.can_read_page('foo', user, False), False) # A privilaged reader, private wiki. settings.change({ 'open-reading': 'no', 'readers': user.email(), 'editors': None }) self.assertEquals(access.can_read_page('foo', user, False), True) # A privilaged editor, private wiki. settings.change({ 'open-reading': 'no', 'readers': None, 'editors': user.email() }) self.assertEquals(access.can_read_page('foo', user, False), True) page = model.WikiContent(title='foo') # An unknown user, a private wiki and a public page. settings.change({ 'open-reading': 'no', 'readers': None, 'editors': None }) page.body = 'public: yes\n---\n# foo' page.put() self.assertEquals(access.can_read_page('foo', user, False), True) # An unknown user, an open wiki and a private page. settings.change({ 'open-reading': 'yes', 'readers': None, 'editors': None }) page.body = 'private: yes\n---\n# foo' page.put() self.assertEquals(access.can_read_page('foo', user, False), False) # An open wiki, a private page with explicit access to some regular user. settings.change({ 'open-reading': 'yes', 'readers': None, 'editors': None }) page.body = 'private: yes\nreaders: %s\n---\n# foo' % user.email() page.put() self.assertEquals(access.can_read_page('foo', user, False), True)