# translation from django.utils.translation import gettext_lazy as _ from django.core.validators import MinValueValidator from django.core.validators import MaxValueValidator # printer supportt import socket import io import json # InvenTree plugin libs from plugin import InvenTreePlugin from plugin.mixins import LabelPrintingMixin, SettingsMixin from inventree_phomemo.version import PHOMEMO_PLUGIN_VERSION class PhomemoLabelPlugin(LabelPrintingMixin, SettingsMixin, InvenTreePlugin): AUTHOR = "Sergal.engineering" DESCRIPTION = "Label printing plugin for Phomemo printers" VERSION = PHOMEMO_PLUGIN_VERSION NAME = "Phomemo" SLUG = "phomemo" TITLE = "Phomemo Label Printer" SETTINGS = { 'IP_ADDRESS': { 'name': _('IP Address'), 'description': _('IP address of phomemo print server'), 'default': '', }, 'PORT': { 'name': _('Port'), 'description': _('Port of phomemo print server'), 'default': '9100', }, } def print_label(self, **kwargs): # Read settings ip_address = self.get_setting('IP_ADDRESS') port = int(self.get_setting('PORT')) label_data = kwargs['label_instance'] # Send the label to the printer try: print_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print_socket.settimeout(5) print_socket.connect((ip_address, port)) json.dump(label_data, print_socket) print_socket.close() except Exception as error: raise ConnectionError('Error connecting to printer server: ' + str(error))