devnamdev2003
up3
727a40a
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")
# Check if the new username is already taken
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:
# Update email and username
# print(request.user.id)
request.user.email = new_email
request.user.username = new_username
request.user.save()
success_message = "Profile updated successfully."
# Pre-fill the form with the user's existing data
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 = "" # Initialize error_message as None
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,
}
# Check if a user with the same email or username already exists
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:
# Create the user
user = User.objects.create_user(username=uname, email=email, password=pass1)
user.save()
# Log the user in after registration
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")