Merge pull request 'recorded_quality_check' (#297) from recorded_quality_check into master
Reviewed-on: SGD-Nord/konova#297
This commit is contained in:
		
						commit
						89c83f8a55
					
				@ -52,7 +52,6 @@ class Command(BaseKonovaCommand):
 | 
				
			|||||||
        self.__ema = Ema.objects.filter(**_filter)
 | 
					        self.__ema = Ema.objects.filter(**_filter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def perform_quality_check(self):
 | 
					    def perform_quality_check(self):
 | 
				
			||||||
        # Interventions
 | 
					 | 
				
			||||||
        _runs = [
 | 
					        _runs = [
 | 
				
			||||||
            (self.__interventions, InterventionQualityChecker),
 | 
					            (self.__interventions, InterventionQualityChecker),
 | 
				
			||||||
            (self.__compensations, CompensationQualityChecker),
 | 
					            (self.__compensations, CompensationQualityChecker),
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										66
									
								
								konova/management/commands/quality_check_recorded.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								konova/management/commands/quality_check_recorded.py
									
									
									
									
									
										Normal 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)
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user