Schule als Staat Projekt Web, Dokumente, etc.
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

118 行
4.3KB

  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')
  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')
  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')
  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')
  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. confirmed=False)
  56. partei.save()
  57. return render_confirmation(request)
  58. else:
  59. form = ParteiForm()
  60. return render(request, "meingoethopia/partei_new.html", {'form': form})
  61. def praesident_werden(request):
  62. if request.method == 'POST':
  63. form = PresidentForm(request.POST)
  64. if form.is_valid():
  65. president = PresidentCandidate(name=form.cleaned_data.get('name'),
  66. email=form.cleaned_data.get('email'),
  67. motivation=form.cleaned_data.get('motivation'),
  68. confirmed=False)
  69. president.save()
  70. return render_confirmation(request)
  71. else:
  72. form = PresidentForm()
  73. return render(request, "meingoethopia/president.html", {'form': form})
  74. def question_new(request):
  75. if request.method == 'POST':
  76. form = QuestionForm(request.POST)
  77. if form.is_valid():
  78. question = Question(subject=form.cleaned_data.get('subject'),
  79. email=form.cleaned_data.get('email'),
  80. content=form.cleaned_data.get('content'),
  81. answered=False)
  82. question.save()
  83. return render_confirmation(request)
  84. else:
  85. form = QuestionForm()
  86. return render(request, "meingoethopia/question_new.html", {'form': form})
  87. def render_confirmation(request):
  88. return render(request, "meingoethopia/confirmed.html")
  89. def get_client_ip(request):
  90. x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
  91. if x_forwarded_for:
  92. ip = x_forwarded_for.split(',')[0]
  93. else:
  94. ip = request.META.get('REMOTE_ADDR')
  95. return ip