# HG changeset patch # User Marcin Kuzminski # Date 2012-06-25 20:40:04 # Node ID d04243e932cc64b0eba8a0b3a8bd370027b4c20a # Parent 9374eecac156191418a40012b615b9341984d43c Added filtering on inbox by comments diff --git a/rhodecode/controllers/admin/notifications.py b/rhodecode/controllers/admin/notifications.py --- a/rhodecode/controllers/admin/notifications.py +++ b/rhodecode/controllers/admin/notifications.py @@ -61,10 +61,12 @@ class NotificationsController(BaseContro # url('notifications') c.user = self.rhodecode_user notif = NotificationModel().get_for_user(self.rhodecode_user.user_id, - filter_=request.GET) + filter_=request.GET.getall('type')) p = int(request.params.get('page', 1)) c.notifications = Page(notif, page=p, items_per_page=10) c.pull_request_type = Notification.TYPE_PULL_REQUEST + c.comment_type = [Notification.TYPE_CHANGESET_COMMENT, + Notification.TYPE_PULL_REQUEST_COMMENT] return render('admin/notifications/notifications.html') def mark_all_read(self): @@ -72,11 +74,11 @@ class NotificationsController(BaseContro nm = NotificationModel() # mark all read nm.mark_all_read_for_user(self.rhodecode_user.user_id, - filter_=request.GET) + filter_=request.GET.getall('type')) Session.commit() c.user = self.rhodecode_user notif = nm.get_for_user(self.rhodecode_user.user_id, - filter_=request.GET) + filter_=request.GET.getall('type')) c.notifications = Page(notif, page=1, items_per_page=10) return render('admin/notifications/notifications_data.html') diff --git a/rhodecode/model/notification.py b/rhodecode/model/notification.py --- a/rhodecode/model/notification.py +++ b/rhodecode/model/notification.py @@ -27,7 +27,6 @@ import os import logging import traceback -import datetime from pylons.i18n.translation import _ @@ -35,7 +34,6 @@ import rhodecode from rhodecode.lib import helpers as h from rhodecode.model import BaseModel from rhodecode.model.db import Notification, User, UserNotification -from sqlalchemy.orm import joinedload log = logging.getLogger(__name__) @@ -152,7 +150,7 @@ class NotificationModel(BaseModel): Notification.notification_id)) if filter_: - q = q.filter(Notification.type_ == filter_.get('type')) + q = q.filter(Notification.type_.in_(filter_)) return q.all() @@ -164,7 +162,7 @@ class NotificationModel(BaseModel): .join((Notification, UserNotification.notification_id == Notification.notification_id)) if filter_: - q = q.filter(Notification.type_ == filter_.get('type')) + q = q.filter(Notification.type_.in_(filter_)) # this is a little inefficient but sqlalchemy doesn't support # update on joined tables :( diff --git a/rhodecode/templates/admin/notifications/notifications.html b/rhodecode/templates/admin/notifications/notifications.html --- a/rhodecode/templates/admin/notifications/notifications.html +++ b/rhodecode/templates/admin/notifications/notifications.html @@ -24,15 +24,17 @@ ## ## - %if c.notifications: +
${_('All')} + ${_('Comments')} ${_('Pull requests')}
+ %if c.notifications:
${_('Mark all read')}
- %endif + %endif
<%include file='notifications_data.html'/>
@@ -44,12 +46,8 @@ YUE.on(YUQ('.delete-notification'),'clic deleteNotification(url_del,notification_id) }) YUE.on('mark_all_read','click',function(e){ - var url = "${h.url('notifications_mark_all_read', **request.GET)}"; + var url = "${h.url('notifications_mark_all_read', **request.GET.mixed())}"; ypjax(url,'notification_data',function(){ - var notification_counter = YUD.get('notification_counter'); - if(notification_counter){ - notification_counter.innerHTML=0; - } YUE.on(YUQ('.delete-notification'),'click',function(e){ var notification_id = e.currentTarget.id; deleteNotification(url_del,notification_id)