def new_audio(request): if request.method == 'POST': form = AudioImportForm(request.POST, request.FILES) if form.is_valid(): save_context = BlueprintSaveContext.from_request(request) urn = form.save(save_context) return SuccessfulEditRedirect(urn) else: if request.is_ajax(): return render_json_response({'errors': form.errors}) else: form = AudioImportForm() return render_to_response('audio/audio_import_form.html', { 'form': form, }, RequestContext(request))
def handle_blueprint_post(request, expected_model=DuctModel): # this is not a view, but rather a function that is meant to be called by # views. should be put such functions somewhere else? from functools import partial from django.http import HttpResponseBadRequest HttpTextResponseBadRequest = partial(HttpResponseBadRequest, content_type="text/plain; charset=utf-8") from ductus.resource.ductmodels import BlueprintSaveContext, BlueprintError, ValidationError try: blueprint = json.loads(request.POST['blueprint']) except KeyError: return HttpTextResponseBadRequest(u"no blueprint given") except ValueError: return HttpTextResponseBadRequest(u"json fails to parse") save_context = BlueprintSaveContext.from_request(request) try: urn = expected_model.save_blueprint(blueprint, save_context) except BlueprintError as e: return HttpTextResponseBadRequest(str(e)) except ValidationError as e: logger.debug("validation failed: %s", e) if settings.DEBUG: import sys import traceback exc_type, exc_info, tb = sys.exc_info() msg = list(traceback.format_tb(tb)) msg.append(exc_type.__name__) msg.append(repr(exc_info)) logger.error("\n".join(msg)) return HttpTextResponseBadRequest(u"validation failed") # edit successful: update the index try: # try to get the parent urn from the blueprint, as it is already in memory parent_urn = blueprint['resource']['@patch'] except KeyError: parent_urn = None url = request.path url = ':'.join(url[1:].split('/', 1)) update_index_on_save(urn, [url], parent_urn) return SuccessfulEditRedirect(urn)
def edit_picture(request): if request.method == 'POST': form = PictureRotationForm(request.POST) if form.is_valid() and "parent" in request.POST: save_context = BlueprintSaveContext.from_request(request) blueprint = { 'resource': { '@patch': request.POST["parent"], 'rotation': form.cleaned_data['rotation'], } } urn = Picture.save_blueprint(blueprint, save_context) return SuccessfulEditRedirect(urn) else: form = PictureRotationForm() return render_to_response('picture/edit.html', { 'form': form, 'parent_urn': request.ductus.resource.urn, }, RequestContext(request))
def new_picture(request): if request.GET.get('view') == 'flickr_search': return flickr_search_view(request) if request.method == 'POST': form = PictureImportForm(request.POST, request.FILES) if form.is_valid(): save_context = BlueprintSaveContext.from_request(request) urn = form.save(save_context) return SuccessfulEditRedirect(urn) else: if request.is_ajax(): return render_json_response({'errors': form.errors}) else: form = PictureImportForm() verbose_descriptions = PictureImportForm.get_verbose_input_descriptions() return render_to_response('picture/picture_import_form.html', { 'form': form, 'verbose_descriptions': verbose_descriptions, }, RequestContext(request))