def edit_avatar(request): """Edit user avatar.""" try: user_profile = request.user.get_profile() except Profile.DoesNotExist: # TODO: Once we do user profile migrations, all users should have a # a profile. We can remove this fallback. user_profile = Profile.objects.create(user=request.user) if request.method == 'POST': # Upload new avatar and replace old one. old_avatar_path = None if user_profile.avatar: # Need to store the path, not the file here, or else django's # form.is_valid() messes with it. old_avatar_path = user_profile.avatar.path form = AvatarForm(request.POST, request.FILES, instance=user_profile) if form.is_valid(): if old_avatar_path: os.unlink(old_avatar_path) user_profile = form.save() content = _create_image_thumbnail(user_profile.avatar.path, settings.AVATAR_SIZE) # Delete uploaded avatar and replace with thumbnail. name = user_profile.avatar.name user_profile.avatar.delete() user_profile.avatar.save(name, content, save=True) return HttpResponseRedirect(reverse('users.edit_profile')) else: # request.method == 'GET' form = AvatarForm(instance=user_profile) return jingo.render(request, 'users/edit_avatar.html', {'form': form, 'profile': user_profile})
def edit_avatar(request): """Edit user avatar.""" try: user_profile = request.user.get_profile() except Profile.DoesNotExist: # TODO: Once we do user profile migrations, all users should have a # a profile. We can remove this fallback. user_profile = Profile.objects.create(user=request.user) if request.method == 'POST': # Upload new avatar and replace old one. old_avatar_path = None if user_profile.avatar: # Need to store the path, not the file here, or else django's # form.is_valid() messes with it. old_avatar_path = user_profile.avatar.path form = AvatarForm(request.POST, request.FILES, instance=user_profile) if form.is_valid(): if old_avatar_path: os.unlink(old_avatar_path) user_profile = form.save() # Delete uploaded avatar and replace with thumbnail. name = user_profile.avatar.name user_profile.avatar.delete() user_profile.avatar.save(name, content, save=True) return HttpResponseRedirect(reverse('users.edit_profile')) else: # request.method == 'GET' form = AvatarForm(instance=user_profile) return render(request, 'users/edit_avatar.html', {'form': form, 'profile': user_profile})
def upload_avatar(request): ''' Upload an Avatar ''' next = urlparse(request.GET.get('next')) role = resolve(next.path).app_name request = userApi.has_users_view_access(request, role) if request.method == 'POST': if len(request.FILES) == 0: messages.error(request, 'An error occurred. Please select your profile photo, then try again.') return HttpResponseRedirect(request.get_full_path()) form = AvatarForm(request.POST, request.FILES) if form.is_valid(): avatar = form.save(commit=False) avatar.uploaded = request.FILES.get('uploaded') avatar.save() if avatar: messages.success(request, 'Success! Profile Photo uploaded.') else: messages.error(request, 'An error occurred while uploading an avatar.') else: errors = form.errors.get_json_data() messages.error(request, 'An error occurred. Form is invalid. {0}'.format( userApi.get_error_messages(errors) )) return HttpResponseRedirect(request.get_full_path()) return render(request, 'users/upload_avatar.html', { 'loggedin_user': userApi.add_avatar(request.user), 'role': role, 'form': AvatarForm(initial={ 'user': request.user }) })