def user_upload_avatar(request, extra_context=None, upload_form=UploadAvatarForm, *args, **kwargs): if extra_context is None: extra_context = {} avatar, avatars = _get_avatars(request.user) upload_avatar_form = upload_form(request.POST or None, request.FILES or None, user=request.user) if request.method == "POST" and 'avatar' in request.FILES: 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() messages.success(request, "Successfully uploaded a new avatar.") # Save avatar into user_profile user_profile = request.user.profile user_profile.avatar = avatar user_profile.save() return HttpResponseRedirect(reverse('user:profile', args=(request.user.id, ))) context = { 'avatar': avatar, 'avatars': avatars, 'upload_avatar_form': upload_avatar_form, } context.update(extra_context) return render(request, 'vnoiusers/user_upload_avatar.html', context)
def delete_avatar_js(request): ''' Delete 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 DeleteAvatarForm from avatar.signals import avatar_updated avatar, avatars = avatarviews._get_avatars(request.user) if avatar is None : response = 'No avatar exists' else: aid = avatar.id for a in avatars: if a.id == aid : a.primary = True a.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) break Avatar.objects.filter(pk=aid).delete() 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_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 delete_avatar(request): ''' Delete avatar image ''' response = {} status = 405 if request.is_ajax() and request.method == 'POST': avatar, avatars = avatarviews._get_avatars(request.user) if avatar is None: response['error'] = 'User has no avatar' else: aid = avatar.id for a in avatars: if a.id == aid: a.primary = True a.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) break Avatar.objects.filter(pk=aid).delete() response['avatar'] = userutil.get_user_avatar_url( request.user)['url'] status = 200 return JsonResponse(response, status=status)
def AvatarAdd(request, extra_context=None, next_override=None, upload_form=UploadAvatarForm, *args, **kwargs): if extra_context is None: extra_context = {} avatar, avatars = _get_avatars(request.user) upload_avatar_form = upload_form(request.POST or None, request.FILES or None, user=request.user) if request.method == 'POST' and 'avatar' in request.FILES: 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() invalidate_cache(request.user) messages.success(request, _("Successfully uploaded a new avatar.")) avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) return render(request, 'auth/avatar_change.html') context = { 'avatar': avatar, 'avatars': avatars, 'upload_avatar_form': upload_avatar_form, 'next': next_override, } context.update(extra_context) template_name = 'auth/avatar_add.html' return render(request, template_name, context)
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 delete_avatar_js(request): ''' Delete 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 DeleteAvatarForm from avatar.signals import avatar_updated avatar, avatars = avatarviews._get_avatars(request.user) if avatar is None: response = 'No avatar exists' else: aid = avatar.id for a in avatars: if a.id == aid: a.primary = True a.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) break Avatar.objects.filter(pk=aid).delete() 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 edit_name(request): context = {} if not request.user is None: full_name = request.user.first_name + ' ' + request.user.last_name avatar, avatars = _get_avatars(request.user) context = { 'avatar': avatar, 'avatars': avatars, 'full_name:': full_name, } if request.method == 'POST': user = UserProfile.objects.get(user=request.user) if not request.POST['first_name'] is None: user.first_name = request.POST['first_name'] if not request.POST['last_name'] is None: user.last_name = request.POST['last_name'] user.save() context['full_name'] = full_name return redirect('/accounts/profile/', context) return render(request, 'user_profile/edit_name.html', context)
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 delete_avatar_js(request): ''' Delete avatar image ''' response = {} status = 405 if request.is_ajax() and request.method == 'POST': avatar, avatars = avatarviews._get_avatars(request.user) if avatar is None: response = 'No avatar exists' else: aid = avatar.id for a in avatars: if a.id == aid: a.primary = True a.save() avatar_updated.send( sender=Avatar, user=request.user, avatar=avatar ) break Avatar.objects.filter(pk=aid).delete() response['avatar'] = userutil.get_user_avatar_url(request.user) status = 200 return JsonResponse( response, status=status )
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 show_profile(request): if not request.user.is_authenticated() is None: user = UserProfile.objects.get(user=request.user) full_name = user.first_name + ' ' + user.last_name + ' ' avatar, avatars = _get_avatars(request.user) context = { 'avatar': avatar, 'avatars': avatars, 'full_name': full_name, } return render(request, 'user_profile/profile.html', context) else: redirect('/accounts/login/')
def upload_avatar(request): if not request.user.is_authenticated() is None: avatar, avatars = _get_avatars(request.user) context = { 'avatar': avatar, 'avatars': avatars, } if request.method == 'POST': if not avatar is None: Avatar.objects.filter(id__in=[avatar.id]).delete() return add(request) else: return HttpResponse('404')
def AvatarChange(request, extra_context=None, next_override=None, upload_form=UploadAvatarForm, primary_form=PrimaryAvatarForm, *args, **kwargs): if extra_context is None: extra_context = {} avatar, avatars = _get_avatars(request.user) if avatar: kwargs = {'initial': {'choice': avatar.id}} else: kwargs = {} upload_avatar_form = upload_form(user=request.user, **kwargs) primary_avatar_form = primary_form(request.POST or None, user=request.user, avatars=avatars, **kwargs) if request.method == 'POST': updated = False if 'choice' in request.POST and primary_avatar_form.is_valid(): avatar = Avatar.objects.get( id=primary_avatar_form.cleaned_data['choice']) avatar.primary = True avatar.save() updated = True invalidate_cache(request.user) messages.success(request, _("Successfully updated your avatar.")) if updated: avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) return render(request, 'auth/avatar_change.html') context = { 'avatar': avatar, 'avatars': avatars, 'upload_avatar_form': upload_avatar_form, 'primary_avatar_form': primary_avatar_form, 'next': next_override } context.update(extra_context) template_name = 'auth/avatar_change.html' return render(request, template_name, context)
def change(request, extra_context=None, next_override=None, upload_form=UploadAvatarForm, primary_form=PrimaryAvatarForm, *args, **kwargs): if extra_context is None: extra_context = {} avatar, avatars = _get_avatars(request.user) if avatar: kwargs = {'initial': {'choice': avatar.id}} else: kwargs = {} upload_avatar_form = upload_form(user=request.user, **kwargs) primary_avatar_form = primary_form(request.POST or None, user=request.user, avatars=avatars, **kwargs) if request.method == "POST": updated = False if 'choice' in request.POST and primary_avatar_form.is_valid(): avatar = Avatar.objects.get( id=primary_avatar_form.cleaned_data['choice']) avatar.primary = True avatar.save() updated = True invalidate_cache(request.user) messages.success(request, temp("成功更新头像")) if updated: avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) return redirect(next_override or _get_next(request)) context = { 'avatar': avatar, 'avatars': avatars, 'upload_avatar_form': upload_avatar_form, 'primary_avatar_form': primary_avatar_form, 'next': next_override or _get_next(request) } context.update(extra_context) return render(request, 'account/avatar/change.html', 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
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 delete_avatar(request): """ Delete avatar image """ response = {} status = 405 avatar, avatars = avatarviews._get_avatars(request.user) if avatar is None: response["error"] = "User has no avatar" else: aid = avatar.id for a in avatars: if a.id == aid: a.primary = True a.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) break Avatar.objects.filter(pk=aid).delete() response["avatar"] = request.user.avatar_url["url"] status = 200 return JsonResponse(response, status=status)
def evaluate(self, user, *args, **kwargs): avatars = _get_avatars(user) if len(avatars) > 0: return True else: return False