Schule als Staat Projekt Web, Dokumente, etc.
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

138 行
5.6KB

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