master #298

Merged
mpeltriaux merged 3 commits from master into Docker 2023-02-21 08:07:47 +01:00
2 changed files with 66 additions and 1 deletions

View File

@ -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),

View File

@ -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)