aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGertjan van den Burg <gertjanvandenburg@gmail.com>2019-05-23 16:43:05 -0400
committerGertjan van den Burg <gertjanvandenburg@gmail.com>2019-05-23 16:43:05 -0400
commitf19f2b809a015dcd6709788766b1a040657d0dfd (patch)
tree552e1db43a9d79f63c871f45be067481a16e3651 /app
parentMove js to separate files (diff)
downloadAnnotateChange-f19f2b809a015dcd6709788766b1a040657d0dfd.tar.gz
AnnotateChange-f19f2b809a015dcd6709788766b1a040657d0dfd.zip
Move load_data_for_chart to utils
Diffstat (limited to 'app')
-rw-r--r--app/admin/routes.py10
-rw-r--r--app/main/datasets.py13
-rw-r--r--app/main/routes.py4
-rw-r--r--app/utils/datasets.py31
4 files changed, 41 insertions, 17 deletions
diff --git a/app/admin/routes.py b/app/admin/routes.py
index 5c86fad..efb4f57 100644
--- a/app/admin/routes.py
+++ b/app/admin/routes.py
@@ -18,9 +18,13 @@ from app.admin.forms import (
AdminSelectDatasetForm,
)
from app.models import User, Dataset, Task, Annotation
-from app.utils.datasets import get_name_from_dataset, md5sum, dataset_is_demo
+from app.utils.datasets import (
+ get_name_from_dataset,
+ md5sum,
+ dataset_is_demo,
+ load_data_for_chart,
+)
from app.utils.tasks import generate_auto_assign_tasks
-from app.main.datasets import load_data_for_chart
@bp.route("/manage/tasks", methods=("GET", "POST"))
@@ -289,7 +293,7 @@ def view_annotations_by_dataset(dset_id):
counter += 1
anno_clean.append(dict(user=uid, index=ann.cp_index))
- data = load_data_for_chart(dataset.name)
+ data = load_data_for_chart(dataset.name, dataset.md5sum)
data["annotations"] = anno_clean
return render_template(
"admin/annotations_by_dataset.html",
diff --git a/app/main/datasets.py b/app/main/datasets.py
index c06b4bf..7245e51 100644
--- a/app/main/datasets.py
+++ b/app/main/datasets.py
@@ -2,18 +2,11 @@
import os
import json
+import logging
-from flask import current_app
+
+from app.utils.datasets import md5sum
-def load_data_for_chart(name):
- dataset_dir = os.path.join(
- current_app.instance_path, current_app.config["DATASET_DIR"]
- )
- target_filename = os.path.join(dataset_dir, name + ".json")
- with open(target_filename, 'rb') as fid:
- data = json.load(fid)
- chart_data = [{"value": x} for x in data['series']['V1']['raw']]
- return {"chart_data": chart_data}
diff --git a/app/main/routes.py b/app/main/routes.py
index 60dd6e1..d249c5c 100644
--- a/app/main/routes.py
+++ b/app/main/routes.py
@@ -9,7 +9,7 @@ from app import db
from app.decorators import login_required
from app.main import bp
from app.models import Annotation, Task
-from app.main.datasets import load_data_for_chart
+from app.utils.datasets import load_data_for_chart
RUBRIC = """
<i>Please mark all the points in the time series where an <b>abrupt change</b>
@@ -99,7 +99,7 @@ def task(task_id):
if task.done:
flash("It's not possible to edit annotations at the moment.")
return redirect(url_for("main.index"))
- data = load_data_for_chart(task.dataset.name)
+ data = load_data_for_chart(task.dataset.name, task.dataset.md5sum)
return render_template(
"annotate/index.html",
title="Annotate %s" % task.dataset.name,
diff --git a/app/utils/datasets.py b/app/utils/datasets.py
index 078535f..74785cb 100644
--- a/app/utils/datasets.py
+++ b/app/utils/datasets.py
@@ -33,9 +33,15 @@ Author: Gertjan van den Burg
"""
-import re
-import json
import hashlib
+import json
+import logging
+import os
+import re
+
+from flask import current_app
+
+logger = logging.getLogger(__file__)
def validate_dataset(filename):
@@ -99,3 +105,24 @@ def md5sum(filename):
hasher.update(buf)
buf = fid.read(blocksize)
return hasher.hexdigest()
+
+
+def load_data_for_chart(name, known_md5):
+ dataset_dir = os.path.join(
+ current_app.instance_path, current_app.config["DATASET_DIR"]
+ )
+ target_filename = os.path.join(dataset_dir, name + ".json")
+ if not md5sum(target_filename) == known_md5:
+ logger.error(
+ """
+ MD5 checksum failed for dataset with name: %s.
+ Found: %s.
+ Expected: %s.
+ """
+ % (name, md5sum(target_filename), known_md5)
+ )
+ return None
+ with open(target_filename, "rb") as fid:
+ data = json.load(fid)
+ chart_data = [{"value": x} for x in data["series"]["V1"]["raw"]]
+ return {"chart_data": chart_data}