From 292793c9e6798ee2b3f35bdf74092cf98f052d9c Mon Sep 17 00:00:00 2001 From: Michael Wood Date: Wed, 26 May 2021 13:48:47 +0100 Subject: [PATCH] data_quality: Create rewrite_quality_data command Update settings and add app.py to make this into a django app --- datastore/data_quality/apps.py | 5 +++ .../commands/rewrite_quality_data.py | 34 +++++++++++++++++++ datastore/settings/settings.py | 1 + 3 files changed, 40 insertions(+) create mode 100644 datastore/data_quality/apps.py create mode 100644 datastore/data_quality/management/commands/rewrite_quality_data.py diff --git a/datastore/data_quality/apps.py b/datastore/data_quality/apps.py new file mode 100644 index 00000000..b71f611a --- /dev/null +++ b/datastore/data_quality/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class AdditionalDataConfig(AppConfig): + name = "data_quality" diff --git a/datastore/data_quality/management/commands/rewrite_quality_data.py b/datastore/data_quality/management/commands/rewrite_quality_data.py new file mode 100644 index 00000000..e9c71791 --- /dev/null +++ b/datastore/data_quality/management/commands/rewrite_quality_data.py @@ -0,0 +1,34 @@ +from django.core.management.base import BaseCommand + +from data_quality import quality_data +import db.models as db + + +class Command(BaseCommand): + help = ( + "Reloads the additional data on grant data specified by datagetter id or latest" + ) + + def add_arguments(self, parser): + parser.add_argument( + type=str, + action="store", + dest="getter_run", + help="The datagetter run id or latest", + ) + + def handle(self, *args, **options): + + if "latest" in options["getter_run"]: + source_files = db.Latest.objects.get( + series=db.Latest.CURRENT + ).sourcefile_set.all() + else: + source_files = db.SourceFile.object.filter(getter_run=options["getter_run"]) + + for source_file in source_files: + grants_list = { + "grants": list(source_file.grant_set.values_list("data", flat=True)) + } + source_file.quality = quality_data.create(grants_list) + source_file.save() diff --git a/datastore/settings/settings.py b/datastore/settings/settings.py index 36bb5278..3b8bfdde 100644 --- a/datastore/settings/settings.py +++ b/datastore/settings/settings.py @@ -44,6 +44,7 @@ "api", "prometheus", "additional_data", + "data_quality", # Useful Django apps: "django.contrib.admin", "django.contrib.auth",