validation.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. # -*- coding: utf-8 -*-
  2. from apps.web.core.validation import Schema, Required, Coerce, All, Length, valid_objectId, is_valid_ipv4_address_with_port, REMOVE_EXTRA, ALLOW_EXTRA
  3. class DeviceSettingSchema(object):
  4. TISSUE_BOX = Schema({
  5. Required('stop_delay'): Coerce(int),
  6. Required('tissue_timeout'): Coerce(int)
  7. }, extra=REMOVE_EXTRA)
  8. devTypeSchema = Schema({
  9. Required('name'): basestring,
  10. Required('code'): basestring,
  11. Required('online'): bool,
  12. Required('package'): All([{
  13. Required('price'): int,
  14. Required('name'): All(unicode, Length(min=1)),
  15. Required('time'): int,
  16. Required('payAmount'): int
  17. }], Length(min=1))
  18. }, extra=REMOVE_EXTRA)
  19. deviceSchema = Schema({
  20. Required('devNo'): All(basestring, Length(min=1)),
  21. Required('logicalCode'): All(basestring, Length(min=1)),
  22. Required('ownerId'): All(basestring, valid_objectId),
  23. Required('groupId'): All(basestring, valid_objectId),
  24. Required('groupNumber'): basestring,
  25. Required('server'): All(basestring, is_valid_ipv4_address_with_port),
  26. # Manufacturer
  27. Required('mf'): basestring,
  28. Required('softVer'): basestring,
  29. Required('hmVer'): basestring,
  30. Required('cycle'): basestring,
  31. Required('washConfig'): Schema(
  32. {
  33. Required(basestring):
  34. {
  35. Required('coins'): int,
  36. Required('time'): int,
  37. Required('name'): unicode
  38. }
  39. }),
  40. Required('trapSwitch'): basestring,
  41. Required('remarks'): basestring,
  42. Required('signal'): int,
  43. Required('pulseWidth1'): int,
  44. Required('pulseInterval1'): int,
  45. Required('battery'): int,
  46. Required('devType'): devTypeSchema,
  47. })
  48. deviceRegistrationSchema = Schema({
  49. Required('groupId'): basestring,
  50. Required('groupNumber'): Coerce(str),
  51. 'remarks': basestring,
  52. 'devNo': basestring,
  53. Required('typeId'): basestring,
  54. Required('washConfigs'): dict,
  55. 'qrCodeUrl': basestring
  56. })
  57. equipGroupSchema = Schema({
  58. "name": All(basestring, Length(max=30)),
  59. "tag": basestring,
  60. "districtId": basestring,
  61. "country": basestring,
  62. "address": All(basestring, Length(max=100)),
  63. "addressType": basestring,
  64. "isDefault": bool,
  65. "beforeCharge": bool
  66. }, required=True, extra=ALLOW_EXTRA)