From d0708da727b72cfc95defe14dd6780d2cba0a0b7 Mon Sep 17 00:00:00 2001 From: Rodney Ewing Date: Wed, 7 Aug 2013 12:44:43 -0700 Subject: add the ability to mark all notifications read. --- mediagoblin/notifications/routing.py | 4 ++++ mediagoblin/notifications/views.py | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'mediagoblin/notifications') diff --git a/mediagoblin/notifications/routing.py b/mediagoblin/notifications/routing.py index e57956d3..cd7bbc21 100644 --- a/mediagoblin/notifications/routing.py +++ b/mediagoblin/notifications/routing.py @@ -23,3 +23,7 @@ add_route('mediagoblin.notifications.subscribe_comments', add_route('mediagoblin.notifications.silence_comments', '/u//m//notifications/silence/', 'mediagoblin.notifications.views:silence_comments') + +add_route('mediagoblin.notifications.mark_all_comment_notifications_seen', + '/notifications/comments/mark_all_seen/', + 'mediagoblin.notifications.views:mark_all_comment_notifications_seen') diff --git a/mediagoblin/notifications/views.py b/mediagoblin/notifications/views.py index d275bc92..cda7f0af 100644 --- a/mediagoblin/notifications/views.py +++ b/mediagoblin/notifications/views.py @@ -24,7 +24,7 @@ from mediagoblin.decorators import (uses_pagination, get_user_media_entry, from mediagoblin import messages from mediagoblin.notifications import add_comment_subscription, \ - silence_comment_subscription + silence_comment_subscription, mark_comment_notification_seen from werkzeug.exceptions import BadRequest @@ -52,3 +52,17 @@ def silence_comments(request, media): ' %s.') % media.title) return redirect(request, location=media.url_for_self(request.urlgen)) + + +@require_active_login +def mark_all_comment_notifications_seen(request): + """ + Marks all comment notifications seen. + """ + for comment in request.notifications.get_notifications(request.user.id): + mark_comment_notification_seen(comment.subject_id, request.user) + + if request.GET.get('next'): + return redirect(request, location=request.GET.get('next')) + else: + return redirect(request, 'index') -- cgit v1.2.3 From 1cca2a6857d529bb3927b9e4b0d41ac1534ae06b Mon Sep 17 00:00:00 2001 From: Rodney Ewing Date: Wed, 7 Aug 2013 12:50:59 -0700 Subject: Pep 8 --- mediagoblin/notifications/views.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'mediagoblin/notifications') diff --git a/mediagoblin/notifications/views.py b/mediagoblin/notifications/views.py index cda7f0af..5a67c1ba 100644 --- a/mediagoblin/notifications/views.py +++ b/mediagoblin/notifications/views.py @@ -14,19 +14,14 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -from mediagoblin.tools.response import render_to_response, render_404, redirect +from mediagoblin.tools.response import redirect from mediagoblin.tools.translate import pass_to_ugettext as _ -from mediagoblin.decorators import (uses_pagination, get_user_media_entry, - get_media_entry_by_id, - require_active_login, user_may_delete_media, user_may_alter_collection, - get_user_collection, get_user_collection_item, active_user_from_url) - +from mediagoblin.decorators import get_user_media_entry, require_active_login from mediagoblin import messages from mediagoblin.notifications import add_comment_subscription, \ - silence_comment_subscription, mark_comment_notification_seen + silence_comment_subscription, mark_comment_notification_seen -from werkzeug.exceptions import BadRequest @get_user_media_entry @require_active_login @@ -41,6 +36,7 @@ def subscribe_comments(request, media): return redirect(request, location=media.url_for_self(request.urlgen)) + @get_user_media_entry @require_active_login def silence_comments(request, media): -- cgit v1.2.3 From 93d805ad6b0e5324c515323d2fc0a4a7ea3f1dad Mon Sep 17 00:00:00 2001 From: Rodney Ewing Date: Thu, 8 Aug 2013 15:07:07 -0700 Subject: add user prefrence for insite notifications --- mediagoblin/notifications/__init__.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'mediagoblin/notifications') diff --git a/mediagoblin/notifications/__init__.py b/mediagoblin/notifications/__init__.py index ed9f8d78..b6f9f478 100644 --- a/mediagoblin/notifications/__init__.py +++ b/mediagoblin/notifications/__init__.py @@ -17,7 +17,8 @@ import logging from mediagoblin.db.models import Notification, \ - CommentNotification, CommentSubscription + CommentNotification, CommentSubscription, User +from mediagoblin.notifications.task import email_notification_task from mediagoblin.notifications.tools import generate_comment_message _log = logging.getLogger(__name__) @@ -121,6 +122,12 @@ NOTIFICATION_FETCH_LIMIT = 100 def get_notifications(user_id, only_unseen=True): query = Notification.query.filter_by(user_id=user_id) + wants_notifications = User.query.filter_by(id=user_id).first()\ + .wants_notifications + + # If the user does not want notifications, don't return any + if not wants_notifications: + return None if only_unseen: query = query.filter_by(seen=False) @@ -130,12 +137,19 @@ def get_notifications(user_id, only_unseen=True): return notifications + def get_notification_count(user_id, only_unseen=True): query = Notification.query.filter_by(user_id=user_id) + wants_notifications = User.query.filter_by(id=user_id).first()\ + .wants_notifications if only_unseen: query = query.filter_by(seen=False) - count = query.count() + # If the user doesn't want notifications, don't show any + if not wants_notifications: + count = None + else: + count = query.count() return count -- cgit v1.2.3 From a30d2d8b6ca0837737e92b09bac74c4504ba0182 Mon Sep 17 00:00:00 2001 From: Rodney Ewing Date: Tue, 20 Aug 2013 08:25:26 -0700 Subject: request object no longer contains notification functions --- mediagoblin/notifications/views.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'mediagoblin/notifications') diff --git a/mediagoblin/notifications/views.py b/mediagoblin/notifications/views.py index 5a67c1ba..cfe66b2e 100644 --- a/mediagoblin/notifications/views.py +++ b/mediagoblin/notifications/views.py @@ -19,8 +19,9 @@ from mediagoblin.tools.translate import pass_to_ugettext as _ from mediagoblin.decorators import get_user_media_entry, require_active_login from mediagoblin import messages -from mediagoblin.notifications import add_comment_subscription, \ - silence_comment_subscription, mark_comment_notification_seen +from mediagoblin.notifications import (add_comment_subscription, + silence_comment_subscription, mark_comment_notification_seen, + get_notifications) @get_user_media_entry @@ -55,7 +56,7 @@ def mark_all_comment_notifications_seen(request): """ Marks all comment notifications seen. """ - for comment in request.notifications.get_notifications(request.user.id): + for comment in get_notifications(request.user.id): mark_comment_notification_seen(comment.subject_id, request.user) if request.GET.get('next'): -- cgit v1.2.3