Mercurial > kallithea
diff rhodecode/controllers/admin/notifications.py @ 1713:54687aa00724 beta
Tests updates, Session refactoring
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 23 Nov 2011 15:36:57 +0200 |
parents | cac5109ac3b6 |
children | 64e91067b996 |
line wrap: on
line diff
--- a/rhodecode/controllers/admin/notifications.py Wed Nov 23 00:55:05 2011 +0200 +++ b/rhodecode/controllers/admin/notifications.py Wed Nov 23 15:36:57 2011 +0200 @@ -1,6 +1,7 @@ import logging +import traceback -from pylons import tmpl_context as c +from pylons import tmpl_context as c, url from rhodecode.lib.base import BaseController, render from rhodecode.model.db import Notification @@ -8,6 +9,8 @@ from rhodecode.model.notification import NotificationModel from rhodecode.lib.auth import LoginRequired from rhodecode.lib import helpers as h +from rhodecode.model.meta import Session +from pylons.controllers.util import redirect log = logging.getLogger(__name__) @@ -57,27 +60,42 @@ # method='delete') # url('notification', notification_id=ID) - no = Notification.get(notification_id) - owner = lambda: no.notifications_to_users.user.user_id == c.rhodecode_user.user_id - if h.HasPermissionAny('hg.admin', 'repository.admin')() or owner: - NotificationModel().delete(notification_id) - return 'ok' + try: + no = Notification.get(notification_id) + owner = lambda: (no.notifications_to_users.user.user_id + == c.rhodecode_user.user_id) + if h.HasPermissionAny('hg.admin', 'repository.admin')() or owner: + NotificationModel().delete(c.rhodecode_user.user_id, no) + Session.commit() + return 'ok' + except Exception: + Session.rollback() + log.error(traceback.format_exc()) return 'fail' def show(self, notification_id, format='html'): """GET /_admin/notifications/id: Show a specific item""" # url('notification', notification_id=ID) c.user = self.rhodecode_user - c.notification = Notification.get(notification_id) + no = Notification.get(notification_id) + + owner = lambda: (no.notifications_to_users.user.user_id + == c.user.user_id) + if no and (h.HasPermissionAny('hg.admin', 'repository.admin')() or owner): + unotification = NotificationModel()\ + .get_user_notification(c.user.user_id, no) - unotification = NotificationModel()\ - .get_user_notification(c.user.user_id, - c.notification) + # if this association to user is not valid, we don't want to show + # this message + if unotification: + if unotification.read is False: + unotification.mark_as_read() + Session.commit() + c.notification = no - if unotification.read is False: - unotification.mark_as_read() + return render('admin/notifications/show_notification.html') - return render('admin/notifications/show_notification.html') + return redirect(url('notifications')) def edit(self, notification_id, format='html'): """GET /_admin/notifications/id/edit: Form to edit an existing item"""