Example #1
0
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
    )
Example #2
0
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
    )
Example #3
0
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)
Example #4
0
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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
 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'))
Example #8
0
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
    })
Example #9
0
    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
Example #10
0
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)
Example #11
0
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)
Example #12
0
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)
Example #13
0
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)
Example #14
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