# -*- coding: utf-8 -*- from apps.web.core.validation import Schema, Required, Coerce, All, Length, valid_objectId, is_valid_ipv4_address_with_port, REMOVE_EXTRA, ALLOW_EXTRA class DeviceSettingSchema(object): TISSUE_BOX = Schema({ Required('stop_delay'): Coerce(int), Required('tissue_timeout'): Coerce(int) }, extra=REMOVE_EXTRA) devTypeSchema = Schema({ Required('name'): basestring, Required('code'): basestring, Required('online'): bool, Required('package'): All([{ Required('price'): int, Required('name'): All(unicode, Length(min=1)), Required('time'): int, Required('payAmount'): int }], Length(min=1)) }, extra=REMOVE_EXTRA) deviceSchema = Schema({ Required('devNo'): All(basestring, Length(min=1)), Required('logicalCode'): All(basestring, Length(min=1)), Required('ownerId'): All(basestring, valid_objectId), Required('groupId'): All(basestring, valid_objectId), Required('groupNumber'): basestring, Required('server'): All(basestring, is_valid_ipv4_address_with_port), # Manufacturer Required('mf'): basestring, Required('softVer'): basestring, Required('hmVer'): basestring, Required('cycle'): basestring, Required('washConfig'): Schema( { Required(basestring): { Required('coins'): int, Required('time'): int, Required('name'): unicode } }), Required('trapSwitch'): basestring, Required('remarks'): basestring, Required('signal'): int, Required('pulseWidth1'): int, Required('pulseInterval1'): int, Required('battery'): int, Required('devType'): devTypeSchema, }) deviceRegistrationSchema = Schema({ Required('groupId'): basestring, Required('groupNumber'): Coerce(str), 'remarks': basestring, 'devNo': basestring, Required('typeId'): basestring, Required('washConfigs'): dict, 'qrCodeUrl': basestring }) equipGroupSchema = Schema({ "name": All(basestring, Length(max=30)), "tag": basestring, "districtId": basestring, "country": basestring, "address": All(basestring, Length(max=100)), "addressType": basestring, "isDefault": bool, "beforeCharge": bool }, required=True, extra=ALLOW_EXTRA)