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)
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))
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']))
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))
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',]))
def test_get_invited_moderators0(self): mods = get_invited_moderators() self.assertEqual(len(mods), 0)