add app user management allauth
This commit is contained in:
93
aseusers/views.py
Normal file
93
aseusers/views.py
Normal file
@@ -0,0 +1,93 @@
|
||||
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')
|
||||
Reference in New Issue
Block a user