Lösungen der Aufgaben vom Kurs MEIM1 - Web Engineering von Prof. Hofmann
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 3.1KB

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