diff options
| author | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2019-05-23 16:43:05 -0400 |
|---|---|---|
| committer | Gertjan van den Burg <gertjanvandenburg@gmail.com> | 2019-05-23 16:43:05 -0400 |
| commit | f19f2b809a015dcd6709788766b1a040657d0dfd (patch) | |
| tree | 552e1db43a9d79f63c871f45be067481a16e3651 /app | |
| parent | Move js to separate files (diff) | |
| download | AnnotateChange-f19f2b809a015dcd6709788766b1a040657d0dfd.tar.gz AnnotateChange-f19f2b809a015dcd6709788766b1a040657d0dfd.zip | |
Move load_data_for_chart to utils
Diffstat (limited to 'app')
| -rw-r--r-- | app/admin/routes.py | 10 | ||||
| -rw-r--r-- | app/main/datasets.py | 13 | ||||
| -rw-r--r-- | app/main/routes.py | 4 | ||||
| -rw-r--r-- | app/utils/datasets.py | 31 |
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} |
