changeset 770:a7726e4862c4

admin: Fix API changes, don't crash the dashboard on non-binary WIP files. Treat new/edited files that have no `auto_format` supported extension as "miscellaneous" files, which are shown separately on the dashboard.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 02 Jul 2016 01:30:51 -0700
parents d841716d8e0d
children 673979a5d548
files foodtruck/assets/sass/foodtruck/_base.scss foodtruck/templates/dashboard.html foodtruck/views/create.py foodtruck/views/dashboard.py
diffstat 4 files changed, 28 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/foodtruck/assets/sass/foodtruck/_base.scss	Sat Jul 02 01:28:29 2016 -0700
+++ b/foodtruck/assets/sass/foodtruck/_base.scss	Sat Jul 02 01:30:51 2016 -0700
@@ -49,3 +49,7 @@
     padding: 0 0.2em;
 }
 
+.ft-dash-misc {
+    color: $ft-color-gray-light;
+}
+
--- a/foodtruck/templates/dashboard.html	Sat Jul 02 01:28:29 2016 -0700
+++ b/foodtruck/templates/dashboard.html	Sat Jul 02 01:30:51 2016 -0700
@@ -33,7 +33,7 @@
     <div class="col-md-6">
         <h2><span class="icon ion-erlenmeyer-flask"></span> Work in Progress</h2>
         {% if new_pages %}
-        <p>New pages</p>
+        <p>New pages:</p>
         <ul>
             {% for p in new_pages %}
             <li><a href="{{p.url}}">{{p.title}}</a><br/>
@@ -42,7 +42,7 @@
         </ul>
         {% endif %}
         {% if edited_pages %}
-        <p>Edited pages</p>
+        <p>Edited pages:</p>
         <ul>
             {% for p in edited_pages %}
             <li><a href="{{p.url}}">{{p.title}}</a><br/>
@@ -53,6 +53,16 @@
         {% if not new_pages and not edited_pages %}
         <p>No work in progress.</p>
         {% endif %}
+        {% if misc_files %}
+        <div class="ft-dash-misc">
+        <p>Miscellaneous new/edited files:</p>
+        <ul>
+            {% for p in misc_files %}
+            <li>{{p}}</li>
+            {% endfor %}
+        </ul>
+        </div>
+        {% endif %}
 
     </div>
 </div>
--- a/foodtruck/views/create.py	Sat Jul 02 01:28:29 2016 -0700
+++ b/foodtruck/views/create.py	Sat Jul 02 01:30:51 2016 -0700
@@ -45,8 +45,7 @@
                 fp.write('')
             flash("%s was created." % os.path.relpath(fac.path, site.root_dir))
 
-            route = site.getRoute(source.name, fac.metadata,
-                                  skip_taxonomies=True)
+            route = site.getSourceRoute(source.name, fac.metadata)
             if route is None:
                 logger.error("Can't find route for page: %s" % fac.path)
                 abort(500)
--- a/foodtruck/views/dashboard.py	Sat Jul 02 01:28:29 2016 -0700
+++ b/foodtruck/views/dashboard.py	Sat Jul 02 01:30:51 2016 -0700
@@ -39,16 +39,21 @@
 
     data['new_pages'] = []
     data['edited_pages'] = []
+    data['misc_files'] = []
     if site.scm:
         st = site.scm.getStatus()
         for p in st.new_files:
             pd = _getWipData(p, site, fs_endpoints)
             if pd:
                 data['new_pages'].append(pd)
+            else:
+                data['misc_files'].append(p)
         for p in st.edited_files:
             pd = _getWipData(p, site, fs_endpoints)
             if pd:
                 data['edited_pages'].append(pd)
+            else:
+                data['misc_files'].append(p)
 
     data['site_name'] = site.name
     data['site_title'] = site.piecrust_app.config.get('site/title', site.name)
@@ -70,6 +75,11 @@
 
 
 def _getWipData(path, site, fs_endpoints):
+    auto_formats = site.piecrust_app.config.get('site/auto_formats', ['html'])
+    pathname, pathext = os.path.splitext(path)
+    if pathext not in auto_formats:
+        return None
+
     source = None
     for endpoint, s in fs_endpoints.items():
         if path.startswith(endpoint):
@@ -79,8 +89,7 @@
         return None
 
     fac = source.buildPageFactory(os.path.join(site.root_dir, path))
-    route = site.piecrust_app.getRoute(
-            source.name, fac.metadata, skip_taxonomies=True)
+    route = site.piecrust_app.getSourceRoute(source.name, fac.metadata)
     if not route:
         return None