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 }}
+ {% endfor %}
+
+
+{% 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):