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

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