From 019eef29a6e44ada9787d904a96e739988b15fd3 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 23 Oct 2015 10:36:46 +0200 Subject: [PATCH] work in progress: notification listing; improve 'unauthorized' view --- browser/auth.py | 4 ++++ organize/personal/browser/notification.py | 8 ++++++++ organize/personal/browser/personal_macros.pt | 4 ++++ organize/personal/notification.py | 4 ++-- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/browser/auth.py b/browser/auth.py index 972eb36..7b9d084 100644 --- a/browser/auth.py +++ b/browser/auth.py @@ -20,6 +20,7 @@ Login, logout, unauthorized stuff. """ +from zope.app.exception.browser.unauthorized import Unauthorized as DefaultUnauth from zope.app.security.interfaces import IAuthentication from zope.app.security.interfaces import ILogout, IUnauthenticatedPrincipal from zope import component @@ -87,5 +88,8 @@ class Unauthorized(ConceptView): response.setHeader('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT') response.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate') response.setHeader('Pragma', 'no-cache') + if self.nodeView is None: + v = DefaultUnauth(self.context, self.request) + return v() url = self.nodeView.topMenu.url response.redirect(url + '/unauthorized') diff --git a/organize/personal/browser/notification.py b/organize/personal/browser/notification.py index cbc7674..17bb00a 100644 --- a/organize/personal/browser/notification.py +++ b/organize/personal/browser/notification.py @@ -25,6 +25,7 @@ from zope.app.pagetemplate import ViewPageTemplateFile from zope.cachedescriptors.property import Lazy from loops.browser.concept import ConceptView +from loops.organize.personal.notification import Notifications from loops.organize.party import getPersonForUser from loops import util @@ -42,3 +43,10 @@ class NotificationsListing(ConceptView): def person(self): return getPersonForUser(self.context, self.request) + @Lazy + def notifications(self): + return Notifications(self.person) + + def getNotifications(self, unreadOnly=True): + tracks = self.notifications.listTracks() + return tracks diff --git a/organize/personal/browser/personal_macros.pt b/organize/personal/browser/personal_macros.pt index 77e7a1f..108acdd 100644 --- a/organize/personal/browser/personal_macros.pt +++ b/organize/personal/browser/personal_macros.pt @@ -58,6 +58,10 @@ Text Date/Time read + + + diff --git a/organize/personal/notification.py b/organize/personal/notification.py index 59050b7..5f65f60 100644 --- a/organize/personal/notification.py +++ b/organize/personal/notification.py @@ -35,11 +35,11 @@ class Notifications(Favorites): def listTracks(self): return super(Notifications, self).listTracks( - self.person, type='notification') + baseObject(self.person), type='notification') def add(self, obj, sender, text): senderUid = util.getUidForObject(baseObject(sender)) - super(Notifications, self).add(obj, self.person, + super(Notifications, self).add(baseObject(obj), baseObject(self.person), dict(type='notification', sender=senderUid, text=text), nodups=False)