device_group.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. demeter service
  5. name:device_group.py 设备分组管理
  6. author:rabin
  7. """
  8. from demeter import *
  9. class Device_group(object):
  10. # 获取农场下的页面数据、页面下的分组数据、分组中的设备
  11. def getPage(self, type = False, state = True, search = None):
  12. model = Demeter.model('device_page')
  13. model.state = state
  14. if search:
  15. if 'name' in search and search['name']:
  16. model.name.mlike(search['name'])
  17. if 'start' in search and search['start']:
  18. model.cdate.start(search['start'])
  19. if 'end' in search and search['end']:
  20. model.cdate.end(search['end'])
  21. page = model.select(page=True)
  22. if type:
  23. return self.__getGroup(page)
  24. return page
  25. def __getGroup(self, page):
  26. if page:
  27. device = Demeter.model('device_info')
  28. for key, value in page:
  29. page[key]['group'] = self.__getDevice(device, self.getGroup(value['id']))
  30. return page
  31. def __getDevice(self, device, group):
  32. if group:
  33. for key, value in group:
  34. device.id = value['devices']
  35. device.exp('in')
  36. group[key]['device'] = device.select()
  37. return group
  38. def getPageOne(self, id):
  39. model = Demeter.model('device_page')
  40. model.id = id
  41. page = model.select(type='fetchone')
  42. return page
  43. def getGroup(self, page_id):
  44. group = Demeter.model('device_group')
  45. group.page_id = page_id
  46. return group.select()
  47. # 更新页面
  48. def updatePage(self, id, name):
  49. model = Demeter.model('device_page')
  50. if id:
  51. model.id = id
  52. model.update(name=name, cdate='time')
  53. return id
  54. else:
  55. model.name = name
  56. return model.insert()
  57. # 删除页面
  58. def deletePage(self, id, state = False):
  59. model = Demeter.model('device_page')
  60. model.id = id
  61. return model.update(state=state)
  62. # 添加分组
  63. def addGroup(self, page_id, name, devices):
  64. model = Demeter.model('device_group')
  65. model.page_id = page_id
  66. model.name = name
  67. model.devices = devices
  68. return model.insert()
  69. # 修改分组
  70. def updateGroup(self, id, name, devices):
  71. model = Demeter.model('device_group')
  72. model.id = id
  73. return model.update(name=name, devices=devices, cdate='time')
  74. # 删除分组
  75. def deleteGroup(self, id, state = False):
  76. model = Demeter.model('device_group')
  77. model.id = id
  78. return model.update(state=state)