Coverage for src/backend/InvenTree/plugin/samples/machines/sample_printer.py: 0%
33 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
1"""Sample plugin for registering custom machines."""
3import time
5from django.db import models
7import structlog
9from machine.machine_type import BaseDriver
10from plugin import InvenTreePlugin
11from plugin.machine import BaseMachineType
12from plugin.machine.machine_types import LabelPrinterBaseDriver, LabelPrinterMachine
13from plugin.mixins import MachineDriverMixin, SettingsMixin
14from report.models import LabelTemplate
16logger = structlog.get_logger('inventree')
19class SamplePrinterDriver(LabelPrinterBaseDriver):
20 """Sample printer driver."""
22 SLUG = 'sample-printer-driver'
23 NAME = 'Sample Label Printer Driver'
24 DESCRIPTION = 'Sample label printing driver for InvenTree'
26 MACHINE_SETTINGS = {
27 'CONNECTION': {
28 'name': 'Connection String',
29 'description': 'Custom string for connecting to the printer',
30 'default': '123-xx123:8000',
31 },
32 'DELAY': {
33 'name': 'Print Delay',
34 'description': 'Delay (in seconds) before printing',
35 'default': 0,
36 'units': 'seconds',
37 'validator': int,
38 },
39 }
41 def init_machine(self, machine: BaseMachineType) -> None:
42 """Machine initialization hook."""
43 machine.set_properties([
44 {'key': 'Model', 'value': 'Sample Printer 3000'},
45 {'key': 'Battery', 'value': 42, 'type': 'progress'},
46 ])
48 def print_label(
49 self,
50 machine: LabelPrinterMachine,
51 label: LabelTemplate,
52 item: models.Model,
53 **kwargs,
54 ) -> None:
55 """Send the label to the printer."""
56 print_delay = machine.get_setting('DELAY', 'D')
58 print('MOCK LABEL PRINTING:')
60 if print_delay > 0:
61 print(f' - Delaying for {print_delay} seconds...')
62 time.sleep(print_delay)
64 print('- machine:', machine)
65 print('- label:', label)
66 print('- item:', item)
69class SamplePrinterMachine(MachineDriverMixin, SettingsMixin, InvenTreePlugin):
70 """A very simple example of a 'printer' machine plugin.
72 This plugin class simply prints a message to the logger.
73 """
75 NAME = 'SamplePrinterMachine'
76 SLUG = 'sample-printer-machine-plugin'
77 TITLE = 'Sample dummy plugin for printing labels'
79 VERSION = '0.1'
81 def get_machine_drivers(self) -> list[BaseDriver]:
82 """Return a list of drivers registered by this plugin."""
83 return [SamplePrinterDriver]