Files
django_wallet/aseusers/views.py
2025-02-01 19:16:33 +01:00

93 lines
2.8 KiB
Python

from django.shortcuts import render, redirect, get_object_or_404
from django.urls import reverse
from allauth.account.utils import send_email_confirmation
from django.contrib.auth.decorators import login_required
from django.contrib.auth import logout
from django.contrib.auth.models import User
from django.contrib.auth.views import redirect_to_login
from django.contrib import messages
from .forms import *
def profile_view(request, username=None):
if username:
profile = get_object_or_404(User, username=username).profile
else:
try:
profile = request.user.profile
except:
return redirect_to_login(request.get_full_path())
return render(request, 'aseusers/profile.html', {'profile':profile})
@login_required
def profile_edit_view(request):
form = ProfileForm(instance=request.user.profile)
if request.method == 'POST':
form = ProfileForm(request.POST, request.FILES, instance=request.user.profile)
if form.is_valid():
form.save()
return redirect('profile')
if request.path == reverse('profile-onboarding'):
onboarding = True
else:
onboarding = False
return render(request, 'aseusers/profile_edit.html', { 'form':form, 'onboarding':onboarding })
@login_required
def profile_settings_view(request):
return render(request, 'aseusers/profile_settings.html')
@login_required
def profile_emailchange(request):
if request.htmx:
form = EmailForm(instance=request.user)
return render(request, 'partials/email_form.html', {'form':form})
if request.method == 'POST':
form = EmailForm(request.POST, instance=request.user)
if form.is_valid():
# Check if the email already exists
email = form.cleaned_data['email']
if User.objects.filter(email=email).exclude(id=request.user.id).exists():
messages.warning(request, f'{email} is already in use.')
return redirect('profile-settings')
form.save()
# Then Signal updates emailaddress and set verified to False
# Then send confirmation email
send_email_confirmation(request, request.user)
return redirect('profile-settings')
else:
messages.warning(request, 'Form not valid')
return redirect('profile-settings')
return redirect('home')
@login_required
def profile_emailverify(request):
send_email_confirmation(request, request.user)
return redirect('profile-settings')
@login_required
def profile_delete_view(request):
user = request.user
if request.method == "POST":
logout(request)
user.delete()
messages.success(request, 'Account deleted, what a pity')
return redirect('home')
return render(request, 'aseusers/profile_delete.html')