Mercurial > kallithea
diff rhodecode/controllers/admin/notifications.py @ 1712:cac5109ac3b6 beta
Notification system improvements
- deleting
- tests
- ui
- moved to separate controller
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 23 Nov 2011 00:55:05 +0200 |
parents | |
children | 54687aa00724 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/controllers/admin/notifications.py Wed Nov 23 00:55:05 2011 +0200 @@ -0,0 +1,84 @@ +import logging + +from pylons import tmpl_context as c + +from rhodecode.lib.base import BaseController, render +from rhodecode.model.db import Notification + +from rhodecode.model.notification import NotificationModel +from rhodecode.lib.auth import LoginRequired +from rhodecode.lib import helpers as h + +log = logging.getLogger(__name__) + +class NotificationsController(BaseController): + """REST Controller styled on the Atom Publishing Protocol""" + # To properly map this controller, ensure your config/routing.py + # file has a resource setup: + # map.resource('notification', 'notifications', controller='_admin/notifications', + # path_prefix='/_admin', name_prefix='_admin_') + + @LoginRequired() + def __before__(self): + super(NotificationsController, self).__before__() + + + def index(self, format='html'): + """GET /_admin/notifications: All items in the collection""" + # url('notifications') + c.user = self.rhodecode_user + c.notifications = NotificationModel()\ + .get_for_user(self.rhodecode_user.user_id) + return render('admin/notifications/notifications.html') + + def create(self): + """POST /_admin/notifications: Create a new item""" + # url('notifications') + + def new(self, format='html'): + """GET /_admin/notifications/new: Form to create a new item""" + # url('new_notification') + + def update(self, notification_id): + """PUT /_admin/notifications/id: Update an existing item""" + # Forms posted to this method should contain a hidden field: + # <input type="hidden" name="_method" value="PUT" /> + # Or using helpers: + # h.form(url('notification', notification_id=ID), + # method='put') + # url('notification', notification_id=ID) + + def delete(self, notification_id): + """DELETE /_admin/notifications/id: Delete an existing item""" + # Forms posted to this method should contain a hidden field: + # <input type="hidden" name="_method" value="DELETE" /> + # Or using helpers: + # h.form(url('notification', notification_id=ID), + # 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' + 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) + + unotification = NotificationModel()\ + .get_user_notification(c.user.user_id, + c.notification) + + if unotification.read is False: + unotification.mark_as_read() + + return render('admin/notifications/show_notification.html') + + def edit(self, notification_id, format='html'): + """GET /_admin/notifications/id/edit: Form to edit an existing item""" + # url('edit_notification', notification_id=ID)