webapp: parse rounded timestamps
[~helmut/crossqa.git] / webapp.py
index 128b816..9e69a18 100644 (file)
--- a/webapp.py
+++ b/webapp.py
@@ -15,6 +15,7 @@ import werkzeug
 
 app = flask.Flask("crossqa")
 app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///db'
+app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
 db = flask_sqlalchemy.SQLAlchemy(app)
 
 src_template = """<!DOCTYPE html>
@@ -30,12 +31,8 @@ src_template = """<!DOCTYPE html>
     <th>state</th>
     <th>architectures</th>
    </tr>
-   {%- set bootstrapdn = namespace(show=False) -%}
    {%- set okarchs = depresult.pop(None, None) -%}
    {%- for reason, archs in depresult.items()|sort -%}
-    {%- if not reason.startswith("skew ") -%}
-     {%- set bootstrapdn.show = True -%}
-    {%- endif -%}
     <tr>
      <td>{{ reason|e }}</td>
      <td>{{ archs|arch_format }}</td>
@@ -50,7 +47,7 @@ src_template = """<!DOCTYPE html>
   </table>
   <h5>See also</h5>
   <ul>
-   {%- if bootstrapdn.show -%}
+   {%- if show_bootstrapdn -%}
     <li>
      <a href="https://bootstrap.debian.net/cross_all/{{ sourcepackage|e }}.html">bootstrap.debian.net</a>
     </li>
@@ -93,7 +90,10 @@ src_template = """<!DOCTYPE html>
 
 @app.template_filter("sqltimestamp")
 def sqltimestamp_filter(s):
-    return datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S.%f")
+    try:
+        return datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S.%f")
+    except ValueError:
+        return datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
 
 @app.template_filter("formatts")
 def formatts_filter(ts):
@@ -146,6 +146,9 @@ def show_source(source):
             SELECT version, architecture, success, starttime, filename
                 FROM builds WHERE source = :source;""")
         context["builds"] = list(conn.execute(query, source=source))
+        context["show_bootstrapdn"] = \
+                any(reason and not reason.startswith("skew ")
+                    for reason in context["depresult"].keys())
     return flask.render_template_string(src_template, **context)
 
 @app.route("/build/<path:filename>")