def create( request ): template_name = 'badge/create.html' if request.method == 'POST': form = BadgeForm(request.POST, request.FILES) else: form = BadgeForm() user_uri = request.session['user']['uri'] if form.is_valid(): image = media_api.upload_image(request.FILES['image'], user_uri) try: badge = badge_api.create_badge( form.cleaned_data['title'], image['uri'], form.cleaned_data['description'], form.cleaned_data['requirements'], user_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( template_name, {'form': form}, context_instance=RequestContext(request))
def create( request, badge_id ): badge = badge_api.get_badge(badge_api.id2uri(badge_id)) fetch_badge_resources(badge) context = { 'badge': badge } user_uri = request.session['user']['uri'] if request.method == 'POST': form = ProjectForm(request.POST, request.FILES) else: form = ProjectForm() if form.is_valid(): image = media_api.upload_image(request.FILES['image'], user_uri) try: project = project_api.create_project( badge['uri'], user_uri, form.cleaned_data['title'], image['uri'], form.cleaned_data['work_url'], form.cleaned_data['description'], form.cleaned_data['reflection'], form.cleaned_data['tags'] ) return http.HttpResponseRedirect(reverse('project_view', args=(project['id'],))) except project_api.MultipleProjectError: messages.error(request, _('You have already submitted a project for this badge.')) context['form'] = form return render_to_response( 'project/create.html', context, context_instance=RequestContext(request) )
def edit(request, badge_id): user_uri = request.session['user']['uri'] user = p2pu_user_api.get_user(user_uri) user_partner = user['partner'] template_name = 'badge/edit.html' 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 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, user_uri=user_uri, editing=True) else: form = BadgeForm(badge, user_uri=user_uri, editing=True) 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) 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, 'user_is_partner': user_partner, }, context_instance=RequestContext(request))
def load_test_data(data_file): df = open(data_file, 'r') root = os.path.dirname(os.path.abspath(data_file)) test_data = simplejson.load(df) for badge in test_data['badges']: with open(os.path.join(root, badge['image']), 'rb') as image_file: image = media_api.upload_image(File(image_file), badge['author_uri']) badge['image_uri'] = image['uri'] del badge['image'] badge = badge_api.create_badge(**badge) badge_api.publish_badge(badge['uri']) print(badge) df.close()
def course_image( request, course_id ): course_uri = course_model.course_id2uri(course_id) user_uri = u"/uri/user/{0}".format(request.user.username) image_form = CourseImageForm(request.POST, request.FILES) if image_form.is_valid(): image_file = request.FILES['image'] image = media_model.upload_image(image_file, course_uri) course_model.update_course( course_uri=course_uri, image_uri=image['uri'], ) else: messages.error(request, _("Could not upload image")) redirect_url = reverse('courses_settings', kwargs={'course_id': course_id}) return http.HttpResponseRedirect(redirect_url)
def create( request, badge_id ): badge = badge_api.get_badge(badge_api.id2uri(badge_id)) fetch_badge_resources(badge) context = { 'badge': badge } user_uri = request.session['user']['uri'] if request.method == 'POST': form = ProjectForm(request.POST, request.FILES) else: form = ProjectForm() if form.is_valid(): try: image = media_api.upload_image( request.FILES['image'], user_uri, media_root=settings.MEDIA_ROOT, delete_original=True) project = project_api.create_project( badge['uri'], user_uri, form.cleaned_data['title'], image['uri'], form.cleaned_data['work_url'], form.cleaned_data['description'], form.cleaned_data['reflection'], form.cleaned_data['tags'] ) return http.HttpResponseRedirect(reverse('project_view', args=(project['id'],))) except project_api.MultipleProjectError: messages.error(request, _('You have already submitted a project for this badge.')) except media_api.UploadImageError: messages.error(request,_('Project image cannot be uploaded. Possible reasons: format not supported' '(png, jpeg, jpg, gif), file size too large (up to 256kb).')) context['form'] = form return render_to_response( 'project/create.html', context, context_instance=RequestContext(request) )
def create(request): user_uri = request.session['user']['uri'] user = p2pu_user_api.get_user(user_uri) user_partner = user['partner'] form = BadgeForm(user_uri=user_uri) if request.method == 'POST': form = BadgeForm(request.POST, request.FILES, user_uri=user_uri) if form.is_valid(): try: if request.FILES['image_uri'].size > (256 * 1024): raise media_api.UploadImageError('Image size too large.') image = media_api.upload_image( request.FILES['image_uri'], user_uri, media_root=settings.MEDIA_ROOT, delete_original=True) badge = badge_api.create_badge( form.cleaned_data['title'], image['uri'], form.cleaned_data['description'], form.cleaned_data['requirements'], user_uri, partner_name=form.cleaned_data['partner'] ) return http.HttpResponseRedirect( reverse('badge_publish', args=(badge_api.uri2id(badge['uri']),)) ) except badge_api.DuplicateTitleError: form.errors['title'] = [_('Badge title needs to be unique'),] except media_api.UploadImageError: form.errors['title'] = [_('Badge image cannot be uploaded. Possible reasons: format not supported' '(png, jpeg, jpg, gif), file size too large (up to 256kb).'),] return render_to_response('badge/create.html', { 'form': form, 'user_is_partner': user_partner, },context_instance=RequestContext(request))
def test_upload_image_success(self): image_file = self.TEST_IMAGE_OK_FILES[0] uploader_uri = '/user/test/1' ret_val = media_api.upload_image(image_file, uploader_uri, media_root=self._get_media_root()) self.assertTrue(ret_val['url'].endswith('.png'))