# Copyright (c) 2021, Frappe Technologies and contributors
# For license information, please see license.txt

import frappe
from frappe.model.document import Document
from frappe import _

class NetworkPrinterSettings(Document):
	@frappe.whitelist()
	def get_printers_list(self,ip="localhost",port=631):
		printer_list = []
		try:
			import cups
		except ImportError:
			frappe.throw(_('''This feature can not be used as dependencies are missing.
				Please contact your system manager to enable this by installing pycups!'''))
			return
		try:
			cups.setServer(self.server_ip)
			cups.setPort(self.port)
			conn = cups.Connection()
			printers = conn.getPrinters()
			for printer_id,printer in printers.items():
				printer_list.append({
					'value': printer_id,
					'label': printer['printer-make-and-model']
				})

		except RuntimeError:
			frappe.throw(_("Failed to connect to server"))
		except frappe.ValidationError:
			frappe.throw(_("Failed to connect to server"))
		return printer_list

@frappe.whitelist()
def get_network_printer_settings():
	return frappe.db.get_list('Network Printer Settings', pluck='name')
