Example #1
0
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),
            }))
Example #2
0
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)
Example #3
0
    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
Example #4
0
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),
            }))