mirror of
				https://github.com/ae-utbm/sith.git
				synced 2025-10-30 16:43:55 +00:00 
			
		
		
		
	Almost finish the weekmail
This commit is contained in:
		| @@ -4,6 +4,7 @@ from com.models import * | |||||||
|  |  | ||||||
| admin.site.register(Sith) | admin.site.register(Sith) | ||||||
| admin.site.register(News) | admin.site.register(News) | ||||||
|  | admin.site.register(Weekmail) | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,3 +1,4 @@ | |||||||
|  | from django.shortcuts import render | ||||||
| from django.db import models, transaction | from django.db import models, transaction | ||||||
| from django.utils.translation import ugettext_lazy as _ | from django.utils.translation import ugettext_lazy as _ | ||||||
| from django.core.urlresolvers import reverse_lazy, reverse | from django.core.urlresolvers import reverse_lazy, reverse | ||||||
| @@ -86,15 +87,22 @@ class Weekmail(models.Model): | |||||||
|             print("Sending weekmail n°" + str(self.id)) |             print("Sending weekmail n°" + str(self.id)) | ||||||
|             email = EmailMessage( |             email = EmailMessage( | ||||||
|                     subject=self.title, |                     subject=self.title, | ||||||
|                     body="\n\n".join([self.intro, self.joke, self.protip, self.conclusion]), |                     body=self.render(), | ||||||
|                     from_email=settings.DEFAULT_FROM_EMAIL, |                     from_email=settings.DEFAULT_FROM_EMAIL, | ||||||
|                     to=[], |                     to=['skia@git.an'], | ||||||
|                     bcc=Sith.objects.first().weekmail_destinations.split(' '), |                     bcc=Sith.objects.first().weekmail_destinations.split(' '), | ||||||
|  |                     # TODO: Content-Type: text/html | ||||||
|                     ) |                     ) | ||||||
|  |             email.send() | ||||||
|             self.sent = True |             self.sent = True | ||||||
|             self.save() |             self.save() | ||||||
|             Weekmail().save() |             Weekmail().save() | ||||||
|  |  | ||||||
|  |     def render(self): | ||||||
|  |         return render(None, "com/weekmail_renderer.jinja", context={ | ||||||
|  |             'weekmail': self, | ||||||
|  |             }).content.decode('utf-8') | ||||||
|  |  | ||||||
| class WeekmailArticle(models.Model): | class WeekmailArticle(models.Model): | ||||||
|     weekmail = models.ForeignKey(Weekmail, related_name="articles", verbose_name=_("weekmail"), null=True) |     weekmail = models.ForeignKey(Weekmail, related_name="articles", verbose_name=_("weekmail"), null=True) | ||||||
|     title = models.CharField(_("title"), max_length=64) |     title = models.CharField(_("title"), max_length=64) | ||||||
|   | |||||||
| @@ -7,6 +7,8 @@ | |||||||
|  |  | ||||||
| {% block content %} | {% block content %} | ||||||
| <h3>{% trans %}Weekmail{% endtrans %}</h3> | <h3>{% trans %}Weekmail{% endtrans %}</h3> | ||||||
|  | <p><a href="{{ url('com:weekmail_preview') }}" target="_blank">{% trans %}Preview{% endtrans %}</a></p> | ||||||
|  | <p><a href="?send">{% trans %}Send{% endtrans %}</a></p> | ||||||
| <h4>{% trans %}Articles in no weekmail yet{% endtrans %}</h4> | <h4>{% trans %}Articles in no weekmail yet{% endtrans %}</h4> | ||||||
| <table> | <table> | ||||||
|     <thead> |     <thead> | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								com/templates/com/weekmail_preview.jinja
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								com/templates/com/weekmail_preview.jinja
									
									
									
									
									
										Normal file
									
								
							| @@ -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 %} | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										34
									
								
								com/templates/com/weekmail_renderer.jinja
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								com/templates/com/weekmail_renderer.jinja
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | <h2>{{ weekmail.title }}</h2> | ||||||
|  |  | ||||||
|  | {% if weekmail.intro %} | ||||||
|  | <h3>{% trans %}Intro{% endtrans %}</h3> | ||||||
|  | {{ weekmail.intro|markdown }} | ||||||
|  | {% endif %} | ||||||
|  |  | ||||||
|  | <h3>{% trans %}Table of content{% endtrans %}</h3> | ||||||
|  | <ul> | ||||||
|  |     {% for a in weekmail.articles.all() %} | ||||||
|  |     <li>[{{ a.club }}] {{ a.title }}</li> | ||||||
|  |     {% endfor %} | ||||||
|  | </ul> | ||||||
|  |  | ||||||
|  | {% for a in weekmail.articles.all() %} | ||||||
|  | <h3>[{{ a.club }}] {{ a.title }}</h3> | ||||||
|  | {{ a.content|markdown }} | ||||||
|  | {% endfor %} | ||||||
|  |  | ||||||
|  | {% if weekmail.joke %} | ||||||
|  | <h3>{% trans %}Joke{% endtrans %}</h3> | ||||||
|  | {{ weekmail.joke|markdown }} | ||||||
|  | {% endif %} | ||||||
|  |  | ||||||
|  | {% if weekmail.protip %} | ||||||
|  | <h3>{% trans %}Pro tip{% endtrans %}</h3> | ||||||
|  | {{ weekmail.protip|markdown }} | ||||||
|  | {% endif %} | ||||||
|  |  | ||||||
|  | {% if weekmail.conclusion %} | ||||||
|  | <h3>{% trans %}Final word{% endtrans %}</h3> | ||||||
|  | {{ weekmail.conclusion|markdown }} | ||||||
|  | {% endif %} | ||||||
|  |  | ||||||
| @@ -7,6 +7,7 @@ urlpatterns = [ | |||||||
|     url(r'^sith/edit/info$', InfoMsgEditView.as_view(), name='info_edit'), |     url(r'^sith/edit/info$', InfoMsgEditView.as_view(), name='info_edit'), | ||||||
|     url(r'^sith/edit/index$', IndexEditView.as_view(), name='index_edit'), |     url(r'^sith/edit/index$', IndexEditView.as_view(), name='index_edit'), | ||||||
|     url(r'^weekmail$', WeekmailEditView.as_view(), name='weekmail'), |     url(r'^weekmail$', WeekmailEditView.as_view(), name='weekmail'), | ||||||
|  |     url(r'^weekmail/preview$', WeekmailPreviewView.as_view(), name='weekmail_preview'), | ||||||
|     url(r'^weekmail/club/(?P<club_id>[0-9]+)/new_article$', WeekmailArticleCreateView.as_view(), name='weekmail_article'), |     url(r'^weekmail/club/(?P<club_id>[0-9]+)/new_article$', WeekmailArticleCreateView.as_view(), name='weekmail_article'), | ||||||
|     url(r'^weekmail/article/(?P<article_id>[0-9]+)/delete$', WeekmailArticleDeleteView.as_view(), name='weekmail_article_delete'), |     url(r'^weekmail/article/(?P<article_id>[0-9]+)/delete$', WeekmailArticleDeleteView.as_view(), name='weekmail_article_delete'), | ||||||
|     url(r'^weekmail/article/(?P<article_id>[0-9]+)/edit$', WeekmailArticleEditView.as_view(), name='weekmail_article_edit'), |     url(r'^weekmail/article/(?P<article_id>[0-9]+)/edit$', WeekmailArticleEditView.as_view(), name='weekmail_article_edit'), | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								com/views.py
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								com/views.py
									
									
									
									
									
								
							| @@ -221,6 +221,20 @@ class NewsDetailView(CanViewMixin, DetailView): | |||||||
|  |  | ||||||
| # Weekmail | # 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): | class WeekmailEditView(QuickNotifMixin, UpdateView): | ||||||
|     model = Weekmail |     model = Weekmail | ||||||
|     template_name = 'com/weekmail.jinja' |     template_name = 'com/weekmail.jinja' | ||||||
| @@ -232,6 +246,7 @@ class WeekmailEditView(QuickNotifMixin, UpdateView): | |||||||
|         if not weekmail.title: |         if not weekmail.title: | ||||||
|             now = timezone.now() |             now = timezone.now() | ||||||
|             weekmail.title = _("Weekmail of the ") + (now + timedelta(days=6 - now.weekday())).strftime('%d/%m/%Y') |             weekmail.title = _("Weekmail of the ") + (now + timedelta(days=6 - now.weekday())).strftime('%d/%m/%Y') | ||||||
|  |             weekmail.save() | ||||||
|         return weekmail |         return weekmail | ||||||
|  |  | ||||||
|     def get(self, request, *args, **kwargs): |     def get(self, request, *args, **kwargs): | ||||||
| @@ -265,6 +280,9 @@ class WeekmailEditView(QuickNotifMixin, UpdateView): | |||||||
|             art.rank = -1 |             art.rank = -1 | ||||||
|             art.save() |             art.save() | ||||||
|             self.quick_notif_list += ['qn_success'] |             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) |         return super(WeekmailEditView, self).get(request, *args, **kwargs) | ||||||
|  |  | ||||||
|     def get_context_data(self, **kwargs): |     def get_context_data(self, **kwargs): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user