Mercurial > piecrust2
comparison 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 |
comparison
equal
deleted
inserted
replaced
605:cb92d6eca543 | 606:f1e03f85f14d |
---|---|
23 if not isinstance(source, IInteractiveSource): | 23 if not isinstance(source, IInteractiveSource): |
24 abort(400) | 24 abort(400) |
25 | 25 |
26 if request.method == 'POST': | 26 if request.method == 'POST': |
27 if 'do_save' in request.form: | 27 if 'do_save' in request.form: |
28 metadata = dict(request.form.items()) | 28 metadata = {} |
29 form_keys = list(metadata.keys()) | 29 for fk, fv in request.form.items(): |
30 for k in filter(lambda k: not k.startswith('meta-'), form_keys): | 30 if fk.startswith('meta-'): |
31 del metadata[k] | 31 metadata[fk[5:]] = fv |
32 | 32 |
33 logger.debug("Searching for page with metadata: %s" % metadata) | |
33 fac = source.findPageFactory(metadata, MODE_CREATING) | 34 fac = source.findPageFactory(metadata, MODE_CREATING) |
34 if fac is None: | 35 if fac is None: |
35 raise Exception("Can't find page for %s" % metadata) | 36 logger.error("Can't find page for %s" % metadata) |
36 abort(400) | 37 abort(500) |
37 | 38 |
38 logger.debug("Creating page: %s" % fac.path) | 39 logger.debug("Creating page: %s" % fac.path) |
39 with open(fac.path, 'w', encoding='utf8') as fp: | 40 with open(fac.path, 'w', encoding='utf8') as fp: |
40 fp.write(request.form['page_text']) | 41 fp.write('') |
41 flash("%s was created." % os.path.relpath(fac.path, site.root_dir)) | 42 flash("%s was created." % os.path.relpath(fac.path, site.root_dir)) |
42 | 43 |
43 route = site.getRoute(source.name, fac.metadata, | 44 route = site.getRoute(source.name, fac.metadata, |
44 skip_taxonomies=True) | 45 skip_taxonomies=True) |
45 dummy = object() | 46 if route is None: |
46 dummy.source_metadata = fac.metadata | 47 logger.error("Can't find route for page: %s" % fac.path) |
47 dummy.getRouteMetadata = lambda: {} | 48 abort(500) |
49 | |
50 dummy = _DummyPage(fac) | |
48 route_metadata = create_route_metadata(dummy) | 51 route_metadata = create_route_metadata(dummy) |
49 uri = route.getUri(route_metadata) | 52 uri = route.getUri(route_metadata) |
53 uri_root = '/site/%s/' % g.sites.get().name | |
54 uri = uri[len(uri_root):] | |
55 logger.debug("Redirecting to: %s" % uri) | |
50 | 56 |
51 return redirect(url_for('edit_page', slug=uri)) | 57 return redirect(url_for('edit_page', slug=uri)) |
52 | 58 |
53 abort(400) | 59 abort(400) |
54 | 60 |
55 return _write_page_form(source) | 61 return _write_page_form(source) |
62 | |
63 | |
64 class _DummyPage: | |
65 def __init__(self, fac): | |
66 self.source_metadata = fac.metadata | |
67 | |
68 def getRouteMetadata(self): | |
69 return {} | |
56 | 70 |
57 | 71 |
58 def _write_page_form(source): | 72 def _write_page_form(source): |
59 data = {} | 73 data = {} |
60 data['is_new_page'] = True | 74 data['is_new_page'] = True |