diff --git a/konova/management/commands/quality_check.py b/konova/management/commands/quality_check.py index a58bda11..579da4b9 100644 --- a/konova/management/commands/quality_check.py +++ b/konova/management/commands/quality_check.py @@ -52,7 +52,6 @@ class Command(BaseKonovaCommand): self.__ema = Ema.objects.filter(**_filter) def perform_quality_check(self): - # Interventions _runs = [ (self.__interventions, InterventionQualityChecker), (self.__compensations, CompensationQualityChecker), diff --git a/konova/management/commands/quality_check_recorded.py b/konova/management/commands/quality_check_recorded.py new file mode 100644 index 00000000..e141381c --- /dev/null +++ b/konova/management/commands/quality_check_recorded.py @@ -0,0 +1,66 @@ +""" +Author: Michel Peltriaux +Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany +Contact: ksp-servicestelle@sgdnord.rlp.de +Created on: 16.02.23 + +""" +from compensation.models import Compensation, EcoAccount +from compensation.utils.quality import CompensationQualityChecker, EcoAccountQualityChecker +from ema.models import Ema +from ema.utils.quality import EmaQualityChecker +from intervention.models import Intervention +from intervention.utils.quality import InterventionQualityChecker +from konova.management.commands.setup import BaseKonovaCommand +from user.models import User + + +class Command(BaseKonovaCommand): + help = "Runs quality check on recorded entries" + + __interventions = [] + __compensations = [] + __ecoaccount = [] + __ema = [] + + def handle(self, *args, **options): + self.__get_objects() + self.perform_quality_check() + + def __get_objects(self): + _filter = { + "recorded_id__isnull": False, + } + self.__interventions = Intervention.objects.filter(**_filter) + self.__compensations = Compensation.objects.filter( + intervention__recorded_id__isnull=False + ) + self.__ecoaccount = EcoAccount.objects.filter(**_filter) + self.__ema = Ema.objects.filter(**_filter) + + def perform_quality_check(self): + """ Performs quality check and unrecords failing entries + + """ + + _runs = [ + #(self.__interventions, InterventionQualityChecker), + (self.__compensations, CompensationQualityChecker), + #(self.__ecoaccount, EcoAccountQualityChecker), + #(self.__ema, EmaQualityChecker), + ] + invalid_entries = set() + admin_user = User.objects.get( + username="kspRoot" + ) + for run in _runs: + entries = run[0] + CheckerClass = run[1] + for entry in entries: + checker = CheckerClass(entry) + checker.run_check() + if not checker.valid and CheckerClass is CompensationQualityChecker: + invalid_entries.add(entry.intervention) + for e in invalid_entries: + e.set_unrecorded(user=admin_user) + self._write_warning(e.identifier)