# Identifier Generator View
* refactors identifier generator view methods into classes * introduces IdentifierGenerator * introduces AbstractIdentifierGeneratorView
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user