diff rhodecode/controllers/admin/notifications.py @ 2610:3fdf7c3be2c9 beta

added mark as read for single notifications
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 15 Jul 2012 04:02:58 +0200
parents f8742e1acf08
children 91c442a489bb
line wrap: on
line diff
--- a/rhodecode/controllers/admin/notifications.py	Sun Jul 15 03:15:43 2012 +0200
+++ b/rhodecode/controllers/admin/notifications.py	Sun Jul 15 04:02:58 2012 +0200
@@ -106,6 +106,18 @@
         #    h.form(url('notification', notification_id=ID),
         #           method='put')
         # url('notification', notification_id=ID)
+        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')() or owner:
+                    NotificationModel().mark_read(c.rhodecode_user.user_id, no)
+                    Session.commit()
+                    return 'ok'
+        except Exception:
+            Session.rollback()
+            log.error(traceback.format_exc())
+        return 'fail'
 
     def delete(self, notification_id):
         """DELETE /_admin/notifications/id: Delete an existing item"""
@@ -120,7 +132,7 @@
             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:
+            if h.HasPermissionAny('hg.admin')() or owner:
                     NotificationModel().delete(c.rhodecode_user.user_id, no)
                     Session.commit()
                     return 'ok'