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 2.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from django.contrib.admin.views.decorators import staff_member_required
  2. from django.contrib.auth.decorators import login_required
  3. from django.http import HttpResponse, JsonResponse
  4. from django.shortcuts import render, redirect
  5. from django.utils import timezone
  6. from django.views.decorators.csrf import csrf_exempt
  7. from rest_framework.parsers import JSONParser
  8. from posts.forms import NoticeForm
  9. from posts.models import Notice
  10. # Create your views here.
  11. from posts.serializers import NoticeSerializer
  12. def index(request):
  13. notices = Notice.objects.all()
  14. notices = notices.filter(pub_start__lte=timezone.now())
  15. notices = notices.filter(pub_end__gte=timezone.now())
  16. return render(request, 'posts/notice.html', {'allnotice': notices})
  17. def welcome_seite(request):
  18. return render(request, 'posts/index.html')
  19. def about_seite(request):
  20. return render(request, 'posts/about.html')
  21. @login_required
  22. def new(request):
  23. if request.method == "POST":
  24. form = NoticeForm(request.POST)
  25. if form.is_valid():
  26. newNotice = Notice(notice_title=form.cleaned_data['title'],
  27. notice_text=form.cleaned_data['text'],
  28. pub_start=form.cleaned_data['start'],
  29. pub_end=form.cleaned_data['end'])
  30. newNotice.save()
  31. return redirect('index')
  32. context = {'form': NoticeForm()}
  33. return render(request, 'posts/edit.html', context)
  34. @staff_member_required
  35. def delete(request, deleteId = None):
  36. if deleteId != None:
  37. delNotice = Notice.objects.get(id=deleteId)
  38. if delNotice != None:
  39. delNotice.delete()
  40. return redirect('index')
  41. @csrf_exempt
  42. def notice_list(request):
  43. if request.method == 'GET':
  44. notices = Notice.objects.all()
  45. serializer = NoticeSerializer(notices, many=True)
  46. return JsonResponse(serializer.data, safe=False)
  47. elif request.method=='POST':
  48. data = JSONParser().parse(request)
  49. serializer = NoticeSerializer(data=data)
  50. if serializer.is_valid():
  51. serializer.save()
  52. return JsonResponse(serializer.data, status=201)
  53. return JsonResponse(serializer.errors, status=201)
  54. @csrf_exempt
  55. def notice_detail(request, id):
  56. try:
  57. notice= Notice.objects.get(id =id)
  58. except Notice.DoesNotExist:
  59. return HttpResponse(status=404)
  60. if request.method =='GET':
  61. serializer = NoticeSerializer(notice)
  62. return JsonResponse(serializer.data)
  63. elif request.method =='PUT':
  64. data = JSONParser().parse(request)
  65. serializer = NoticeSerializer(notice, data=data)
  66. if serializer.is_valid():
  67. serializer.save()
  68. return JsonResponse(serializer.data)
  69. return JsonResponse(serializer.errors, status=400)
  70. elif request.method == 'DELETE':
  71. notice.delete()
  72. return HttpResponse(status=204)