# 450 Optimization recalculate_parcels command #460
@ -34,7 +34,9 @@ class Command(BaseKonovaCommand):
 | 
			
		||||
    def recalculate_parcels(self, options: dict):
 | 
			
		||||
        force_all = options.get("force_all", False)
 | 
			
		||||
 | 
			
		||||
        geometry_objects = Geometry.objects.all().exclude(
 | 
			
		||||
        geometry_objects = Geometry.objects.filter(
 | 
			
		||||
            geom__isempty=False,
 | 
			
		||||
        ).exclude(
 | 
			
		||||
            geom=None
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,51 +0,0 @@
 | 
			
		||||
"""
 | 
			
		||||
Author: Michel Peltriaux
 | 
			
		||||
Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany
 | 
			
		||||
Contact: michel.peltriaux@sgdnord.rlp.de
 | 
			
		||||
Created on: 19.08.21
 | 
			
		||||
 | 
			
		||||
"""
 | 
			
		||||
from django.core.management import BaseCommand
 | 
			
		||||
 | 
			
		||||
from intervention.models import Intervention
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Command(BaseCommand):
 | 
			
		||||
    help = "Performs test on collisions using the identifier generation"
 | 
			
		||||
 | 
			
		||||
    def handle(self, *args, **options):
 | 
			
		||||
        identifiers = {}
 | 
			
		||||
        max_iterations = 100000
 | 
			
		||||
        try:
 | 
			
		||||
            collisions = 0
 | 
			
		||||
            len_ids = len(identifiers)
 | 
			
		||||
            while len_ids < max_iterations:
 | 
			
		||||
                tmp_intervention = Intervention()
 | 
			
		||||
                _id = tmp_intervention.generate_new_identifier()
 | 
			
		||||
                len_ids = len(identifiers)
 | 
			
		||||
                if _id not in identifiers:
 | 
			
		||||
                    if len_ids % (max_iterations/5) == 0:
 | 
			
		||||
                        print(len_ids)
 | 
			
		||||
                    identifiers[_id] = None
 | 
			
		||||
                else:
 | 
			
		||||
                    collisions += 1
 | 
			
		||||
                    print("+++ Collision after {} identifiers +++".format(len_ids))
 | 
			
		||||
 | 
			
		||||
        except KeyboardInterrupt:
 | 
			
		||||
            self._break_line()
 | 
			
		||||
            exit(-1)
 | 
			
		||||
        print(
 | 
			
		||||
            "\n{} collisions in {} identifiers; Collision rate {}%".format(
 | 
			
		||||
                collisions,
 | 
			
		||||
                len_ids,
 | 
			
		||||
                (collisions / len_ids)*100,
 | 
			
		||||
            )
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def _break_line(self):
 | 
			
		||||
        """ Simply prints a line break
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        self.stdout.write("\n")
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user