Compare commits

..

4 Commits

Author SHA1 Message Date
452b418ade Merge pull request 'master' (#298) from master into Docker
Reviewed-on: SGD-Nord/konova#298
2023-02-21 08:07:47 +01:00
89c83f8a55 Merge pull request 'recorded_quality_check' (#297) from recorded_quality_check into master
Reviewed-on: SGD-Nord/konova#297
2023-02-21 08:06:36 +01:00
1438cf4e89 Deployment preparation
* adds unrecording to invalid entries
* reduces quality check runs on entries of interest (compensations)
2023-02-21 08:03:56 +01:00
676b8e1e54 Specific quality check for recorded entries
* adds a new command specifically for recorded entries
2023-02-17 08:03:10 +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)