From d988c0931556421f16233d77e5f5b76cab7c5e68 Mon Sep 17 00:00:00 2001 From: Skia Date: Tue, 10 Jan 2017 18:30:27 +0100 Subject: [PATCH] Almost finish the weekmail --- com/admin.py | 1 + com/models.py | 12 ++++++-- com/templates/com/weekmail.jinja | 2 ++ com/templates/com/weekmail_preview.jinja | 13 +++++++++ com/templates/com/weekmail_renderer.jinja | 34 +++++++++++++++++++++++ com/urls.py | 1 + com/views.py | 18 ++++++++++++ 7 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 com/templates/com/weekmail_preview.jinja create mode 100644 com/templates/com/weekmail_renderer.jinja diff --git a/com/admin.py b/com/admin.py index b74b7a48..7b04ee8b 100644 --- a/com/admin.py +++ b/com/admin.py @@ -4,6 +4,7 @@ from com.models import * admin.site.register(Sith) admin.site.register(News) +admin.site.register(Weekmail) diff --git a/com/models.py b/com/models.py index 899e2059..b9fafd25 100644 --- a/com/models.py +++ b/com/models.py @@ -1,3 +1,4 @@ +from django.shortcuts import render from django.db import models, transaction from django.utils.translation import ugettext_lazy as _ from django.core.urlresolvers import reverse_lazy, reverse @@ -86,15 +87,22 @@ class Weekmail(models.Model): print("Sending weekmail n°" + str(self.id)) email = EmailMessage( subject=self.title, - body="\n\n".join([self.intro, self.joke, self.protip, self.conclusion]), + body=self.render(), from_email=settings.DEFAULT_FROM_EMAIL, - to=[], + to=['skia@git.an'], bcc=Sith.objects.first().weekmail_destinations.split(' '), + # TODO: Content-Type: text/html ) + email.send() self.sent = True self.save() Weekmail().save() + def render(self): + return render(None, "com/weekmail_renderer.jinja", context={ + 'weekmail': self, + }).content.decode('utf-8') + class WeekmailArticle(models.Model): weekmail = models.ForeignKey(Weekmail, related_name="articles", verbose_name=_("weekmail"), null=True) title = models.CharField(_("title"), max_length=64) diff --git a/com/templates/com/weekmail.jinja b/com/templates/com/weekmail.jinja index d0108ace..d27a2bf0 100644 --- a/com/templates/com/weekmail.jinja +++ b/com/templates/com/weekmail.jinja @@ -7,6 +7,8 @@ {% block content %}

{% trans %}Weekmail{% endtrans %}

+

{% trans %}Preview{% endtrans %}

+

{% trans %}Send{% endtrans %}

{% trans %}Articles in no weekmail yet{% endtrans %}

diff --git a/com/templates/com/weekmail_preview.jinja b/com/templates/com/weekmail_preview.jinja new file mode 100644 index 00000000..31910245 --- /dev/null +++ b/com/templates/com/weekmail_preview.jinja @@ -0,0 +1,13 @@ +{% extends "core/base.jinja" %} +{% from 'core/macros.jinja' import user_profile_link %} + +{% block title %} +{{ weekmail.title }} +{% endblock %} + +{% block content %} +{{ weekmail_rendered|safe }} +{% endblock %} + + + diff --git a/com/templates/com/weekmail_renderer.jinja b/com/templates/com/weekmail_renderer.jinja new file mode 100644 index 00000000..89bc1bb1 --- /dev/null +++ b/com/templates/com/weekmail_renderer.jinja @@ -0,0 +1,34 @@ +

{{ weekmail.title }}

+ +{% if weekmail.intro %} +

{% trans %}Intro{% endtrans %}

+{{ weekmail.intro|markdown }} +{% endif %} + +

{% trans %}Table of content{% endtrans %}

+ + +{% for a in weekmail.articles.all() %} +

[{{ a.club }}] {{ a.title }}

+{{ a.content|markdown }} +{% endfor %} + +{% if weekmail.joke %} +

{% trans %}Joke{% endtrans %}

+{{ weekmail.joke|markdown }} +{% endif %} + +{% if weekmail.protip %} +

{% trans %}Pro tip{% endtrans %}

+{{ weekmail.protip|markdown }} +{% endif %} + +{% if weekmail.conclusion %} +

{% trans %}Final word{% endtrans %}

+{{ weekmail.conclusion|markdown }} +{% endif %} + diff --git a/com/urls.py b/com/urls.py index 48d9ac6d..c963b242 100644 --- a/com/urls.py +++ b/com/urls.py @@ -7,6 +7,7 @@ urlpatterns = [ url(r'^sith/edit/info$', InfoMsgEditView.as_view(), name='info_edit'), url(r'^sith/edit/index$', IndexEditView.as_view(), name='index_edit'), url(r'^weekmail$', WeekmailEditView.as_view(), name='weekmail'), + url(r'^weekmail/preview$', WeekmailPreviewView.as_view(), name='weekmail_preview'), url(r'^weekmail/club/(?P[0-9]+)/new_article$', WeekmailArticleCreateView.as_view(), name='weekmail_article'), url(r'^weekmail/article/(?P[0-9]+)/delete$', WeekmailArticleDeleteView.as_view(), name='weekmail_article_delete'), url(r'^weekmail/article/(?P[0-9]+)/edit$', WeekmailArticleEditView.as_view(), name='weekmail_article_edit'), diff --git a/com/views.py b/com/views.py index 8fdc36c1..abe79dd6 100644 --- a/com/views.py +++ b/com/views.py @@ -221,6 +221,20 @@ class NewsDetailView(CanViewMixin, DetailView): # Weekmail +class WeekmailPreviewView(DetailView): + model = Weekmail + template_name = 'com/weekmail_preview.jinja' + success_url = reverse_lazy('com:weekmail') + + def get_object(self, queryset=None): + return self.model.objects.filter(sent=False).order_by('-id').first() + + def get_context_data(self, **kwargs): + """Add rendered weekmail""" + kwargs = super(WeekmailPreviewView, self).get_context_data(**kwargs) + kwargs['weekmail_rendered'] = self.object.render() + return kwargs + class WeekmailEditView(QuickNotifMixin, UpdateView): model = Weekmail template_name = 'com/weekmail.jinja' @@ -232,6 +246,7 @@ class WeekmailEditView(QuickNotifMixin, UpdateView): if not weekmail.title: now = timezone.now() weekmail.title = _("Weekmail of the ") + (now + timedelta(days=6 - now.weekday())).strftime('%d/%m/%Y') + weekmail.save() return weekmail def get(self, request, *args, **kwargs): @@ -265,6 +280,9 @@ class WeekmailEditView(QuickNotifMixin, UpdateView): art.rank = -1 art.save() self.quick_notif_list += ['qn_success'] + if 'send' in request.GET.keys(): + self.object.send() + self.quick_notif_list += ['qn_success'] return super(WeekmailEditView, self).get(request, *args, **kwargs) def get_context_data(self, **kwargs):