Mercurial > piecrust2
comparison foodtruck/views/create.py @ 628:14c51f5accc9
admin: Fix crashes when creating a new page.
* Use proper default values when the user doesn't provide any.
* Make sure the new page's directory exists.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Mon, 08 Feb 2016 23:28:39 -0800 |
parents | efc1dc916e7c |
children | a7726e4862c4 |
comparison
equal
deleted
inserted
replaced
627:6c205066067a | 628:14c51f5accc9 |
---|---|
1 import os | |
1 import os.path | 2 import os.path |
2 import logging | 3 import logging |
3 from flask import ( | 4 from flask import ( |
4 g, request, abort, render_template, url_for, redirect, flash) | 5 g, request, abort, render_template, url_for, redirect, flash) |
5 from flask.ext.login import login_required | 6 from flask.ext.login import login_required |
24 abort(400) | 25 abort(400) |
25 | 26 |
26 if request.method == 'POST': | 27 if request.method == 'POST': |
27 if 'do_save' in request.form: | 28 if 'do_save' in request.form: |
28 metadata = {} | 29 metadata = {} |
30 for f in source.getInteractiveFields(): | |
31 metadata[f.name] = f.default_value | |
29 for fk, fv in request.form.items(): | 32 for fk, fv in request.form.items(): |
30 if fk.startswith('meta-'): | 33 if fk.startswith('meta-'): |
31 metadata[fk[5:]] = fv | 34 metadata[fk[5:]] = fv |
32 | 35 |
33 logger.debug("Searching for page with metadata: %s" % metadata) | 36 logger.debug("Searching for page with metadata: %s" % metadata) |
35 if fac is None: | 38 if fac is None: |
36 logger.error("Can't find page for %s" % metadata) | 39 logger.error("Can't find page for %s" % metadata) |
37 abort(500) | 40 abort(500) |
38 | 41 |
39 logger.debug("Creating page: %s" % fac.path) | 42 logger.debug("Creating page: %s" % fac.path) |
43 os.makedirs(os.path.dirname(fac.path), exist_ok=True) | |
40 with open(fac.path, 'w', encoding='utf8') as fp: | 44 with open(fac.path, 'w', encoding='utf8') as fp: |
41 fp.write('') | 45 fp.write('') |
42 flash("%s was created." % os.path.relpath(fac.path, site.root_dir)) | 46 flash("%s was created." % os.path.relpath(fac.path, site.root_dir)) |
43 | 47 |
44 route = site.getRoute(source.name, fac.metadata, | 48 route = site.getRoute(source.name, fac.metadata, |