Schule als Staat Projekt Web, Dokumente, etc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
5.8KB

  1. from django.shortcuts import render
  2. from django import forms
  3. from django.conf import settings
  4. from captcha.fields import CaptchaField
  5. from .models import Betrieb, Partei, PresidentCandidate, Question
  6. from .mailutils import send_from_arbeitsministerium, send_from_info
  7. class BetriebForm(forms.Form):
  8. name = forms.CharField(label='Name des Betriebs', max_length=100)
  9. manager = forms.CharField(label='Betriebsleiter', max_length=200)
  10. email = forms.EmailField(label='Kontakt Email')
  11. business_idea = forms.CharField(label='Idee', widget=forms.Textarea)
  12. captcha = CaptchaField()
  13. class ParteiForm(forms.Form):
  14. name = forms.CharField(label='Name der Partei', max_length=100)
  15. abbreviation = forms.CharField(label='Abkürzung', max_length=5)
  16. chef = forms.CharField(label='Parteivorsitzende', max_length=200)
  17. email = forms.EmailField(label='Kontakt Email')
  18. description = forms.CharField(label='Beschreibung', widget=forms.Textarea)
  19. captcha = CaptchaField()
  20. class PresidentForm(forms.Form):
  21. name = forms.CharField(label='Name', max_length=100)
  22. email = forms.EmailField(label='Kontakt Email')
  23. motivation = forms.CharField(label='Motivation', widget=forms.Textarea)
  24. captcha = CaptchaField()
  25. class QuestionForm(forms.Form):
  26. subject = forms.CharField(label='Thema', max_length=100)
  27. email = forms.EmailField(label='Kontakt Email')
  28. content = forms.CharField(label='Frage', widget=forms.Textarea)
  29. captcha = CaptchaField()
  30. # Create your views here.
  31. def index(request):
  32. return render(request, "meingoethopia/index.html")
  33. def betrieb_new(request):
  34. if request.method == 'POST':
  35. form = BetriebForm(request.POST)
  36. if form.is_valid():
  37. betrieb = Betrieb(name=form.cleaned_data.get('name'),
  38. manager=form.cleaned_data.get('manager'),
  39. email=form.cleaned_data.get('email'),
  40. business_idea=form.cleaned_data.get('business_idea'),
  41. ip_address=get_client_ip(request),
  42. confirmed=False)
  43. betrieb.save()
  44. send_from_arbeitsministerium(
  45. 'Anmeldung des Betriebs: {}'.format(betrieb.name),
  46. MAIL_CONTENT_BETRIEB.format(name=betrieb.manager), [betrieb.email]
  47. )
  48. return render(request, 'meingoethopia/confirmed.html',
  49. {'betrieb': betrieb})
  50. else:
  51. form = BetriebForm()
  52. return render(request, "meingoethopia/betrieb_new.html", {'form': form})
  53. def partei_new(request):
  54. if request.method == 'POST':
  55. form = ParteiForm(request.POST)
  56. if form.is_valid():
  57. partei = Partei(name=form.cleaned_data.get('name'),
  58. abbreviation=form.cleaned_data.get('abbreviation'),
  59. chef=form.cleaned_data.get('chef'),
  60. email=form.cleaned_data.get('email'),
  61. description=form.cleaned_data.get('description'),
  62. ip_address=get_client_ip(request),
  63. confirmed=False)
  64. partei.save()
  65. return render_confirmation(request)
  66. else:
  67. form = ParteiForm()
  68. return render(request, "meingoethopia/partei_new.html", {'form': form})
  69. def praesident_werden(request):
  70. if request.method == 'POST':
  71. form = PresidentForm(request.POST)
  72. if form.is_valid():
  73. president = PresidentCandidate(name=form.cleaned_data.get('name'),
  74. email=form.cleaned_data.get('email'),
  75. motivation=form.cleaned_data.get('motivation'),
  76. ip_address=get_client_ip(request),
  77. confirmed=False)
  78. president.save()
  79. return render_confirmation(request)
  80. else:
  81. form = PresidentForm()
  82. return render(request, "meingoethopia/president.html", {'form': form})
  83. def question_new(request):
  84. if request.method == 'POST':
  85. form = QuestionForm(request.POST)
  86. if form.is_valid():
  87. question = Question(subject=form.cleaned_data.get('subject'),
  88. email=form.cleaned_data.get('email'),
  89. content=form.cleaned_data.get('content'),
  90. ip_address=get_client_ip(request),
  91. answered=False)
  92. question.save()
  93. send_from_info(question.subject, question.content,
  94. settings.EMAIL_INFO, reply_to=[question.email])
  95. return render_confirmation(request)
  96. else:
  97. form = QuestionForm()
  98. return render(request, "meingoethopia/question_new.html", {'form': form})
  99. def render_confirmation(request):
  100. return render(request, "meingoethopia/confirmed.html")
  101. def get_client_ip(request):
  102. x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
  103. if x_forwarded_for:
  104. ip = x_forwarded_for.split(',')[0]
  105. else:
  106. ip = request.META.get('REMOTE_ADDR')
  107. return ip
  108. MAIL_CONTENT_BETRIEB = "Lieber {name},\nvielen Dank für die Anmeldung Deines" \
  109. " Betriebes. Die Informationsveranstaltungen beginnen erst im Februar, deshalb\n" \
  110. "wird sich das Arbeitsministerium dann erst mit Dir in Verbindung setzen.\n\n" \
  111. "Bei weiteren Fragen kannst du gerne info@goethopia.de anschreiben, oder \n" \
  112. "uns direkt über arbeitsministerium@goethopia.de erreichen, wenn es um einen \n" \
  113. "Betrieb geht. Darüber hinaus möchten wir dich darauf hinweisen, dass du Parteien, \n" \
  114. "die mit deinen Interessen als Betriebsleiter übereinstimmen, natürlich tatkräftig \n" \
  115. "unterstützen kannst in Form von Mitgliedschaft oder Unterstützung per Unterschrift.\n\n" \
  116. "Viele Grüße,\n" \
  117. "Organisation Goethopia"