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
            )
예제 #2
0
파일: tests.py 프로젝트: incommon/lernanta
    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)
예제 #3
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)
예제 #4
0
파일: views.py 프로젝트: d6-9b/lernanta
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))
예제 #5
0
파일: views.py 프로젝트: svoigt/lernanta
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)
예제 #7
0
파일: tests.py 프로젝트: incommon/lernanta
    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)
예제 #8
0
    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)