Advertisement
themaleem

user_views.py

Jul 14th, 2023
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.83 KB | None | 0 0
  1. from django.contrib import messages
  2. from django.core.paginator import Paginator
  3. from django.shortcuts import render, redirect
  4. from django.contrib.auth.views import LogoutView
  5. from django.contrib.auth import authenticate, login
  6. from django.contrib.auth import update_session_auth_hash
  7. from django.contrib.auth.decorators import login_required
  8.  
  9. from .models import Student
  10. from .forms import CustomPasswordChangeForm
  11. from studentregistration.models import Registration
  12. from .forms import (
  13. StudentRegistrationForm,
  14. CustomLoginForm,
  15. UserUpdateForm,
  16. ProfileUpdateForm,
  17. )
  18. from .custom_decorators import login_required_message
  19.  
  20.  
  21. def login_view(request):
  22. if request.method == "POST":
  23. form = CustomLoginForm(data=request.POST)
  24. if form.is_valid():
  25. username = form.cleaned_data.get("username")
  26. password = form.cleaned_data.get("password")
  27. user = authenticate(request, username=username, password=password)
  28. if user is not None:
  29. login(request, user)
  30. messages.success(request, "Successfully logged in")
  31. # Retrieve the 'next' parameter or dashboard
  32. redirect_to = request.GET.get("next", "dashboard")
  33. return redirect(redirect_to)
  34. else:
  35. messages.warning(request, "Unable to login!")
  36. else:
  37. form = CustomLoginForm()
  38.  
  39. return render(request, "users/login.html", {"title": "Sign In", "form": form})
  40.  
  41.  
  42. def register(request):
  43. if request.method == "POST":
  44. form = StudentRegistrationForm(request.POST)
  45. if form.is_valid():
  46. user = form.save(commit=False)
  47. student = Student(
  48. user=user,
  49. course=form.cleaned_data["course"],
  50. )
  51. user.save()
  52. student.save()
  53. messages.success(
  54. request, "Your account has been created! Now you can login!"
  55. )
  56. # Redirect to login page on success
  57. return redirect("login")
  58. else:
  59. messages.warning(request, "Unable to create account!")
  60. else:
  61. form = StudentRegistrationForm()
  62.  
  63. context = {"title": "Sign Up", "form": form}
  64. return render(request, "users/register.html", context)
  65.  
  66.  
  67. @login_required_message
  68. @login_required
  69. def dashboard(request):
  70. # Get the modules for the courses
  71. course = request.user.student.course
  72. modules = course.modules.all().order_by("name")
  73.  
  74. # Get the registrations for the student
  75. registrations = Registration.objects.filter(student=request.user.student)
  76.  
  77. # paginate the modules
  78. paginated_modules = Paginator(modules, 2)
  79. page_list = request.GET.get("page")
  80. paginated_modules = paginated_modules.get_page(page_list)
  81. context = {
  82. "title": "Student Dashboard",
  83. "modules": modules,
  84. "registrations": registrations,
  85. "paginated_modules": paginated_modules,
  86. }
  87. return render(request, "users/dashboard.html", context)
  88.  
  89.  
  90. @login_required_message
  91. @login_required
  92. def profile(request):
  93. if request.method == "POST":
  94. # Handle form submission
  95. u_form = UserUpdateForm(request.POST, instance=request.user)
  96. p_form = ProfileUpdateForm(
  97. request.POST, request.FILES, instance=request.user.student
  98. )
  99. if u_form.is_valid() and p_form.is_valid():
  100. u_form.save()
  101. p_form.save()
  102. messages.success(request, "Your profile was successfully updated")
  103. return redirect("profile")
  104. else:
  105. messages.warning(request, "Profile could not be updated!")
  106. else:
  107. # Display the profile form
  108. u_form = UserUpdateForm(instance=request.user)
  109. p_form = ProfileUpdateForm(instance=request.user.student)
  110. context = {"u_form": u_form, "p_form": p_form, "title": "Student Profile"}
  111. return render(request, "users/profile.html", context)
  112.  
  113.  
  114. class CustomLogoutView(LogoutView):
  115. next_page = "studentregistration:home"
  116.  
  117.  
  118. @login_required_message
  119. @login_required
  120. def change_password(request):
  121. if request.method == "POST":
  122. form = CustomPasswordChangeForm(request.user, request.POST)
  123. if form.is_valid():
  124. user = form.save()
  125. update_session_auth_hash(
  126. request, user
  127. ) # Important, to update the session with the new password
  128. messages.success(request, "Your password was successfully updated!")
  129. return redirect("dashboard")
  130. else:
  131. messages.error(request, "Please correct the error below.")
  132. else:
  133. form = CustomPasswordChangeForm(request.user)
  134. return render(
  135. request,
  136. "users/change_password.html",
  137. {"form": form, "title": "Change Password"},
  138. )
  139.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement