def upload_avatar_js(request): ''' Upload avatar image ''' response = {} status = 405 if request.is_ajax() and request.method == 'POST': avatar, avatars = avatarviews._get_avatars(request.user) upload_avatar_form = UploadAvatarForm( None, request.FILES, user=request.user ) if upload_avatar_form.is_valid(): avatar = Avatar( user=request.user, primary=True, ) image_file = request.FILES['avatar'] avatar.avatar.save(image_file.name, image_file) avatar.save() avatar_updated.send( sender=Avatar, user=request.user, avatar=avatar ) response['avatar'] = userutil.get_user_avatar_url(request.user) status = 200 return JsonResponse( response, status=status )
def upload_avatar_js(request): ''' Upload avatar image ''' response = {} status = 405 if request.is_ajax() and request.method == 'POST': from avatar.models import Avatar from avatar import views as avatarviews from avatar.forms import UploadAvatarForm from avatar.signals import avatar_updated avatar, avatars = avatarviews._get_avatars(request.user) upload_avatar_form = UploadAvatarForm(None, request.FILES, user=request.user) if upload_avatar_form.is_valid(): avatar = Avatar( user = request.user, primary = True, ) image_file = request.FILES['avatar'] avatar.avatar.save(image_file.name, image_file) avatar.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) response['avatar'] = accountutil.get_user_avatar_url(request.user) status = 200 return HttpResponse( simplejson.dumps(response), content_type = 'application/json; charset=utf8', status=status )
def upload_avatar(request): ''' Upload avatar image ''' response = {} status = 405 if request.is_ajax() and request.method == 'POST': avatar, avatars = avatarviews._get_avatars(request.user) upload_avatar_form = UploadAvatarForm(None, request.FILES, user=request.user) if upload_avatar_form.is_valid(): avatar = Avatar( user=request.user, primary=True, ) image_file = request.FILES['avatar'] avatar.avatar.save(image_file.name, image_file) avatar.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) response['avatar'] = userutil.get_user_avatar_url( request.user)['url'] status = 200 return JsonResponse(response, status=status)
def upload_avatar_js(request): ''' Upload avatar image ''' response = {} status = 405 if request.is_ajax() and request.method == 'POST': from avatar.models import Avatar from avatar import views as avatarviews from avatar.forms import UploadAvatarForm from avatar.signals import avatar_updated avatar, avatars = avatarviews._get_avatars(request.user) upload_avatar_form = UploadAvatarForm(None, request.FILES, user=request.user) if upload_avatar_form.is_valid(): avatar = Avatar( user=request.user, primary=True, ) image_file = request.FILES['avatar'] avatar.avatar.save(image_file.name, image_file) avatar.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) response['avatar'] = accountutil.get_user_avatar_url(request.user) status = 200 return HttpResponse(simplejson.dumps(response), content_type='application/json; charset=utf8', status=status)
def upload(request, user_id=None): user = get_object_or_404(User, pk=user_id) if request.method == 'POST': if 'avatar' in request.FILES: form = UploadAvatarForm( request.POST, request.FILES, user=user) if form.is_valid(): avatar = Avatar(user=user, primary=True) image_file = request.FILES['avatar'] avatar.avatar.save(image_file.name, image_file) avatar.save() sizes = avatar_settings.AVATAR_AUTO_GENERATE_SIZES for size in sizes: avatar.create_thumbnail(size) avatar_updated.send(sender=Avatar, user=user, avatar=avatar) user.avatar_type = 'a' user.clear_avatar_urls() user.save() message = _('Avatar uploaded and set as primary') else: errors = get_error_list(form) message = ', '.join(map(lambda v: force_str(v), errors)) else: message = _('Please choose file to upload') request.session['askbot_avatar_status_message'] = message return redirect_to_show_list(user_id)
def upload(request, user_id=None): user = get_object_or_404(User, pk=user_id) if request.method == 'POST': if 'avatar' in request.FILES: form = UploadAvatarForm(request.POST, request.FILES, user=user) if form.is_valid(): avatar = Avatar(user=user, primary=True) image_file = request.FILES['avatar'] avatar.avatar.save(image_file.name, image_file) avatar.save() sizes = avatar_settings.AVATAR_AUTO_GENERATE_SIZES for size in sizes: avatar.create_thumbnail(size) avatar_updated.send(sender=Avatar, user=user, avatar=avatar) user.avatar_type = 'a' user.clear_avatar_urls() user.save() message = _('Avatar uploaded and set as primary') else: errors = get_error_list(form) message = u', '.join(map(lambda v: force_unicode(v), errors)) else: message = _('Please choose file to upload') request.session['askbot_avatar_status_message'] = message return redirect_to_show_list(user_id)
def post(self, *args, **kwargs): avatar, avatars = _get_avatars(self.request.user) if 'add' in self.request.POST and 'avatar' in self.request.FILES: upload_avatar_form = UploadAvatarForm(self.request.POST, self.request.FILES, user=self.request.user) if upload_avatar_form.is_valid(): avatar = Avatar(user=self.request.user, primary=True) image_file = self.request.FILES['avatar'] avatar.avatar.save(image_file.name, image_file) avatar.save() messages.success(self.request, 'Successfully uploaded a new avatar.') avatar_updated.send(sender=Avatar, user=self.request.user, avatar=avatar) return HttpResponseRedirect(reverse('avatar_change')) elif 'change' in self.request.POST: primary_avatar_form = PrimaryAvatarForm(self.request.POST, user=self.request.user, avatars=avatars) if 'choice' in self.request.POST and primary_avatar_form.is_valid( ): avatar = Avatar.objects.get( id=primary_avatar_form.cleaned_data['choice']) avatar.primary = True avatar.save() avatar_updated.send(sender=Avatar, user=self.request.user, avatar=avatar) messages.success(self.request, 'Successfully updated your avatar.') return HttpResponseRedirect(reverse('avatar_change')) elif 'delete' in self.request.POST: delete_avatar_form = PrimaryAvatarForm(self.request.POST, user=self.request.user, avatars=avatars) if delete_avatar_form.is_valid(): ids = delete_avatar_form.cleaned_data['choice'] if six.text_type( avatar.id) in ids and avatars.count() > len(ids): for a in avatars: if six.text_type(a.id) not in ids: a.primary = True a.save() avatar_updated.send(sender=Avatar, user=self.request.user, avatar=avatar) break Avatar.objects.filter(id__in=ids).delete() messages.success(self.request, 'Selected avatar successfully deleted.') return HttpResponseRedirect(reverse('avatar_change')) return HttpResponseRedirect(reverse('avatar_change'))
def update_avatar(request, contact_id, template_name='contacts/edit_avatar.html'): """View to add a new avatar for a contact.""" contact = Contact.objects.get(id=contact_id) avatar_form = UploadAvatarForm(request.POST or None, request.FILES or None) if avatar_form.is_valid(): avatar_form.save(contact) return redirect('contacts:update_contact_powers', contact_id=contact.id) return render(request, template_name, { 'avatar_form': avatar_form, 'contact': contact })
def validate_avatar(self): user = self.context.get('user') avatar = self.initial_data.get('avatar') if avatar is None or 'base64' not in avatar or user is None: return None avatar = FileUtil.get_file_from_data_url(avatar)[0] avatar_form = UploadAvatarForm(None, dict(avatar=avatar), user=user) if False == avatar_form.is_valid(): errors = OrderedDict() form_errors = dict(self.signup_form.errors) for error_field in form_errors.keys(): errors[error_field] = form_errors[error_field] raise serializers.ValidationError(errors) return avatar
def show_list(request, user_id=None, extra_context=None, avatar_size=128): """lists user's avatars, including gravatar and the default avatar""" user = get_object_or_404(User, pk=user_id) avatar_data, has_uploaded_avatar, can_upload = get_avatar_data( user, avatar_size) status_message = request.session.pop('askbot_avatar_status_message', None) if not isinstance(status_message, unicode): #work around bug where this was accidentally encoded into str #and stored into session - we lose this message #delete this branch some time in 2017 status_message = '' context = { #these are user profile context vars 'can_show_karma': user_can_see_karma(request.user, user), 'user_follow_feature_on': ('followit' in django_settings.INSTALLED_APPS), #below are pure avatar view context vars 'avatar_data': avatar_data, 'has_uploaded_avatar': has_uploaded_avatar, 'can_upload': can_upload, 'page_class': 'user-profile-page', 'upload_avatar_form': UploadAvatarForm(user=user), 'status_message': status_message, 'view_user': user } context.update(extra_context or {}) return render(request, 'avatar/show_list.html', context)
def change_avatar(request): '''Customised version of the default add avatar view from the django-avatar app. Changed to allow the form to be embedded on the main DWAD profile page.''' upload_avatar_form = UploadAvatarForm(request.POST or None, request.FILES or None, user=request.user) if 'avatar' in request.FILES and upload_avatar_form.is_valid(): avatar = Avatar(user=request.user, primary=True) image_file = request.FILES['avatar'] avatar.avatar.save(image_file.name, image_file) avatar.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) return redirect(reverse('profile')) context = {'upload_avatar_form': upload_avatar_form} return profile(request, extra_context=context)
def upload_avatar(request): """ Upload avatar image """ response = {} status = 405 avatar, avatars = avatarviews._get_avatars(request.user) upload_avatar_form = UploadAvatarForm(None, request.FILES, user=request.user) if upload_avatar_form.is_valid(): avatar = Avatar( user=request.user, primary=True, ) image_file = request.FILES["avatar"] avatar.avatar.save(image_file.name, image_file) avatar.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) response["avatar"] = request.user.avatar_url["url"] status = 200 return JsonResponse(response, status=status)
def show_list(request, user_id=None, extra_context=None, avatar_size=128): """lists user's avatars, including gravatar and the default avatar""" user = get_object_or_404(User, pk=user_id) avatar_data, has_uploaded_avatar, can_upload = get_avatar_data(user, avatar_size) status_message = request.session.pop('askbot_avatar_status_message', None) context = { # these are user profile context vars 'can_show_karma': user_can_see_karma(request.user, user), 'user_follow_feature_on': ('followit' in django_settings.INSTALLED_APPS), # below are pure avatar view context vars 'avatar_data': avatar_data, 'has_uploaded_avatar': has_uploaded_avatar, 'can_upload': can_upload, 'page_class': 'user-profile-page', 'upload_avatar_form': UploadAvatarForm(user=user), 'status_message': status_message, 'view_user': user } context.update(extra_context or {}) return render(request, 'avatar/show_list.jinja', context)
def get_context_data(self, **kwargs): context = super(AvatarChangeView, self).get_context_data(**kwargs) avatar, avatars = _get_avatars(self.request.user) if avatar: avatar_kwargs = {'initial': {'choice': avatar.id}} else: avatar_kwargs = {} upload_avatar_form = UploadAvatarForm(None, None, user=self.request.user) primary_avatar_form = PrimaryAvatarForm(None, user=self.request.user, avatars=avatars, **avatar_kwargs) context.update({ 'avatar': avatar, 'avatars': avatars, 'upload_avatar_form': upload_avatar_form, 'primary_avatar_form': primary_avatar_form, }) return context