From 42fed9ed67c60907a0e35bb0db29cac2a1c2f8a6 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Sun, 20 Nov 2016 13:39:47 +0100 Subject: [PATCH] add subscribe option --- .../mailer/templates/mailer/subscribe.html | 44 ++++++++++++ .../mailer/templates/mailer/subscribed.html | 3 + jdav_web/mailer/urls.py | 3 +- jdav_web/mailer/views.py | 71 ++++++++++++------- 4 files changed, 92 insertions(+), 29 deletions(-) create mode 100644 jdav_web/mailer/templates/mailer/subscribe.html create mode 100644 jdav_web/mailer/templates/mailer/subscribed.html diff --git a/jdav_web/mailer/templates/mailer/subscribe.html b/jdav_web/mailer/templates/mailer/subscribe.html new file mode 100644 index 0000000..66b4223 --- /dev/null +++ b/jdav_web/mailer/templates/mailer/subscribe.html @@ -0,0 +1,44 @@ + + + +{% load i18n %} +

{% trans "Here you can register yourself to the newsletter" %}

+ +{% if error_message %} +

{{ error_message }}

+{% endif %} + +
+ {% csrf_token %} + + +

+ {% trans "Prename" %} + +

+ +

+ {% trans "Lastname" %} + +

+ +

+ {% trans "Birthdate" %} + +

+ + +

+ {% trans "Email address" %} + +

+ +

+ +

+
diff --git a/jdav_web/mailer/templates/mailer/subscribed.html b/jdav_web/mailer/templates/mailer/subscribed.html new file mode 100644 index 0000000..88d79c7 --- /dev/null +++ b/jdav_web/mailer/templates/mailer/subscribed.html @@ -0,0 +1,3 @@ +{% load i18n %} + +

{% trans "Subscribed successfully" %}

diff --git a/jdav_web/mailer/urls.py b/jdav_web/mailer/urls.py index 03ad286..3654aec 100644 --- a/jdav_web/mailer/urls.py +++ b/jdav_web/mailer/urls.py @@ -5,6 +5,5 @@ from . import views app_name = "mailer" urlpatterns = [ url(r'^$', views.index, name='index'), - url(r'^send_mail', views.send_mail, name='send_mail'), - url(r'^send', views.send, name='send') + url(r'^subscribe$', views.subscribe, name='subscribe'), ] diff --git a/jdav_web/mailer/views.py b/jdav_web/mailer/views.py index 9bc0fcb..a21e674 100644 --- a/jdav_web/mailer/views.py +++ b/jdav_web/mailer/views.py @@ -1,40 +1,57 @@ from django.shortcuts import render +from django import forms from django.utils.translation import ugettext_lazy as _ from django.urls import reverse from django.http import HttpResponseRedirect -from django.contrib.auth.decorators import permission_required -from members.models import Group +from members.models import Member -from .models import Message - -@permission_required('mailer.submit_mails', login_url='/admin/') def index(request): - """This is the main newsletter view""" - return render(request, 'mailer/index.html') + return HttpResponseRedirect(reverse('mailer:subscribe')) -@permission_required('mailer.submit_mails', login_url='/admin/') -def send(request): - return render(request, 'mailer/send.html', { - 'groups': Group.objects.all() - }) +def render_subscribe(request, error_message=""): + date_input = forms.DateInput(attrs={'required': True, + 'class': 'datepicker', + 'name': 'birthdate'}) + date_field = date_input.render(_("Birthdate"), "") + context = {'date_field': date_field} + if error_message: + context['error_message'] = error_message + return render(request, 'mailer/subscribe.html', context) -@permission_required('mailer.submit_mails', login_url='/admin/') -def send_mail(request): +def subscribe(request): try: - subject = request.POST['subject'] - content = request.POST['content'] - to_group = Group.objects.get(pk=request.POST['to_group']) - except (KeyError, Group.DoesNotExist): - return render(request, 'mailer/send.html', { - 'error_message': _("Please fill in every field!"), - 'groups': Group.objects.all() - }) - else: - msg = Message(subject=subject, content=content, to_group=to_group) - msg.submit() - msg.save() - return HttpResponseRedirect(reverse('mailer:index')) + request.POST['post'] + try: + print("trying to subscribe") + prename = request.POST['prename'] + lastname = request.POST['lastname'] + email = request.POST['email'] + print("email", email) + birth_date = request.POST['birthdate'] + print("birthdate", birth_date) + except KeyError: + return subscribe(request, _("Please fill in every field!")) + else: + # TODO: check whether member exists + exists = Member.objects.filter(prename=prename, + lastname=lastname) + if len(exists) > 0: + return render_subscribe(request, + error_message=_("Member already exists")) + member = Member(prename=prename, + lastname=lastname, + email=email, + birth_date=birth_date, + gets_newsletter=True) + member.save() + return subscribed(request) + except KeyError: + return render_subscribe(request) + + +def subscribed(request): + return render(request, 'mailer/subscribed.html')