about summary refs log tree commit diff
path: root/qc_app
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2022-06-28 15:20:54 +0300
committerFrederick Muriuki Muriithi2022-06-28 15:20:54 +0300
commite68c807e6598a4087d7c83510ba33c81139f5544 (patch)
tree1c8d52c686e64cf8751f51d85bf8164ff8b9653c /qc_app
parent3eef6d582245c80e274c9e135028de90788a712b (diff)
downloadgn-uploader-e68c807e6598a4087d7c83510ba33c81139f5544.tar.gz
Check for inconsistent columns
The number columns in each contents line should be equal to the nember
of columns in the header line.
Diffstat (limited to 'qc_app')
-rw-r--r--qc_app/parse.py13
-rw-r--r--qc_app/templates/errors_display.html8
2 files changed, 15 insertions, 6 deletions
diff --git a/qc_app/parse.py b/qc_app/parse.py
index a017b2c..5d75c37 100644
--- a/qc_app/parse.py
+++ b/qc_app/parse.py
@@ -6,11 +6,12 @@ from redis import Redis
 from flask import flash, request, url_for, redirect, Blueprint, render_template
 from flask import current_app as app
 
-from quality_control.errors import InvalidValue
+from quality_control.errors import InvalidValue, DuplicateHeading
 from . import jobs
 
 parsebp = Blueprint("parse", __name__)
 isinvalidvalue = lambda item: isinstance(item, InvalidValue)
+isduplicateheading = lambda item: isinstance(item, DuplicateHeading)
 
 @parsebp.route("/parse", methods=["GET"])
 def parse():
@@ -73,7 +74,9 @@ def parse_status(job_id: str):
         if status == "parse-error":
             return redirect(url_for("parse.fail", job_id=job_id))
 
-        app.jinja_env.globals.update(isinvalidvalue=isinvalidvalue)
+        app.jinja_env.globals.update(
+            isinvalidvalue=isinvalidvalue,
+            isduplicateheading=isduplicateheading)
         return render_template(
             "job_progress.html",
             job_id = job_id,
@@ -93,8 +96,10 @@ def results(job_id: str):
 
     if job:
         filename = job["filename"]
-        errors = jsonpickle.decode(job["errors"])
-        app.jinja_env.globals.update(isinvalidvalue=isinvalidvalue)
+        errors = jsonpickle.decode(job.get("errors", jsonpickle.encode(tuple())))
+        app.jinja_env.globals.update(
+            isinvalidvalue=isinvalidvalue,
+            isduplicateheading=isduplicateheading)
         return render_template(
             "parse_results.html",
             errors=errors,
diff --git a/qc_app/templates/errors_display.html b/qc_app/templates/errors_display.html
index 0c9a212..39144a9 100644
--- a/qc_app/templates/errors_display.html
+++ b/qc_app/templates/errors_display.html
@@ -22,15 +22,19 @@
       <td>
 	{%if isinvalidvalue(error):%}
 	{{error.column}}
-	{%else: %}
+	{%elif isduplicateheading(error): %}
 	{{error.columns}}
+	{%else: %}
+	-
 	{%endif %}
       </td>
       <td>
 	{%if isinvalidvalue(error):%}
 	Invalid Value
-	{%else: %}
+	{%elif isduplicateheading(error): %}
 	Duplicate Header
+	{%else%}
+	Inconsistent Columns
 	{%endif %}
       </td>
       <td>{{error["message"]}}</td>