Merge pull request '490_View_refactoring_II' (#520) from 490_View_refactoring_II into master
Reviewed-on: #520
This commit was merged in pull request #520.
This commit is contained in:
+18
-17
@@ -42,23 +42,24 @@ def generate_random_string(length: int, use_numbers: bool = False, use_letters_l
|
||||
ret_val = "".join(random.choice(elements) for i in range(length))
|
||||
return ret_val
|
||||
|
||||
class IdentifierGenerator:
|
||||
_MODEL = None
|
||||
|
||||
def generate_qr_code(content: str, size: int = 20) -> str:
|
||||
""" Generates a qr code from given content
|
||||
def __init__(self, model):
|
||||
from konova.models import BaseObject
|
||||
if not issubclass(model, BaseObject):
|
||||
raise AssertionError("Model must be a subclass of BaseObject!")
|
||||
|
||||
Args:
|
||||
content (str): The content for the qr code
|
||||
size (int): The image size
|
||||
self._MODEL = model
|
||||
|
||||
Returns:
|
||||
qrcode_svg (str): The qr code as svg
|
||||
"""
|
||||
qrcode_factory = qrcode.image.svg.SvgImage
|
||||
qrcode_img = qrcode.make(
|
||||
content,
|
||||
image_factory=qrcode_factory,
|
||||
box_size=size
|
||||
)
|
||||
stream = BytesIO()
|
||||
qrcode_img.save(stream)
|
||||
return stream.getvalue().decode()
|
||||
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
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
"""
|
||||
Author: Michel Peltriaux
|
||||
Created on: 14.12.25
|
||||
|
||||
"""
|
||||
from io import BytesIO
|
||||
|
||||
import qrcode
|
||||
import qrcode.image.svg as svg
|
||||
|
||||
|
||||
class QrCode:
|
||||
""" A wrapping class for creating a qr code with content
|
||||
|
||||
"""
|
||||
_content = None
|
||||
_img = None
|
||||
|
||||
def __init__(self, content: str, size: int):
|
||||
self._content = content
|
||||
self._img = self._generate_qr_code(content, size)
|
||||
|
||||
def _generate_qr_code(self, content: str, size: int = 20) -> str:
|
||||
""" Generates a qr code from given content
|
||||
|
||||
Args:
|
||||
content (str): The content for the qr code
|
||||
size (int): The image size
|
||||
|
||||
Returns:
|
||||
qrcode_svg (str): The qr code as svg
|
||||
"""
|
||||
img_factory = svg.SvgImage
|
||||
qrcode_img = qrcode.make(
|
||||
content,
|
||||
image_factory=img_factory,
|
||||
box_size=size
|
||||
)
|
||||
stream = BytesIO()
|
||||
qrcode_img.save(stream)
|
||||
return stream.getvalue().decode()
|
||||
|
||||
def get_img(self):
|
||||
return self._img
|
||||
|
||||
def get_content(self):
|
||||
return self._content
|
||||
Reference in New Issue
Block a user