from django.shortcuts import render from django import forms from django.conf import settings from captcha.fields import CaptchaField from .models import Betrieb, Partei, PresidentCandidate, Question from .mailutils import send_from_arbeitsministerium, send_from_info class BetriebForm(forms.Form): name = forms.CharField(label='Name des Betriebs', max_length=100) manager = forms.CharField(label='Betriebsleiter', max_length=200) email = forms.EmailField(label='Kontakt Email') business_idea = forms.CharField(label='Idee', widget=forms.Textarea) captcha = CaptchaField() class ParteiForm(forms.Form): name = forms.CharField(label='Name der Partei', max_length=100) abbreviation = forms.CharField(label='Abkürzung', max_length=5) chef = forms.CharField(label='Parteivorsitzende', max_length=200) email = forms.EmailField(label='Kontakt Email') description = forms.CharField(label='Beschreibung', widget=forms.Textarea) captcha = CaptchaField() class PresidentForm(forms.Form): name = forms.CharField(label='Name', max_length=100) email = forms.EmailField(label='Kontakt Email') motivation = forms.CharField(label='Motivation', widget=forms.Textarea) captcha = CaptchaField() class QuestionForm(forms.Form): subject = forms.CharField(label='Thema', max_length=100) email = forms.EmailField(label='Kontakt Email') content = forms.CharField(label='Frage', widget=forms.Textarea) captcha = CaptchaField() # Create your views here. def index(request): return render(request, "meingoethopia/index.html") def betrieb_new(request): if request.method == 'POST': form = BetriebForm(request.POST) if form.is_valid(): betrieb = Betrieb(name=form.cleaned_data.get('name'), manager=form.cleaned_data.get('manager'), email=form.cleaned_data.get('email'), business_idea=form.cleaned_data.get('business_idea'), ip_address=get_client_ip(request), confirmed=False) betrieb.save() send_from_arbeitsministerium( 'Anmeldung des Betriebs: {}'.format(betrieb.name), MAIL_CONTENT_BETRIEB.format(name=betrieb.manager), [betrieb.email] ) return render(request, 'meingoethopia/confirmed.html', {'betrieb': betrieb}) else: form = BetriebForm() return render(request, "meingoethopia/betrieb_new.html", {'form': form}) def partei_new(request): if request.method == 'POST': form = ParteiForm(request.POST) if form.is_valid(): partei = Partei(name=form.cleaned_data.get('name'), abbreviation=form.cleaned_data.get('abbreviation'), chef=form.cleaned_data.get('chef'), email=form.cleaned_data.get('email'), description=form.cleaned_data.get('description'), ip_address=get_client_ip(request), confirmed=False) partei.save() return render_confirmation(request) else: form = ParteiForm() return render(request, "meingoethopia/partei_new.html", {'form': form}) def praesident_werden(request): if request.method == 'POST': form = PresidentForm(request.POST) if form.is_valid(): president = PresidentCandidate(name=form.cleaned_data.get('name'), email=form.cleaned_data.get('email'), motivation=form.cleaned_data.get('motivation'), ip_address=get_client_ip(request), confirmed=False) president.save() return render_confirmation(request) else: form = PresidentForm() return render(request, "meingoethopia/president.html", {'form': form}) def question_new(request): if request.method == 'POST': form = QuestionForm(request.POST) if form.is_valid(): question = Question(subject=form.cleaned_data.get('subject'), email=form.cleaned_data.get('email'), content=form.cleaned_data.get('content'), ip_address=get_client_ip(request), answered=False) question.save() send_from_info(question.subject, question.content, settings.EMAIL_INFO, reply_to=[question.email]) return render_confirmation(request) else: form = QuestionForm() return render(request, "meingoethopia/question_new.html", {'form': form}) def render_confirmation(request): return render(request, "meingoethopia/confirmed.html") def get_client_ip(request): x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[0] else: ip = request.META.get('REMOTE_ADDR') return ip MAIL_CONTENT_BETRIEB = "Lieber {name},\nvielen Dank für die Anmeldung Deines" \ " Betriebes. Die Informationsveranstaltungen beginnen erst im Februar, deshalb\n" \ "wird sich das Arbeitsministerium dann erst mit Dir in Verbindung setzen.\n\n" \ "Bei weiteren Fragen kannst du gerne info@goethopia.de anschreiben, oder \n" \ "uns direkt über arbeitsministerium@goethopia.de erreichen, wenn es um einen \n" \ "Betrieb geht. Darüber hinaus möchten wir dich darauf hinweisen, dass du Parteien, \n" \ "die mit deinen Interessen als Betriebsleiter übereinstimmen, natürlich tatkräftig \n" \ "unterstützen kannst in Form von Mitgliedschaft oder Unterstützung per Unterschrift.\n\n" \ "Viele Grüße,\n" \ "Organisation Goethopia"