from trytond.model import Model, ModelSQL, ModelView, fields from trytond.pyson import Eval class Device(Model): 'Devices' __name__ = 'sale_device' name = fields.Char("Name") type_ = fields.Selection([ ('usb', "USB"), ('network', "Network")], "Type") ip_address = fields.Char( 'IP Address or Network', states={'required': Eval('type_') == 'network', 'invisible': Eval('type_') == 'usb'}, help='IPv4 or IPv6 IP address or network. \ Valid values include: 192.168.0.26 or 192.168.0.0/24') idVendor = fields.Char('idVendor', states={ 'required': Eval('type_') == 'usb', 'invisible': Eval('type_') != 'usb', }) idProduct = fields.Char('idProduct', states={ 'required': Eval('type_') == 'usb', 'invisible': Eval('type_') != 'usb', }) @classmethod def default_type_(cls): return 'network' class Printer(Device, ModelSQL, ModelView): 'Printer' __name__ = 'sale.printer' zone = fields.Selection([('bar', "Bar"), ('kitchen', "Kitchen"), ('reception', "Reception")], "Zone") shop = fields.Many2One('sale.shop', "Shop") api = fields.Many2One('sale.printer_api', "API") class Api(Device, ModelSQL, ModelView): 'Api printer' __name__ = 'sale.printer_api'