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