mirror of
https://github.com/Rushilwiz/NewViewsNews.git
synced 2025-04-18 18:40:16 -04:00
99 lines
3.3 KiB
Python
99 lines
3.3 KiB
Python
from django.shortcuts import render, redirect
|
|
from django.contrib import messages
|
|
from django.contrib.auth import update_session_auth_hash, login, authenticate
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from django.contrib.auth.forms import AdminPasswordChangeForm, PasswordChangeForm, UserCreationForm
|
|
from .forms import UserRegisterForm, UserUpdateForm, ProfileUpdateForm
|
|
|
|
from social_django.models import UserSocialAuth
|
|
from .models import Profile
|
|
|
|
|
|
def register(request):
|
|
if request.method == 'POST':
|
|
form = UserRegisterForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
username = form.cleaned_data.get('username')
|
|
messages.success(request, f'Your account has been created! You are now able to log in')
|
|
return redirect('login')
|
|
else:
|
|
form = UserRegisterForm()
|
|
return render(request, 'users/register.html', {'form': form})
|
|
|
|
|
|
@login_required
|
|
def profile(request):
|
|
|
|
user = request.user
|
|
|
|
if Profile.objects.filter(user=user).count() < 1:
|
|
Profile.objects.create(user=user).save()
|
|
|
|
if user.has_usable_password() is False:
|
|
return redirect ('password')
|
|
|
|
try:
|
|
github_login = user.social_auth.get(provider='github')
|
|
except UserSocialAuth.DoesNotExist:
|
|
github_login = None
|
|
|
|
try:
|
|
google_login = user.social_auth.get(provider='google-oauth2')
|
|
except UserSocialAuth.DoesNotExist:
|
|
google_login = None
|
|
|
|
try:
|
|
facebook_login = user.social_auth.get(provider='facebook')
|
|
except UserSocialAuth.DoesNotExist:
|
|
facebook_login = None
|
|
|
|
can_disconnect = (user.social_auth.count() > 1 or user.has_usable_password())
|
|
|
|
if request.method == "POST":
|
|
userForm = UserUpdateForm(request.POST, instance=request.user)
|
|
profileForm = ProfileUpdateForm(request.POST,
|
|
request.FILES,
|
|
instance=request.user.profile)
|
|
|
|
if userForm.is_valid() and profileForm.is_valid():
|
|
userForm.save()
|
|
profileForm.save()
|
|
messages.success(request, "Your account has been updated!")
|
|
return redirect('profile')
|
|
else:
|
|
userForm = UserUpdateForm(instance=request.user)
|
|
profileForm = ProfileUpdateForm(instance=request.user.profile)
|
|
|
|
context = {
|
|
'userForm': userForm,
|
|
'profileForm': profileForm,
|
|
'github_login': github_login,
|
|
'google_login': google_login,
|
|
'facebook_login': facebook_login,
|
|
'can_disconnect': can_disconnect,
|
|
}
|
|
|
|
return render(request, 'users/profile.html', context)
|
|
|
|
@login_required
|
|
def password(request):
|
|
if request.user.has_usable_password():
|
|
PasswordForm = PasswordChangeForm
|
|
else:
|
|
PasswordForm = AdminPasswordChangeForm
|
|
|
|
if request.method == 'POST':
|
|
form = PasswordForm(request.user, request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
update_session_auth_hash(request, form.user)
|
|
messages.success(request, 'Your password was successfully updated!')
|
|
return redirect('profile')
|
|
else:
|
|
messages.error(request, 'Please correct the error below.')
|
|
else:
|
|
form = PasswordForm(request.user)
|
|
return render(request, 'users/password.html', {'form': form})
|