# HG changeset patch # User ymh # Date 1425599914 -3600 # Node ID efd1aaee4b0c8c50a20426390b6f02c7484b143e # Parent 2ae9914d4147d7323c340d1d9866b39c88aa3957 add moderation command diff -r 2ae9914d4147 -r efd1aaee4b0c .settings/org.eclipse.core.resources.prefs --- a/.settings/org.eclipse.core.resources.prefs Thu Mar 05 16:58:40 2015 +0100 +++ b/.settings/org.eclipse.core.resources.prefs Fri Mar 06 00:58:34 2015 +0100 @@ -47,6 +47,7 @@ encoding//src/hdalab/management/commands/query_dbpedia.py=utf-8 encoding//src/hdalab/management/commands/query_geo_inclusion.py=utf-8 encoding//src/hdalab/management/commands/query_wikipedia_category.py=utf-8 +encoding//src/hdalab/management/commands/send_moderation_mail.py=utf-8 encoding//src/hdalab/management/utils.py=utf-8 encoding//src/hdalab/migrations/0001_initial.py=utf-8 encoding//src/hdalab/migrations/0002_dataviz.py=utf-8 diff -r 2ae9914d4147 -r efd1aaee4b0c src/hdalab/management/commands/send_moderation_mail.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hdalab/management/commands/send_moderation_mail.py Fri Mar 06 00:58:34 2015 +0100 @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +''' +Created on Mar 5, 2015 + +@author: ymh +''' + +import logging + +from django.conf import settings +from django.contrib.auth import get_user_model +from django.core import mail +from django.core.mail.message import EmailMultiAlternatives +from django.core.management.base import NoArgsCommand +from django.template.base import TemplateDoesNotExist +from django.template.loader import render_to_string + +from hdalab.models.renkan import HdalabRenkan + + +User = get_user_model() +logger = logging.getLogger(__name__) + +TEMPLATE_NAME = "mails/moderation_notice" +class Command(NoArgsCommand): + + def handle_noargs(self, **options): + # query renkan to moderate + renkan_query = HdalabRenkan.objects.filter(state=HdalabRenkan.MODERATED) + + renkan_count = renkan_query.count() + + if renkan_count == 0: + logger.info("Send moderation email : no renkan to moderate. exiting") + logger.debug("Send moderation email : %d renkan(s) to moderate", renkan_count) + + renkan_list = list(renkan_query.select_related()[:20]) + + connection = mail.get_connection() + try: + connection.open() + for email_recipient in User.objects.filter(is_staff=True): + if not email_recipient.email: + continue + + msg_html = "" + msg_txt = "" + try: + context = { + 'renkan_count': renkan_count, + 'renkan_list': renkan_list, + 'WEB_URL': settings.WEB_URL, + 'email_recipient': email_recipient + } + msg_html = render_to_string(TEMPLATE_NAME+".txt", context) + msg_txt = render_to_string(TEMPLATE_NAME+".html", context) + except TemplateDoesNotExist: + logger.error("Mail template %s not found", TEMPLATE_NAME) + return + except Exception as e: + logger.error("Error rendering template %s : %r", TEMPLATE_NAME, e) + raise e + + if not msg_html and not msg_txt: + logger.info("Send moderation email: nothing to email exiting") + continue + emsg = EmailMultiAlternatives("Moderation Renkan", msg_txt, settings.DEFAULT_FROM_EMAIL, [email_recipient.email], connection=connection) + emsg.attach_alternative(msg_html, "text/html") + emsg.send(fail_silently=True) + finally: + connection.close() + \ No newline at end of file diff -r 2ae9914d4147 -r efd1aaee4b0c src/hdalab/templates/mails/moderation_notice.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hdalab/templates/mails/moderation_notice.html Fri Mar 06 00:58:34 2015 +0100 @@ -0,0 +1,212 @@ + + + + + + +Renkan à modérer + + + + + + + + + + + + +
+ + +
+ + + + +
+

Bonjour {{ email_recipient.username }},

+

Vous avez {{ renkan_count }} renkan à modérer.

+

Vous pouvez le faire à l'adresse suivante : {{WEB_URL}}{% url 'manage_renkans' %}

+

+

Bonne journée.

+
+
+ + +
+ + + + \ No newline at end of file diff -r 2ae9914d4147 -r efd1aaee4b0c src/hdalab/templates/mails/moderation_notice.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/hdalab/templates/mails/moderation_notice.txt Fri Mar 06 00:58:34 2015 +0100 @@ -0,0 +1,6 @@ +Bonjour {{ email_recipient.username }}, + +Vous avez {{ renkan_count }} renkan à modérer. +Vous pouvez le faire à l'adresse suivante : {{WEB_URL}}{% url 'manage_renkans' %} + +Bonne journée.