예제 #1
0
    def handle_noargs(self, **options):  #pylint: disable=unused-argument
        """Function that does the job of the management command"""
        #get size of moderation queue
        translation.activate(django_settings.LANGUAGE_CODE)
        act_types = const.MODERATED_ACTIVITY_TYPES
        queue = Activity.objects.filter(activity_type__in=act_types)

        if queue.count() == 0:
            return

        #get moderators
        mods = get_users_by_role('recv_mod_alerts').order_by('id')
        mods = select_moderators_to_notify(mods, 3)  #todo: add setting
        mods = set(mods)
        all_mods = mods | get_invited_moderators()

        if not all_mods:
            return

        for mod in all_mods:
            email = ModerationQueueNotification({'user': mod})
            email.send([
                mod,
            ])

        if not mods:
            return

        last_mod = select_last_moderator(mods)
        remember_last_moderator(last_mod)
    def handle_noargs(self, **options): #pylint: disable=unused-argument
        """Function that does the job of the management command"""
        #get size of moderation queue
        translation.activate(django_settings.LANGUAGE_CODE)
        act_types = const.MODERATED_ACTIVITY_TYPES
        queue = Activity.objects.filter(activity_type__in=act_types)

        if queue.count() == 0:
            return

        #get moderators
        mods = get_users_by_role('recv_mod_alerts').order_by('id')
        mods = select_moderators_to_notify(mods, 3) #todo: add setting
        mods = set(mods)
        all_mods = mods | get_invited_moderators()

        if not all_mods:
            return

        for mod in all_mods:
            email = ModerationQueueNotification({'user': mod})
            email.send([mod,])

        if not mods:
            return

        last_mod = select_last_moderator(mods)
        remember_last_moderator(last_mod)
    def handle_noargs(self, *args, **kwargs):
        translation.activate(django_settings.LANGUAGE_CODE)
        #get size of moderation queue
        act_types = const.MODERATED_ACTIVITY_TYPES
        queue = Activity.objects.filter(activity_type__in=act_types)

        if queue.count() == 0:
            return

        #get moderators
        mods = get_moderators().order_by('id')
        mods = select_moderators_to_notify(mods, 3)
        mods = set(mods)
        all_mods = mods | get_invited_moderators()

        if len(all_mods) == 0:
            return

        for mod in all_mods:
            email = ModerationQueueNotification({'user': mod})
            email.send([
                mod,
            ])

        if len(mods) == 0:
            return

        last_mod = select_last_moderator(mods)
        remember_last_moderator(last_mod)
    def handle_noargs(self, *args, **kwargs):
        translation.activate(django_settings.LANGUAGE_CODE)
        #get size of moderation queue
        act_types = const.MODERATED_ACTIVITY_TYPES
        queue = Activity.objects.filter(activity_type__in=act_types)

        if queue.count() == 0:
            return

        #get moderators
        mods = get_moderators().order_by('id')
        mods = select_moderators_to_notify(mods, 3)
        mods = set(mods)
        all_mods = mods | get_invited_moderators()

        if len(all_mods) == 0:
            return

        for mod in all_mods:
            email = ModerationQueueNotification({'user': mod})
            email.send([mod,])

        if len(mods) == 0:
            return

        last_mod = select_last_moderator(mods)
        remember_last_moderator(last_mod)
예제 #5
0
def send_instant_notifications_about_activity_in_post(activity_id=None,
                                                      post_id=None,
                                                      recipients=None):

    if recipients is None:
        recipients = set()

    recipients = set(recipients)
    recipients.update(get_invited_moderators())

    if len(recipients) == 0:
        return

    acceptable_types = const.RESPONSE_ACTIVITY_TYPES_FOR_INSTANT_NOTIFICATIONS
    try:
        update_activity = Activity.objects\
            .filter(activity_type__in=acceptable_types)\
            .get(id=activity_id)
    except Activity.DoesNotExist:
        logger.error("Unable to fetch activity with id %s" % post_id)
        return

    try:
        post = Post.objects.get(id=post_id)
    except Post.DoesNotExist:
        logger.error("Unable to fetch post with id %s" % post_id)
        return

    if not post.is_approved():
        return

    if logger.getEffectiveLevel() <= logging.DEBUG:
        log_id = uuid.uuid1()
        message = 'email-alert %s, logId=%s' % (post.get_absolute_url(),
                                                log_id)
        logger.debug(message)
    else:
        log_id = None

    for user in recipients:
        if user.is_blocked():
            continue

        activate_language(post.language_code)

        email = InstantEmailAlert({
            'to_user': user,
            'from_user': update_activity.user,
            'post': post,
            'update_activity': update_activity
        })
        try:
            email.send([user.email])
        except askbot_exceptions.EmailNotSent as error:
            logger.debug('%s, error=%s, logId=%s' %
                         (user.email, error, log_id))
        else:
            logger.debug('success %s, logId=%s' % (user.email, log_id))
예제 #6
0
    def test_get_invited_moderators1(self):
        mods = get_invited_moderators()
        self.assertEqual(len(mods), 2)

        emails = set([m.email for m in mods])
        self.assertEqual(emails, set(['*****@*****.**', '*****@*****.**']))

        names = set([m.username for m in mods])
        self.assertEqual(names, set(['One User', 'Two User']))
예제 #7
0
def send_instant_notifications_about_activity_in_post(
        activity_id=None, post_id=None, recipients=None):

    if recipients is None:
        recipients = set()

    recipients = set(recipients)
    recipients.update(get_invited_moderators())

    if len(recipients) == 0:
        return

    acceptable_types = const.RESPONSE_ACTIVITY_TYPES_FOR_INSTANT_NOTIFICATIONS
    try:
        update_activity = Activity.objects\
            .filter(activity_type__in=acceptable_types)\
            .get(id=activity_id)
    except Activity.DoesNotExist:
        logger.error("Unable to fetch activity with id %s" % post_id)
        return

    try:
        post = Post.objects.get(id=post_id)
    except Post.DoesNotExist:
        logger.error("Unable to fetch post with id %s" % post_id)
        return

    if not post.is_approved():
        return

    if logger.getEffectiveLevel() <= logging.DEBUG:
        log_id = uuid.uuid1()
        message = 'email-alert %s, logId=%s' % (post.get_absolute_url(), log_id)
        logger.debug(message)
    else:
        log_id = None

    for user in recipients:
        if user.is_blocked():
            continue

        activate_language(post.language_code)

        email = InstantEmailAlert({
            'to_user': user,
            'from_user': update_activity.user,
            'post': post,
            'update_activity': update_activity
        })
        try:
            email.send([user.email])
        except askbot_exceptions.EmailNotSent as error:
            logger.debug(
                '%s, error=%s, logId=%s' % (user.email, error, log_id)
            )
        else:
            logger.debug('success %s, logId=%s' % (user.email, log_id))
예제 #8
0
    def test_get_invited_moderators1(self):
        mods = get_invited_moderators()
        self.assertEqual(len(mods), 2)

        emails = set([m.email for m in mods])
        self.assertEqual(emails, set(['*****@*****.**', '*****@*****.**']))

        names = set([m.username for m in mods])
        self.assertEqual(names, set(['One User', 'Two User']))
예제 #9
0
    def test_get_invited_moderators2(self):
        u = self.create_user('One User', '*****@*****.**')
        mods = get_invited_moderators()
        self.assertEqual(len(mods), 1)

        emails = set([m.email for m in mods])
        self.assertEqual(emails, set(['*****@*****.**',]))

        names = set([m.username for m in mods])
        self.assertEqual(names, set(['Two User',]))
예제 #10
0
    def test_get_invited_moderators2(self):
        u = self.create_user('One User', '*****@*****.**')
        mods = get_invited_moderators()
        self.assertEqual(len(mods), 1)

        emails = set([m.email for m in mods])
        self.assertEqual(emails, set(['*****@*****.**',]))

        names = set([m.username for m in mods])
        self.assertEqual(names, set(['Two User',]))
예제 #11
0
 def test_get_invited_moderators0(self):
     mods = get_invited_moderators()
     self.assertEqual(len(mods), 0)
예제 #12
0
 def test_get_invited_moderators0(self):
     mods = get_invited_moderators()
     self.assertEqual(len(mods), 0)