From 1cb7b539fcbdfe53c153c97f651deef44b7395e9 Mon Sep 17 00:00:00 2001 From: Sean Hammond Date: Wed, 14 Nov 2012 18:39:38 +0100 Subject: [PATCH] [#3009] Don't notify a user about her own activities --- ckan/logic/action/get.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/ckan/logic/action/get.py b/ckan/logic/action/get.py index 34d23a20889..98ab706c835 100644 --- a/ckan/logic/action/get.py +++ b/ckan/logic/action/get.py @@ -2228,25 +2228,38 @@ def dashboard_activity_list_html(context, data_dict): def dashboard_new_activities_count(context, data_dict): - '''Return the number of new activities in the user's activity stream. + '''Return the number of new activities in the user's dashboard. Return the number of new activities in the authorized user's dashboard activity stream. + Activities from the user herself are not counted by this function even + though they appear in the dashboard (users don't want to be notified about + things they did themselves). + :rtype: int ''' _check_access('dashboard_new_activities_count', context, data_dict) + activities = logic.get_action('dashboard_activity_list')( + context, data_dict) + model = context['model'] - user = model.User.get(context['user']) # The authorized user. - last_viewed = model.Dashboard.get_activity_stream_last_viewed(user.id) + user_id = model.User.get(context['user']).id + + # Filter out the user's own activities. + activities = [activity for activity in activities + if activity['user_id'] != user_id] + # Filter out the old (already seen) activities. strptime = datetime.datetime.strptime fmt = '%Y-%m-%dT%H:%M:%S.%f' - new_activities = [activity for activity in activities if - strptime(activity['timestamp'], fmt) > last_viewed] - return len(new_activities) + last_viewed = model.Dashboard.get_activity_stream_last_viewed(user_id) + activities = [activity for activity in activities + if strptime(activity['timestamp'], fmt) > last_viewed] + + return len(activities) def dashboard_get_last_viewed(context, data_dict):