changeset 2503:d04243e932cc beta

Added filtering on inbox by comments
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 25 Jun 2012 22:40:04 +0200
parents 9374eecac156
children 4cf9af8ee623
files rhodecode/controllers/admin/notifications.py rhodecode/model/notification.py rhodecode/templates/admin/notifications/notifications.html
diffstat 3 files changed, 12 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/admin/notifications.py	Sat Jun 23 11:43:07 2012 +0200
+++ b/rhodecode/controllers/admin/notifications.py	Mon Jun 25 22:40:04 2012 +0200
@@ -61,10 +61,12 @@
         # 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 @@
             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')
 
--- a/rhodecode/model/notification.py	Sat Jun 23 11:43:07 2012 +0200
+++ b/rhodecode/model/notification.py	Mon Jun 25 22:40:04 2012 +0200
@@ -27,7 +27,6 @@
 import os
 import logging
 import traceback
-import datetime
 
 from pylons.i18n.translation import _
 
@@ -35,7 +34,6 @@
 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 @@
                                  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 @@
             .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 :(
--- a/rhodecode/templates/admin/notifications/notifications.html	Sat Jun 23 11:43:07 2012 +0200
+++ b/rhodecode/templates/admin/notifications/notifications.html	Mon Jun 25 22:40:04 2012 +0200
@@ -24,15 +24,17 @@
         ##    </li>
         ##</ul>
     </div>
-    %if c.notifications:
+    
       <div style="padding:14px 18px;text-align: right;float:left">
       <span id='all' class="ui-btn"><a href="${h.url.current()}">${_('All')}</a></span>
+      <span id='pull_request' class="ui-btn"><a href="${h.url.current(type=c.comment_type)}">${_('Comments')}</a></span>
       <span id='pull_request' class="ui-btn"><a href="${h.url.current(type=c.pull_request_type)}">${_('Pull requests')}</a></span>
       </div>
+      %if c.notifications:
       <div style="padding:14px 18px;text-align: right;float:right">
       <span id='mark_all_read' class="ui-btn">${_('Mark all read')}</span>
       </div>
-    %endif
+      %endif
   <div id='notification_data'>
     <%include file='notifications_data.html'/>
   </div>
@@ -44,12 +46,8 @@
  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)