def change(request, extra_context={}, next_override='/'): avatars = Avatar.objects.filter(user=request.user).order_by('-primary') if avatars.count() > 0: avatar = avatars[0] kwargs = {'initial': {'choice': avatar.id}} else: avatar = None kwargs = {} primary_avatar_form = PrimaryAvatarForm(request.POST or None, user=request.user, **kwargs) if request.method == "POST": updated = False if 'avatar' in request.FILES: path = avatar_file_path(user=request.user, filename=request.FILES['avatar'].name) avatar = Avatar( user=request.user, primary=True, avatar=path, ) new_file = avatar.avatar.storage.save(path, request.FILES['avatar']) avatar.save() updated = True request.user.message_set.create( message=_("Successfully uploaded a new avatar.")) 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 request.user.message_set.create( message=_("Successfully updated your avatar.")) if updated and notification: notification.send([request.user], "avatar_updated", { "user": request.user, "avatar": avatar }) if friends: notification.send( (x['friend'] for x in Friendship.objects.friends_for_user(request.user) ), "avatar_friend_updated", { "user": request.user, "avatar": avatar }) return HttpResponseRedirect(next_override or _get_next(request)) return render_to_response( 'avatar/change.html', extra_context, context_instance=RequestContext( request, { 'avatar': avatar, 'avatars': avatars, 'primary_avatar_form': primary_avatar_form, 'next': next_override or _get_next(request), }))
def set_primary(request, user_id=None, extra_context=None, avatar_size=128): """changes default uploaded avatar""" user = get_object_or_404(User, pk=user_id) if request.method == "POST": updated = False form = PrimaryAvatarForm(request.POST, user=user, avatars=user.avatar_set.all()) if 'choice' in request.POST and form.is_valid(): avatar = Avatar.objects.get(id=form.cleaned_data['choice']) avatar.primary = True avatar.save() avatar_updated.send(sender=Avatar, user=request.user, avatar=avatar) user.avatar_type = 'a' user.clear_avatar_urls() user.save() return redirect_to_show_list(user_id)
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 change_avatar(request, id, extra_context={}, next_override=None): user_edit = get_object_or_404(User, pk=id) try: profile = Profile.objects.get(user=user_edit) except Profile.DoesNotExist: profile = Profile.objects.create_profile(user=user_edit) #if not has_perm(request.user,'profiles.change_profile',profile): raise Http403 if not profile.allow_edit_by(request.user): raise Http403 avatars = Avatar.objects.filter(user=user_edit).order_by('-primary') if avatars.count() > 0: avatar = avatars[0] kwargs = {'initial': {'choice': avatar.id}} else: avatar = None kwargs = {} primary_avatar_form = PrimaryAvatarForm(request.POST or None, user=user_edit, **kwargs) if request.method == "POST": updated = False if 'avatar' in request.FILES: path = avatar_file_path(user=user_edit, filename=request.FILES['avatar'].name) avatar = Avatar( user=user_edit, primary=True, avatar=path, ) new_file = avatar.avatar.storage.save(path, request.FILES['avatar']) avatar.save() updated = True messages.add_message(request, messages.SUCCESS, _("Successfully uploaded a new avatar.")) 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 messages.add_message(request, messages.SUCCESS, _("Successfully updated your avatar.")) if updated and notification: notification.send([request.user], "avatar_updated", { "user": user_edit, "avatar": avatar }) #if friends: # notification.send((x['friend'] for x in Friendship.objects.friends_for_user(user_edit)), "avatar_friend_updated", {"user": user_edit, "avatar": avatar}) return HttpResponseRedirect( reverse('profile', args=[user_edit.username])) #return HttpResponseRedirect(next_override or _get_next(request)) return render_to_response( 'profiles/change_avatar.html', extra_context, context_instance=RequestContext( request, { 'user_this': user_edit, 'avatar': avatar, 'avatars': avatars, 'primary_avatar_form': primary_avatar_form, 'next': next_override or _get_next(request), }))