Ejemplo n.º 1
0
 def test_update_badge(self):
     """ Test that we can update a badge """
     badge = badge_api.create_badge(*self.badge_values)
     attrs = self.badge_attrs
     del attrs[1]
     kwargs = dict(zip(self.badge_attrs, [badge['uri']] + self.badge_values))
     del kwargs['author_uri']
     kwargs['title'] = 'A new title'
     badge_api.update_badge(**kwargs)
     badge2 = badge_api.get_badge(badge['uri'])
     self.assertNotEquals(badge, badge2)
Ejemplo n.º 2
0
    def test_update_badge(self):
        badge_attributes = {
            'title':'Test Badge',
            'image_uri': '/uri/image/1',
            'description': 'Short description',
            'requirements': 'Requirements are getting listed here',
            'author_uri': '/uri/autor/badgemaker',
        }

        badge = badge_api.create_badge(**badge_attributes)
        # author uri has to be taken out since it is not demanded by the method
        del badge_attributes['author_uri']
        badge_attributes['title'] = 'A new title'
        badge_api.update_badge(badge['uri'], **badge_attributes)
        badge2 = badge_api.get_badge(badge['uri'])
        # Test that we can update a badge
        self.assertNotEquals(badge, badge2)
Ejemplo n.º 3
0
def edit(request, badge_id):
    user_uri = request.session['user']['uri']
    user = p2pu_user_api.get_user(user_uri)
    user_partner = user['partner']
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))

    if not user_uri == badge['author_uri']:
        messages.error(request, _('You cannot edit someone elses badge!'))
        return http.HttpResponseRedirect(reverse(
            'badge_preview', args=(badge_id,)
        ))

    if request.method == 'POST':
        form = BadgeForm(request.POST, request.FILES, user_uri=user_uri, editing=True, published=badge['published'])
    else:
        form = BadgeForm(badge, user_uri=user_uri, editing=True, published=badge['published'])

    if request.method == 'POST' and form.is_valid():
        try:
            updated = {}
            if 'image_uri' in request.FILES:
                image = media_api.upload_image(
                    request.FILES['image_uri'],
                    request.session['user']['uri'],
                    media_root=settings.MEDIA_ROOT,
                )
                updated['image_uri'] = image['uri']

            for attr in ['title', 'description', 'requirements']:
                if not badge[attr] == form.cleaned_data[attr]:
                    updated[attr] = form.cleaned_data[attr]

            badge = badge_api.update_badge(badge['uri'], **updated)

            if badge['published']:
                return http.HttpResponseRedirect(
                    reverse('badge_view', args=(badge_api.uri2id(badge['uri']),))
                )

            return http.HttpResponseRedirect(
                reverse('badge_preview', args=(badge_api.uri2id(badge['uri']),))
            )
        except badge_api.DuplicateTitleError:
            form.errors['title'] = [_('Badge title needs to be unique'), ]

    return render_to_response(
        'badge/badge_info/edit.html', {
            'badge': badge,
            'form': form,
            'user_is_partner': user_partner,
            'existing_img': media_api.get_image(badge['image_uri']),
        },
        context_instance=RequestContext(request))
Ejemplo n.º 4
0
def edit( request, badge_id ):
    template_name = 'badge/edit.html'
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))

    if not request.session['user']['uri'] == badge['author_uri']:
        messages.error(request, _('You cannot edit someone elses badge!'))
        return http.HttpResponseRedirect(reverse(
            'badge_preview', args=(badge_id,)
        ))

    if badge['publised']:
        messages.error(request, _('Badge already publised, create a new badge instead'))
        return http.HttpResponseRedirect(reverse(
            'badge_view', args=(badge_id,)
        ))

    if request.method == 'POST':
        form = BadgeForm(request.POST, request.FILES)
    else:
        form = BadgeForm(badge)

    if request.method == 'POST' and form.is_valid():
        #TODO update image
        #image = media_api.upload_image(request.FILES['image'], '/uri/user/1')
        try:
            updated = {}
            for attr in ['title', 'description', 'requirements']:
                if not badge[attr] == form.cleaned_data[attr]:
                    updated[attr] = form.cleaned_data[attr]

            badge = badge_api.update_badge(badge['uri'], **updated)
            return http.HttpResponseRedirect(
                reverse('badge_preview', args=(badge_api.uri2id(badge['uri']),))
            )
        except badge_api.DuplicateTitleError:
            form.errors['title'] = [_('Badge title needs to be unique'),]

    return render_to_response(
        template_name, {'form': form},
        context_instance=RequestContext(request))