#!/usr/bin/env python # -*- coding: utf-8 -*- """ demeter service name:device_group.py 设备分组管理 author:rabin """ from demeter import * class Device_group(object): # 获取农场下的页面数据、页面下的分组数据、分组中的设备 def getPage(self, type = False, state = True, search = None): model = Demeter.model('device_page') model.state = state if search: if 'name' in search and search['name']: model.name.mlike(search['name']) if 'start' in search and search['start']: model.cdate.start(search['start']) if 'end' in search and search['end']: model.cdate.end(search['end']) page = model.select(page=True) if type: return self.__getGroup(page) return page def __getGroup(self, page): if page: device = Demeter.model('device_info') for key, value in page: page[key]['group'] = self.__getDevice(device, self.getGroup(value['id'])) return page def __getDevice(self, device, group): if group: for key, value in group: device.id = value['devices'] device.exp('in') group[key]['device'] = device.select() return group def getPageOne(self, id): model = Demeter.model('device_page') model.id = id page = model.select(type='fetchone') return page def getGroup(self, page_id): group = Demeter.model('device_group') group.page_id = page_id return group.select() # 更新页面 def updatePage(self, id, name): model = Demeter.model('device_page') if id: model.id = id model.update(name=name, cdate='time') return id else: model.name = name return model.insert() # 删除页面 def deletePage(self, id, state = False): model = Demeter.model('device_page') model.id = id return model.update(state=state) # 添加分组 def addGroup(self, page_id, name, devices): model = Demeter.model('device_group') model.page_id = page_id model.name = name model.devices = devices return model.insert() # 修改分组 def updateGroup(self, id, name, devices): model = Demeter.model('device_group') model.id = id return model.update(name=name, devices=devices, cdate='time') # 删除分组 def deleteGroup(self, id, state = False): model = Demeter.model('device_group') model.id = id return model.update(state=state)