Mercurial > piecrust2
diff foodtruck/views/create.py @ 606:f1e03f85f14d
admin: Fix creating pages.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 27 Jan 2016 22:47:00 -0800 |
parents | d4a01a023998 |
children | efc1dc916e7c |
line wrap: on
line diff
--- a/foodtruck/views/create.py Wed Jan 27 22:46:06 2016 -0800 +++ b/foodtruck/views/create.py Wed Jan 27 22:47:00 2016 -0800 @@ -25,28 +25,34 @@ if request.method == 'POST': if 'do_save' in request.form: - metadata = dict(request.form.items()) - form_keys = list(metadata.keys()) - for k in filter(lambda k: not k.startswith('meta-'), form_keys): - del metadata[k] + metadata = {} + for fk, fv in request.form.items(): + if fk.startswith('meta-'): + metadata[fk[5:]] = fv + logger.debug("Searching for page with metadata: %s" % metadata) fac = source.findPageFactory(metadata, MODE_CREATING) if fac is None: - raise Exception("Can't find page for %s" % metadata) - abort(400) + logger.error("Can't find page for %s" % metadata) + abort(500) logger.debug("Creating page: %s" % fac.path) with open(fac.path, 'w', encoding='utf8') as fp: - fp.write(request.form['page_text']) + fp.write('') flash("%s was created." % os.path.relpath(fac.path, site.root_dir)) route = site.getRoute(source.name, fac.metadata, skip_taxonomies=True) - dummy = object() - dummy.source_metadata = fac.metadata - dummy.getRouteMetadata = lambda: {} + if route is None: + logger.error("Can't find route for page: %s" % fac.path) + abort(500) + + dummy = _DummyPage(fac) route_metadata = create_route_metadata(dummy) uri = route.getUri(route_metadata) + uri_root = '/site/%s/' % g.sites.get().name + uri = uri[len(uri_root):] + logger.debug("Redirecting to: %s" % uri) return redirect(url_for('edit_page', slug=uri)) @@ -55,6 +61,14 @@ return _write_page_form(source) +class _DummyPage: + def __init__(self, fac): + self.source_metadata = fac.metadata + + def getRouteMetadata(self): + return {} + + def _write_page_form(source): data = {} data['is_new_page'] = True