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

121 行
4.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. class BetriebForm(forms.Form):
  6. name = forms.CharField(label='Name des Betriebs', max_length=100)
  7. manager = forms.CharField(label='Betriebsleiter', max_length=200)
  8. email = forms.EmailField(label='Kontakt Email')
  9. business_idea = forms.CharField(label='Idee', widget=forms.Textarea)
  10. captcha = CaptchaField()
  11. class ParteiForm(forms.Form):
  12. name = forms.CharField(label='Name der Partei', max_length=100)
  13. abbreviation = forms.CharField(label='Abkürzung', max_length=5)
  14. chef = forms.CharField(label='Parteivorsitzende', max_length=200)
  15. email = forms.EmailField(label='Kontakt Email')
  16. description = forms.CharField(label='Beschreibung', widget=forms.Textarea)
  17. captcha = CaptchaField()
  18. class PresidentForm(forms.Form):
  19. name = forms.CharField(label='Name', max_length=100)
  20. email = forms.EmailField(label='Kontakt Email')
  21. motivation = forms.CharField(label='Motivation', widget=forms.Textarea)
  22. captcha = CaptchaField()
  23. class QuestionForm(forms.Form):
  24. subject = forms.CharField(label='Thema', max_length=100)
  25. email = forms.EmailField(label='Kontakt Email')
  26. content = forms.CharField(label='Frage', widget=forms.Textarea)
  27. captcha = CaptchaField()
  28. # Create your views here.
  29. def index(request):
  30. return render(request, "meingoethopia/index.html")
  31. def betrieb_new(request):
  32. if request.method == 'POST':
  33. form = BetriebForm(request.POST)
  34. if form.is_valid():
  35. betrieb = Betrieb(name=form.cleaned_data.get('name'),
  36. manager=form.cleaned_data.get('manager'),
  37. email=form.cleaned_data.get('email'),
  38. business_idea=form.cleaned_data.get('business_idea'),
  39. ip_address=get_client_ip(request),
  40. confirmed=False)
  41. betrieb.save()
  42. return render_confirmation(request)
  43. else:
  44. form = BetriebForm()
  45. return render(request, "meingoethopia/betrieb_new.html", {'form': form})
  46. def partei_new(request):
  47. if request.method == 'POST':
  48. form = ParteiForm(request.POST)
  49. if form.is_valid():
  50. partei = Partei(name=form.cleaned_data.get('name'),
  51. abbreviation=form.cleaned_data.get('abbreviation'),
  52. chef=form.cleaned_data.get('chef'),
  53. email=form.cleaned_data.get('email'),
  54. description=form.cleaned_data.get('description'),
  55. ip_address=get_client_ip(request),
  56. confirmed=False)
  57. partei.save()
  58. return render_confirmation(request)
  59. else:
  60. form = ParteiForm()
  61. return render(request, "meingoethopia/partei_new.html", {'form': form})
  62. def praesident_werden(request):
  63. if request.method == 'POST':
  64. form = PresidentForm(request.POST)
  65. if form.is_valid():
  66. president = PresidentCandidate(name=form.cleaned_data.get('name'),
  67. email=form.cleaned_data.get('email'),
  68. motivation=form.cleaned_data.get('motivation'),
  69. ip_address=get_client_ip(request),
  70. confirmed=False)
  71. president.save()
  72. return render_confirmation(request)
  73. else:
  74. form = PresidentForm()
  75. return render(request, "meingoethopia/president.html", {'form': form})
  76. def question_new(request):
  77. if request.method == 'POST':
  78. form = QuestionForm(request.POST)
  79. if form.is_valid():
  80. question = Question(subject=form.cleaned_data.get('subject'),
  81. email=form.cleaned_data.get('email'),
  82. content=form.cleaned_data.get('content'),
  83. ip_address=get_client_ip(request),
  84. answered=False)
  85. question.save()
  86. return render_confirmation(request)
  87. else:
  88. form = QuestionForm()
  89. return render(request, "meingoethopia/question_new.html", {'form': form})
  90. def render_confirmation(request):
  91. return render(request, "meingoethopia/confirmed.html")
  92. def get_client_ip(request):
  93. x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
  94. if x_forwarded_for:
  95. ip = x_forwarded_for.split(',')[0]
  96. else:
  97. ip = request.META.get('REMOTE_ADDR')
  98. return ip