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.
TeamFlash/sahara/main/views.py

82 lines
2.9 KiB

6 months ago
from django.shortcuts import render, redirect,HttpResponse
from django.contrib.auth import login, logout, authenticate
from django.contrib.auth.tokens import default_token_generator
6 months ago
from django.utils.http import urlsafe_base64_decode
from django.contrib.auth.decorators import login_required
from django.contrib import messages
from .models import User
from .forms import UserRegistrationForm, UserLoginForm
import logging
6 months ago
logger = logging.getLogger('main')
def home(request):
return render(request,"main/home.html")
6 months ago
def register(request):
if request.method == 'POST':
6 months ago
form = UserRegistrationForm(request.POST)
if form.is_valid():
6 months ago
user = form.save(commit=False)
user.set_password(form.cleaned_data['password'])
user.save()
6 months ago
try:
user.send_verification_email()
messages.success(request, 'Registration successful! Please check your email to activate your account.')
except Exception as e:
logger.error(f"Error sending verification email: {e}")
messages.error(request, 'Error sending verification email. Please try again later.')
6 months ago
return redirect('login')
else:
form = UserRegistrationForm()
return render(request, 'main/register.html', {'form': form})
6 months ago
def activate_account(request, uidb64, token):
try:
uid = urlsafe_base64_decode(uidb64).decode()
user = User.objects.get(pk=uid)
except (TypeError, ValueError, OverflowError, User.DoesNotExist):
user = None
6 months ago
if user is not None and default_token_generator.check_token(user, token):
user.is_active = True
user.save()
messages.success(request, 'Your account has been activated. You can now log in.')
return redirect('login')
else:
messages.error(request, 'Invalid activation link.')
return redirect('register')
6 months ago
def user_login(request):
print(request.user.is_authenticated)
if request.user.is_authenticated:
return redirect('home')
6 months ago
if request.method == 'POST':
email = request.POST['email']
password = request.POST['password']
user = authenticate(request, email = email, password = password)
if user is not None:
form = login(request, user)
messages.success(request, f' welcome {user} !!')
return redirect('home')
else:
6 months ago
messages.info(request, f'account done not exit plz sign in')
messages.info(request, f'You are Already Logged in as {request.user}')
return render(request, 'main/login.html', {'title':'log in'})
@login_required
def user_logout(request):
logout(request)
messages.success(request, 'You have been logged out.')
return redirect('login')
# def verify_email(request, uidb64, token):
# # This view is redundant if it does the same as activate_account
# # Consider removing or assigning a different purpose
# pass