def view_unlink_wikipage(request): check_unlink_permission(request, *request.ductus.wiki_page.split_pagename()) if request.ductus.wiki_revision.urn == "": return render_to_response('wiki/unlink_deleted.html', { 'already_deleted': True, }, RequestContext(request)) if request.method == 'POST': revision = construct_wiki_revision(request.ductus.wiki_page, "", request) revision.save() update_index_on_save('urn:%s' % request.ductus.wiki_revision.urn, []) return render_to_response('wiki/unlink_deleted.html', { }, RequestContext(request)) return render_to_response('wiki/unlink_confirm.html', { }, 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)