* adds NewEcoAccountForm * refactors NewCompensationForm into AbstractCompensationForm so main fields can be reused again * fixes template bug in account detail view where the amount of deductions has been displayed instead of the available rest * refactors _generate_new_identifier() into generate_new_identifier() * refactors get_available_rest() into returning both, the total and relative amount * improves saving of SimpleGeometryForm() * adds/updates translations
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
"""
|
|
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") |