def handle(self, *args, **options): preference_to_category = { 'no_email_message_received': 'direct-message', 'no_email_new_follower': 'new-follower', 'no_email_new_project_follower': 'course-signup', 'no_email_new_badge_submission': 'badge-submission' } for preference in AccountPreferences.objects.all(): set_notification_subscription( preference.user, preference_to_category[preference.key], False ) unsubscribes = Participation.objects.filter(left_on__isnull=True).filter( Q(no_organizers_wall_updates=True) | Q(no_organizers_content_updates=True) | Q(no_participants_wall_updates=True) | Q(no_participants_content_updates=True) ) for unsubscribe in unsubscribes: set_notification_subscription( unsubscribe.user, u'project-{0}'.format(unsubscribe.project.slug), False )
def test_no_new_follower_email_preference(self): """ Test user is *not* emailed when they get a new follower when that user does *not* want to be emailed when they get a new follower. """ set_notification_subscription(self.user_two, 'new-follower', False) relationship = Relationship( source=self.user_one, target_user=self.user_two, ) relationship.save() self.assertEquals(len(mail.outbox), 0)
def test_no_new_follower_email_preference(self): """ Test user is *not* emailed when they get a new follower when that user does *not* want to be emailed when they get a new follower. """ set_notification_subscription(self.user_two, 'new-follower', False) relationship = Relationship( source=self.user_one, target_user=self.user_two, ) relationship.save() self.assertEquals(len(mail.outbox), 0)
def notifications(request): profile = request.user.get_profile() unsubscribes = get_user_unsubscribes(profile) subscriptions = [] if request.user.is_superuser: subscriptions += [('Admin notifications', get_notification_categories()[1:3])] subscriptions += [('Notifications about', get_notification_categories()[3:])] user_courses = profile.get_current_projects() all_courses = user_courses['organizing'] + user_courses[ 'participating'] + user_courses['following'] sources = [] for course in all_courses: if '/groups/' in course['url']: category = u'project-{0}'.format(course['id']) else: category = u'course-{0}'.format(course['id']) sources += [{ 'category': category, 'description': u'{0}'.format(course['title']) }] subscriptions += [(_('Notifications from'), sources)] if request.method == 'POST': for category in request.POST.keys(): set_notification_subscription(profile, category, True) all_categories = get_notification_categories()[1:] + sources for category in [ c['category'] for c in all_categories if c['category'] not in request.POST.keys() ]: set_notification_subscription(profile, category, False) return HttpResponseRedirect(reverse('preferences_notifications')) context = { 'domain': Site.objects.get_current().domain, 'notifications_tab': True, 'subscriptions': subscriptions, 'unsubscribes': unsubscribes } return render_to_response('preferences/notifications.html', context, context_instance=RequestContext(request))
def notifications(request): profile = request.user.get_profile() unsubscribes = get_user_unsubscribes(profile) subscriptions = [] if request.user.is_superuser: subscriptions += [ ('Admin notifications', get_notification_categories()[1:3]) ] subscriptions += [ ('Notifications about', get_notification_categories()[3:]) ] user_courses = profile.get_current_projects() all_courses = user_courses['organizing'] + user_courses['participating'] + user_courses['following'] sources = [] for course in all_courses: if '/groups/' in course['url']: category = u'project-{0}'.format(course['id']) else: category = 'course-{0}'.format(course['id']) sources += [{'category': category, 'description': '{0}'.format(course['title'])} ] subscriptions += [(_('Notifications from'), sources)] if request.method == 'POST': for category in request.POST.keys(): set_notification_subscription(profile, category, True) all_categories = get_notification_categories()[1:] + sources for category in [c['category'] for c in all_categories if c['category'] not in request.POST.keys()]: set_notification_subscription(profile, category, False) return HttpResponseRedirect(reverse('preferences_notifications')) context = { 'domain': Site.objects.get_current().domain, 'notifications_tab': True, 'subscriptions': subscriptions, 'unsubscribes': unsubscribes } return render_to_response('preferences/notifications.html', context, context_instance=RequestContext(request))
def handle(self, *args, **options): preference_to_category = { 'no_email_message_received': 'direct-message', 'no_email_new_follower': 'new-follower', 'no_email_new_project_follower': 'course-signup', 'no_email_new_badge_submission': 'badge-submission' } for preference in AccountPreferences.objects.all(): set_notification_subscription( preference.user, preference_to_category[preference.key], False) unsubscribes = Participation.objects.filter( left_on__isnull=True).filter( Q(no_organizers_wall_updates=True) | Q(no_organizers_content_updates=True) | Q(no_participants_wall_updates=True) | Q(no_participants_content_updates=True)) for unsubscribe in unsubscribes: set_notification_subscription( unsubscribe.user, u'project-{0}'.format(unsubscribe.project.slug), False)
def test_notification_subscription(self): """ Test if notification subscriptions work """ res = get_notification_subscription(self.user_one, '') self.assertFalse(res) res = get_notification_subscription(self.user_one, 'course-announcement.course-1') self.assertTrue(res) with self.assertRaises(Exception): res = get_notification_subscription(self.user_one, 'whatever') set_notification_subscription(self.user_one, 'course-announcement.course-1', False) res = get_notification_subscription(self.user_one, 'course-announcement.course-1') self.assertFalse(res) res = get_notification_subscription(self.user_one, 'course-announcement.course-2') self.assertTrue(res) set_notification_subscription(self.user_one, 'course-announcement', False) res = get_notification_subscription(self.user_one, 'course-announcement.course-2') self.assertFalse(res) set_notification_subscription(self.user_one, 'course-announcement', True) res = get_notification_subscription(self.user_one, 'course-announcement.course-2') self.assertTrue(res) set_notification_subscription(self.user_one, 'course-announcement.course-1', True) res = get_notification_subscription(self.user_one, 'course-announcement.course-1') self.assertTrue(res) set_notification_subscription(self.user_one, 'course-3', False) res = get_notification_subscription(self.user_one, 'course-signup.course-3') self.assertFalse(res) set_notification_subscription(self.user_one, 'course-3', False) res = get_notification_subscription(self.user_one, 'course-signup.course-3') self.assertFalse(res)
def test_notification_subscription(self): """ Test if notification subscriptions work """ res = get_notification_subscription(self.user_one, '') self.assertFalse(res) res = get_notification_subscription(self.user_one, 'course-announcement.course-1') self.assertTrue(res) with self.assertRaises(Exception): res = get_notification_subscription(self.user_one, 'whatever') set_notification_subscription(self.user_one, 'course-announcement.course-1', False) res = get_notification_subscription(self.user_one, 'course-announcement.course-1') self.assertFalse(res) res = get_notification_subscription(self.user_one, 'course-announcement.course-2') self.assertTrue(res) set_notification_subscription(self.user_one, 'course-announcement', False) res = get_notification_subscription(self.user_one, 'course-announcement.course-2') self.assertFalse(res) set_notification_subscription(self.user_one, 'course-announcement', True) res = get_notification_subscription(self.user_one, 'course-announcement.course-2') self.assertTrue(res) set_notification_subscription(self.user_one, 'course-announcement.course-1', True) res = get_notification_subscription(self.user_one, 'course-announcement.course-1') self.assertTrue(res) set_notification_subscription(self.user_one, 'course-3', False) res = get_notification_subscription(self.user_one, 'course-signup.course-3') self.assertFalse(res) set_notification_subscription(self.user_one, 'course-3', False) res = get_notification_subscription(self.user_one, 'course-signup.course-3') self.assertFalse(res)