def get(self, request): """edit profile page for a user""" data = { "form": forms.EditUserForm(instance=request.user), "user": request.user, } return TemplateResponse(request, "preferences/edit_user.html", data)
def test_edit_user_avatar(self, _): """use a form to update a user""" view = views.EditUser.as_view() form = forms.EditUserForm(instance=self.local_user) form.data["name"] = "New Name" form.data["email"] = "*****@*****.**" form.data["default_post_privacy"] = "public" form.data["preferred_timezone"] = "UTC" image_file = pathlib.Path(__file__).parent.joinpath( "../../../static/images/no_cover.jpg") # pylint: disable=consider-using-with form.data["avatar"] = SimpleUploadedFile(image_file, open(image_file, "rb").read(), content_type="image/jpeg") request = self.factory.post("", form.data) request.user = self.local_user with patch( "bookwyrm.models.activitypub_mixin.broadcast_task.apply_async" ) as delay_mock: view(request) self.assertEqual(delay_mock.call_count, 1) self.assertEqual(self.local_user.name, "New Name") self.assertEqual(self.local_user.email, "*****@*****.**") self.assertIsNotNone(self.local_user.avatar) self.assertEqual(self.local_user.avatar.width, 120) self.assertEqual(self.local_user.avatar.height, 120)
def get(self, request): ''' edit profile page for a user ''' data = { 'title': 'Edit profile', 'form': forms.EditUserForm(instance=request.user), 'user': request.user, } return TemplateResponse(request, 'preferences/edit_user.html', data)
def post(self, request): """les get fancy with images""" form = forms.EditUserForm(request.POST, request.FILES, instance=request.user) if not form.is_valid(): data = {"form": form, "user": request.user} return TemplateResponse(request, "preferences/edit_user.html", data) user = save_user_form(form) return redirect(user.local_path)
def edit_profile_page(request): ''' profile page for a user ''' user = request.user form = forms.EditUserForm(instance=request.user) data = { 'title': 'Edit profile', 'form': form, 'user': user, } return TemplateResponse(request, 'edit_user.html', data)
def edit_profile(request): ''' les get fancy with images ''' if not request.method == 'POST': return redirect('/user/%s' % request.user.localname) form = forms.EditUserForm(request.POST, request.FILES) if not form.is_valid(): data = { 'form': form, 'user': request.user, } return TemplateResponse(request, 'edit_user.html', data) request.user.name = form.data['name'] request.user.email = form.data['email'] if 'avatar' in form.files: # crop and resize avatar upload image = Image.open(form.files['avatar']) target_size = 120 width, height = image.size thumbnail_scale = height / (width / target_size) if height > width \ else width / (height / target_size) image.thumbnail([thumbnail_scale, thumbnail_scale]) width, height = image.size width_diff = width - target_size height_diff = height - target_size cropped = image.crop(( int(width_diff / 2), int(height_diff / 2), int(width - (width_diff / 2)), int(height - (height_diff / 2)) )) output = BytesIO() cropped.save(output, format=image.format) ContentFile(output.getvalue()) # set the name to a hash extension = form.files['avatar'].name.split('.')[-1] filename = '%s.%s' % (uuid4(), extension) request.user.avatar.save( filename, ContentFile(output.getvalue()) ) request.user.summary = form.data['summary'] request.user.manually_approves_followers = \ form.cleaned_data['manually_approves_followers'] request.user.save() outgoing.handle_update_user(request.user) return redirect('/user/%s' % request.user.localname)
def test_edit_user(self): """ use a form to update a user """ view = views.EditUser.as_view() form = forms.EditUserForm(instance=self.local_user) form.data["name"] = "New Name" form.data["email"] = "*****@*****.**" request = self.factory.post("", form.data) request.user = self.local_user self.assertIsNone(self.local_user.name) with patch("bookwyrm.models.activitypub_mixin.broadcast_task.delay" ) as delay_mock: view(request) self.assertEqual(delay_mock.call_count, 1) self.assertEqual(self.local_user.name, "New Name") self.assertEqual(self.local_user.email, "*****@*****.**")
def test_edit_user(self): ''' use a form to update a user ''' view = views.EditUser.as_view() form = forms.EditUserForm(instance=self.local_user) form.data['name'] = 'New Name' form.data['email'] = '*****@*****.**' request = self.factory.post('', form.data) request.user = self.local_user self.assertIsNone(self.local_user.name) with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay') \ as delay_mock: view(request) self.assertEqual(delay_mock.call_count, 1) self.assertEqual(self.local_user.name, 'New Name') self.assertEqual(self.local_user.email, '*****@*****.**')
def post(self, request): ''' les get fancy with images ''' form = forms.EditUserForm( request.POST, request.FILES, instance=request.user) if not form.is_valid(): 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) user.save() return redirect(user.local_path)
def post(self, request): """ les get fancy with images """ form = forms.EditUserForm(request.POST, request.FILES, instance=request.user) if not form.is_valid(): 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) user.save() return redirect(user.local_path)