| from django.shortcuts import render, redirect |
| from django.contrib.auth.models import User |
| from django.contrib.auth import authenticate, login, logout |
| from django.contrib.auth.decorators import login_required |
| from django.db.models import Q |
|
|
| @login_required(login_url="login") |
| def EditProfile(request): |
| success_message = None |
| error_message = None |
|
|
| if request.method == "POST": |
| new_email = request.POST.get("email") |
| new_username = request.POST.get("username") |
|
|
| |
| if ( |
| new_username != request.user.username |
| and User.objects.filter(username=new_username).exists() |
| ): |
| error_message = "Username already exists. Please choose a different one." |
| elif ( |
| new_email != request.user.email |
| and User.objects.filter(email=new_email).exists() |
| ): |
| error_message = "Email address already associated with another account. Please choose a different one." |
| else: |
| |
| |
| request.user.email = new_email |
| request.user.username = new_username |
| request.user.save() |
| success_message = "Profile updated successfully." |
|
|
| |
| initial_data = { |
| "email": request.user.email, |
| "username": request.user.username, |
| } |
|
|
| return render( |
| request, |
| "edit.html", |
| { |
| "initial_data": initial_data, |
| "success_message": success_message, |
| "error_message": error_message, |
| }, |
| ) |
|
|
|
|
| def SignupPage(request): |
| if request.user.is_authenticated: |
| return redirect("home") |
| error_message = "" |
|
|
| if request.method == "POST": |
| uname = request.POST.get("username") |
| email = request.POST.get("email") |
| pass1 = request.POST.get("password1") |
| pass2 = request.POST.get("password2") |
|
|
| data = { |
| "username": uname, |
| "useremail": email, |
| } |
|
|
| |
| if User.objects.filter(username=uname).exists(): |
| error_message = "A user with the same username already exists." |
| return render( |
| request, |
| "signup.html", |
| {"error_message": error_message, "userdata": data}, |
| ) |
|
|
| elif User.objects.filter(email=email).exists(): |
| error_message = "A user with the same email already exists." |
| return render( |
| request, |
| "signup.html", |
| {"error_message": error_message, "userdata": data}, |
| ) |
|
|
| else: |
| |
| user = User.objects.create_user(username=uname, email=email, password=pass1) |
| user.save() |
| |
| login(request, user) |
| return redirect("home") |
|
|
| return render(request, "signup.html", {"error_message": error_message}) |
|
|
|
|
| def LoginPage(request): |
| if request.user.is_authenticated: |
| return redirect("home") |
| error_message = "" |
| email_or_username = "" |
| if request.method == "POST": |
| email_or_username = request.POST.get("email_or_username") |
| pass1 = request.POST.get("pass") |
| try: |
| curr_user = User.objects.get(Q(email=email_or_username) | Q(username=email_or_username)) |
| except User.DoesNotExist: |
| error_message = "User not found. Please check your Email/Username" |
| return render( |
| request, "login.html", {"error_message": error_message, "email": email_or_username} |
| ) |
|
|
| user = authenticate(request, username=curr_user.username, password=pass1) |
| if user is not None: |
| login(request, user) |
| return redirect("home") |
| else: |
| if User.objects.filter(username=curr_user.username).exists(): |
| error_message = "Incorrect password. Please try again." |
| else: |
| error_message = "Email not found. Please check your email." |
| return render( |
| request, "login.html", {"error_message": error_message, "email": email_or_username} |
| ) |
|
|
|
|
| def LogoutPage(request): |
| logout(request) |
| return redirect("login") |