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)
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)
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))
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))