46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import re
|
|
|
|
from dibbler.conf import config
|
|
from dibbler.models import Product, User
|
|
from dibbler.lib.printer_helpers import print_bar_code, print_name_label
|
|
|
|
from .helpermenus import Menu
|
|
|
|
|
|
class PrintLabelMenu(Menu):
|
|
def __init__(self):
|
|
Menu.__init__(self, "Print a label", uses_db=True)
|
|
self.help_text = """
|
|
Prints out a product bar code on the printer
|
|
|
|
Put it up somewhere in the vicinity.
|
|
"""
|
|
|
|
def _execute(self):
|
|
self.print_header()
|
|
|
|
thing = self.input_thing("Product/User")
|
|
|
|
if isinstance(thing, Product):
|
|
if re.match(r"^[0-9]{13}$", thing.bar_code):
|
|
bar_type = "ean13"
|
|
elif re.match(r"^[0-9]{8}$", thing.bar_code):
|
|
bar_type = "ean8"
|
|
else:
|
|
bar_type = "code39"
|
|
print_bar_code(
|
|
thing.bar_code,
|
|
thing.name,
|
|
barcode_type=bar_type,
|
|
rotate=config.getboolean("printer", "rotate"),
|
|
printer_type="QL-700",
|
|
label_type=config.get("printer", "label_type"),
|
|
)
|
|
elif isinstance(thing, User):
|
|
print_name_label(
|
|
text=thing.name,
|
|
label_type=config.get("printer", "label_type"),
|
|
rotate=config.getboolean("printer", "rotate"),
|
|
printer_type="QL-700",
|
|
)
|