it_manager: настраиваемое содержимое QR в шаблоне этикетки.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-07 17:24:05 +03:00
parent 620f4016da
commit b4876c4efd
4 changed files with 112 additions and 16 deletions
+28
View File
@@ -473,6 +473,34 @@ class ItManagerEquipmentTests(TestCase):
eq = Equipment.objects.get(serial_number='SN-AUTO-INV-1')
self.assertEqual(eq.inventory_number, suggested_inventory_number(eq.pk))
def test_qr_custom_pattern(self):
from apps.it_manager.equipment_labels import equipment_qr_payload, label_payload_for_unit
from apps.it_manager.models import EquipmentLabelTemplate
eq = make_equipment(serial_number='QR-SN-9', inventory_number='INV-QR-9')
self.assertEqual(equipment_qr_payload(eq), 'INV-QR-9')
self.assertEqual(
equipment_qr_payload(eq, 'ACORE|{serial}|{inventory}'),
'ACORE|QR-SN-9|INV-QR-9',
)
self.assertEqual(equipment_qr_payload(eq, 'id={id}'), f'id={eq.pk}')
tmpl = EquipmentLabelTemplate.get_default()
tmpl.layout = [
{
'id': 'qr1', 'type': 'qr',
'x_mm': 2, 'y_mm': 2, 'w_mm': 22, 'h_mm': 22,
'font_pt': 9, 'bold': False, 'align': 'left',
'text': 'S:{serial}',
},
]
tmpl.width_mm = 40
tmpl.height_mm = 30
tmpl.save()
payload = label_payload_for_unit(eq, template=tmpl)
qr_blocks = [b for b in payload['blocks'] if b['type'] == 'qr']
self.assertEqual(qr_blocks[0]['text'], 'S:QR-SN-9')
def test_labels_inject_text_when_template_codes_only(self):
from apps.it_manager.equipment_labels import label_payload_for_unit
from apps.it_manager.models import EquipmentLabelTemplate