Makes user profile view editable
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
""" Helping new users figure out the lay of the land """
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.db.models import Count, Q
|
||||
from django.shortcuts import redirect
|
||||
from django.template.response import TemplateResponse
|
||||
from django.utils.decorators import method_decorator
|
||||
from django.views import View
|
||||
@ -8,6 +9,7 @@ from django.views import View
|
||||
from bookwyrm import forms, models
|
||||
from bookwyrm.connectors import connector_manager
|
||||
from .helpers import get_suggested_users
|
||||
from .user import save_user_form
|
||||
|
||||
|
||||
# pylint: disable= no-self-use
|
||||
@ -18,11 +20,22 @@ class GetStartedProfile(View):
|
||||
def get(self, request):
|
||||
""" basic profile info """
|
||||
data = {
|
||||
"form": forms.EditUserForm(instance=request.user),
|
||||
"form": forms.LimitedEditUserForm(instance=request.user),
|
||||
"next": "get-started-books",
|
||||
}
|
||||
return TemplateResponse(request, "get_started/profile.html", data)
|
||||
|
||||
def post(self, request):
|
||||
""" update your profile """
|
||||
form = forms.LimitedEditUserForm(
|
||||
request.POST, request.FILES, instance=request.user
|
||||
)
|
||||
if not form.is_valid():
|
||||
data = {"form": form, "next": "get-started-books"}
|
||||
return TemplateResponse(request, "get_started/profile.html", data)
|
||||
save_user_form(form)
|
||||
return redirect('get-started-books')
|
||||
|
||||
|
||||
@method_decorator(login_required, name="dispatch")
|
||||
class GetStartedBooks(View):
|
||||
|
@ -163,21 +163,26 @@ class EditUser(View):
|
||||
data = {"form": form, "user": request.user}
|
||||
return TemplateResponse(request, "preferences/edit_user.html", data)
|
||||
|
||||
user = form.save(commit=False)
|
||||
|
||||
if "avatar" in form.files:
|
||||
# crop and resize avatar upload
|
||||
image = Image.open(form.files["avatar"])
|
||||
image = crop_avatar(image)
|
||||
|
||||
# set the name to a hash
|
||||
extension = form.files["avatar"].name.split(".")[-1]
|
||||
filename = "%s.%s" % (uuid4(), extension)
|
||||
user.avatar.save(filename, image, save=False)
|
||||
user.save()
|
||||
save_user_form(form)
|
||||
|
||||
return redirect(user.local_path)
|
||||
|
||||
def save_user_form(form):
|
||||
""" special handling for the user form """
|
||||
user = form.save(commit=False)
|
||||
|
||||
if "avatar" in form.files:
|
||||
# crop and resize avatar upload
|
||||
image = Image.open(form.files["avatar"])
|
||||
image = crop_avatar(image)
|
||||
|
||||
# set the name to a hash
|
||||
extension = form.files["avatar"].name.split(".")[-1]
|
||||
filename = "%s.%s" % (uuid4(), extension)
|
||||
user.avatar.save(filename, image, save=False)
|
||||
user.save()
|
||||
return user
|
||||
|
||||
|
||||
def crop_avatar(image):
|
||||
""" reduce the size and make an avatar square """
|
||||
|
Reference in New Issue
Block a user