# Identifier Generator View

* refactors identifier generator view methods into classes
* introduces IdentifierGenerator
* introduces AbstractIdentifierGeneratorView
This commit is contained in:
2025-12-14 16:25:49 +01:00
parent 72914bab9d
commit 2da6f1dc6f
11 changed files with 176 additions and 248 deletions
+23
View File
@@ -62,3 +62,26 @@ def generate_qr_code(content: str, size: int = 20) -> str:
stream = BytesIO()
qrcode_img.save(stream)
return stream.getvalue().decode()
class IdentifierGenerator:
_MODEL = None
def __init__(self, model):
from konova.models import BaseObject
if not issubclass(model, BaseObject):
raise AssertionError("Model must be a subclass of BaseObject!")
self._MODEL = model
def generate_id(self) -> str:
""" Generates a unique identifier
Returns:
"""
unpersisted_object = self._MODEL()
identifier = unpersisted_object.generate_new_identifier()
while self._MODEL.objects.filter(identifier=identifier).exists():
identifier = unpersisted_object.generate_new_identifier()
return identifier