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.

views.py 1.8KB

11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from django.shortcuts import render, redirect
  2. from .models import Notice
  3. from django.utils import timezone
  4. from .forms import NoticeForm
  5. from django.contrib.auth.decorators import login_required
  6. from django.contrib import messages
  7. @login_required
  8. def new(request):
  9. if request.method == 'POST':
  10. form = NoticeForm(request.POST)
  11. if form.is_valid():
  12. notice = Notice()
  13. notice.notice_title = form.cleaned_data['notice_title']
  14. notice.notice_text = form.cleaned_data['notice_text']
  15. notice.pub_start = form.cleaned_data['pub_start']
  16. notice.pub_end = form.cleaned_data['pub_end']
  17. notice.user_id = request.user.id
  18. notice.save()
  19. messages.success(request, f"Neue Nachricht erstellt")
  20. return redirect('index')
  21. else:
  22. for msg in form.error_messages:
  23. messages.error(request, f"{msg}: {form.error_messages[msg]}")
  24. context = {'form': NoticeForm()}
  25. return render(request, 'polls/edit.html', context)
  26. @login_required
  27. def delete(request, deleteId=None):
  28. if deleteId is not None:
  29. try:
  30. notice = Notice.objects.get(pk=deleteId)
  31. if request.user.id == notice.user_id or request.user.is_staff:
  32. notice.delete()
  33. messages.success(request, f"Nachricht gelöscht")
  34. else:
  35. messages.warning(request, f"Keine Berechtigung")
  36. except:
  37. messages.warning(request, f"Nachricht nicht gefunden")
  38. return redirect('index')
  39. def index(request):
  40. notices = Notice.objects.all()
  41. notices = notices.filter(pub_start__lte=timezone.now())
  42. notices = notices.filter(pub_end__gte=timezone.now())
  43. context = {'notices': notices}
  44. return render(request, 'polls/index.html', context)