Development of an internal social media platform with personalised dashboards for students
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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. from django.shortcuts import render, get_object_or_404
  2. from django.utils import timezone
  3. from .models import Post
  4. from .forms import PostForm
  5. from django.shortcuts import redirect
  6. from django.contrib.auth.decorators import login_required
  7. from django.contrib.auth import authenticate, login, logout
  8. import logging
  9. import mysite.settings
  10. # Create your views here.
  11. def navlogin(request):
  12. log = logging.getLogger('medinf')
  13. logout(request)
  14. error = ""
  15. if request.POST:
  16. username = request.POST.get("username", "?")
  17. password = request.POST.get("password", "?")
  18. user = authenticate(username=username, password=password)
  19. if user is not None:
  20. if user.is_active:
  21. login(request, user)
  22. return redirect(mysite.settings.LOGIN_REDIRECT_URL)
  23. else:
  24. log.info("Inactive user {} tried to login".format(username))
  25. error = "Ihre Benutzerkennung wurde deaktiviert."
  26. else:
  27. log.info("Login failed for {}".format(username))
  28. error = "Benutzername oder Kennwort falsch."
  29. context = {'error': error}
  30. return render(request, 'index.html', context)
  31. @login_required
  32. def post_list(request):
  33. posts = Post.objects.filter(
  34. published_date__lte=timezone.now()).order_by('published_date')
  35. return render(request, 'post_list.html', {'posts': posts})
  36. @login_required
  37. def post_detail(request, pk):
  38. post = get_object_or_404(Post, pk=pk)
  39. return render(request, 'post_detail.html', {'post': post})
  40. @login_required
  41. def post_new(request):
  42. if request.method == "POST":
  43. form = PostForm(request.POST)
  44. if form.is_valid():
  45. post = form.save(commit=False)
  46. post.author = request.user
  47. post.save()
  48. return redirect('post_detail', pk=post.pk)
  49. else:
  50. form = PostForm()
  51. return render(request, 'post_edit.html', {'form': form})
  52. @login_required
  53. def post_edit(request, pk):
  54. post = get_object_or_404(Post, pk=pk)
  55. if request.method == "POST":
  56. form = PostForm(request.POST, instance=post)
  57. if form.is_valid():
  58. post = form.save(commit=False)
  59. post.author = request.user
  60. post.save()
  61. return redirect('post_detail', pk=post.pk)
  62. else:
  63. form = PostForm(instance=post)
  64. return render(request, 'post_edit.html', {'form': form})
  65. @login_required
  66. def post_draft_list(request):
  67. posts = Post.objects.filter(
  68. published_date__isnull=True).order_by('created_date')
  69. return render(request, 'post_draft_list.html', {'posts': posts})
  70. @login_required
  71. def post_publish(request, pk):
  72. post = get_object_or_404(Post, pk=pk)
  73. post.publish()
  74. return redirect('post_detail', pk=pk)
  75. @login_required
  76. def post_remove(request, pk):
  77. post = get_object_or_404(Post, pk=pk)
  78. post.delete()
  79. return redirect('post_list')