Beispiel #1
0
    def post(self):
        try:
            self.post_init('_ID', 'deviceId', 'props', 'categroy')
            self.props_content = []

            # 设备模型
            if self.categroy not in ('NSDevicesAlarmInfo', 'NSDevicesVarInfo', \
                    'NSDeviceFlowChart', 'NSDutyCard', 'NSDeviceUIFault', \
                    'NSDeviceUIRunState', 'NSDeviceUIParam', 'NSDeviceUIOverview'):
                raise HandlerError(
                    self.rsp_code['params_error'],
                    "categroy %s does not support" % self.categroy)

            # 组织请求结构体
            for p in self.props:
                p['_ID'] = utils.gen_unique_id()
                self.props_content.append({
                    'Type': 'Add',
                    'Position': self._ID,
                    'NodeType': self.categroy,
                    'Props': p
                })

            msg = {
                "Type": "CommitChangeReq",
                "DataModelName": "s_DeviceMan",
                "PartionNodes": [self._ID],
                "ModifyContent": self.props_content,
            }
            oMsg = yield self.genResult('dm', msg)
            self.send(self.SUCCESS)
        except HandlerError as e:
            self._send(e.json_msg)
Beispiel #2
0
    def post(self):
        try:
            self.post_init('props')

            RoleID = utils.gen_unique_id()
            self.bo_props = {'_ID': RoleID}

            area_ids = None
            org_ids = None

            for p in self.props.get('Roles'):
                key = p.get('ParameterName')
                val = p.get('ParameterValue')

                if key == 'Name' and (not val or len(val) == 0):
                    raise HandlerError(self.rsp_code['params_error'], "Role %s Required" % key)

                if key == 'Area': area_ids = val
                elif key == 'Organization': org_ids = val
                else: self.bo_props[key] = val

            oMsg = yield self.genResult('dm', sysconf_api.newRole(self.bo_props))

            if area_ids:
                oMsg = yield self.genResult('dm', sysconf_api.relatedRoleToRegionTree(self.bo_props['ID'], add_ids=area_ids))
            if org_ids:
                oMsg = yield self.genResult('dm', sysconf_api.relatedRoleToDepartmentTree(self.bo_props['ID'], add_ids=org_ids))

            self.send(self.SUCCESS, {'RoleID': RoleID})

        except HandlerError as e:
            self._send(e.json_msg)
Beispiel #3
0
    def post(self):
        try:
            self.post_init('props')
            tasks = []

            self.menu_ids = []
            for p in self.props:
                try:
                    parentId = p.pop('parentMenuID')
                except KeyError:
                    parentId = '-1'

                if not p['Name'] or len(p['Name']) == 0:
                    raise HandlerError(self.rsp_code['params_error'],
                                       "menu name required")

                if '_ID' not in p: p['_ID'] = utils.gen_unique_id()
                self.menu_ids.append(p['_ID'])

                oMsg = yield self.genResult('dm',
                                            sysconf_api.newMenu(parentId, p))

            self.send(self.SUCCESS, self.menu_ids)

        except HandlerError as e:
            self._send(e.json_msg)
Beispiel #4
0
    def get(self):
        try:
            self.get_init('category')

            tag_list = yield self.genResult('dm',
                                            region_api.tagList(self.user_id),
                                            self.tag_list)

            if len(tag_list) == 0:  # 标签列表为空,默认添加“已关注”标签
                props = {'_ID': utils.gen_unique_id(), 'Name': '已关注'}

                oMsg = yield self.genResult(
                    'dm', region_api.newTag(self.user_id, props))

                props['Count'] = 0
                props['UserID'] = self.user_id
                self.send(self.SUCCESS, {'TagList': [props]})
                return

            # 查询标签上设备个数
            commands = []
            for t in tag_list:
                m = region_api.getTargetCountByTag(self.user_id, t['Name'],
                                                   self.category)
                commands.append(m)

            oMsg = yield self.genResult('dm', {
                'Type': 'BatchReadReq',
                'Commands': commands
            })
            tag_list = self.target_count(oMsg, tag_list)

            self.send(self.SUCCESS, {'TagList': tag_list})
        except HandlerError as e:
            self._send(e.json_msg)
Beispiel #5
0
    def post(self):
        try:
            self.post_init('props', 'departmentId')

            self.bo_props = {}

            roles = remove_org_ids = add_org_ids = None
            for p in self.props.get('NSUsers'):
                key = p.get('ParameterName')
                val = p.get('ParameterValue')

                if key == 'Role':
                    if len(val) == 0: roles = ""
                    else: roles = "%s;" % ";".join(val)

                elif key == 'Organization':
                    originalVal = p.get('OriginalParameterValue')

                    add_org_ids = list(set(originalVal).difference(set(val)))
                    remove_org_ids = list(
                        set(val).difference(set(originalVal)))

                else:
                    self.bo_props[key] = val

            self.user_uuid = utils.gen_unique_id()
            self.bo_props['_ID'] = self.user_uuid

            tasks = [
                dept_api.newUser(self.bo_props),
                dept_api.addUserToDepartmentTree(self.departmentId,
                                                 [self.bo_props])
            ]

            if roles:
                tasks.append(
                    dept_api.modifyUser(self.bo_props.get('UserID'),
                                        {"Role": val}))

            if remove_org_ids or add_org_ids:
                tasks.append(
                    dept_api.moveUser(self.bo_props.get('UserID'), add_org_ids,
                                      remove_org_ids))

            for t in tasks:
                oMsg = yield self.genResult('dm', t)

            self.send(self.SUCCESS, {'userID': self.user_uuid})
        except HandlerError as e:
            self._send(e.json_msg)
Beispiel #6
0
    def post(self):  # 修改区域架构树-增删改节点
        try:
            self.post_init('operate', 'parentId', 'nodeId', 'nodeType',
                           'nodeName')

            if self.operate == 'add':  # 新增
                self._require_validate('newOrderbyIndex')

                if not self.nodeId and self.nodeType == 'NSCompanys':
                    self.nodeId = utils.gen_unique_id()
                    return_data = {'nodeId': self.nodeId}

                msg = region_api.addNode(self.parentId, self.nodeId,
                                         self.nodeName, nodeType,
                                         self.newOrderbyIndex)

            elif self.operate == 'delete':  # 删除
                msg = region_api.deleteNode(self.nodeId)

            elif self.operate == 'edit':  # 编辑
                msg = region_api.modifyNode(self.nodeId, {
                    "Name": self.nodeName,
                    "zh_CN": self.nodeName
                })

            elif self.operate == 'moveTo':  # 移动
                self._require_validate('moveToProps', 'newOrderbyIndex')

                # 排序受影响的节点
                for k, v in self.moveToProps.items():
                    m = region_api.modifyNode(k, {"OrderbyIndex": v})
                    oMsg = yield self.genResult('dm', m)

                msg = region_api.modifyNode(
                    self.nodeId, {"OrderbyIndex": self.newOrderbyIndex})
            else:
                raise HandlerError(
                    self.rsp_code['params_error'],
                    "operate '%s' does not support" % self.operate)

            oMsg = yield self.genResult('dm', msg)

            self.send(self.SUCCESS, return_data)

        except HandlerError as e:
            self._send(e.json_msg)
Beispiel #7
0
    def post(self):  # 修改组织架构树-增删改节点
        try:
            self.post_init('operate', 'parentId', 'nodeId', 'nodeName')

            if self.operate == 'add':
                self._require_validate('newOrderbyIndex')

                if not self.nodeId:
                    self.nodeId = utils.gen_unique_id()
                    return_data = {'nodeId': self.nodeId}

                msg = dept_api.addNode(self.parentId, self.nodeId,
                                       self.nodeName, self.newOrderbyIndex)

            elif self.operate == 'delete':
                msg = dept_api.deleteNode(self.nodeId)

            elif self.operate == 'edit':
                msg = dept_api.modifyNode(self.nodeId, {'Name': self.nodeName})

            elif self.operate == 'moveTo':
                self._require_validate('newOrderbyIndex', 'moveToProps')
                # 排序受影响的节点
                for k, v in self.props.items():
                    oMsg = yield self.genResult(
                        'dm', dept_api.modifyNode(k, {'OrderbyIndex': v}))

                msg = dept_api.modifyNode(
                    self.nodeId, {'OrderbyIndex': self.newOrderbyIndex})

            elif self.operate == 'changeParentTo':  # 移动至新的父级
                self._require_validate('newParentId')
                msg = dept_api.moveNode(self.nodeId, self.newParentId)

            else:
                raise HandlerError(
                    self.rsp_code['params_error'],
                    "operate '%s' does not support" % self.operate)

            oMsg = yield self.genResult('dm', msg)

            self.send(self.SUCCESS, return_data)

        except HandlerError as e:
            self._send(e.json_msg)
Beispiel #8
0
    def post(self):
        try:
            self.post_init('props', 'companyId')

            self.bo_props = {}
            for p in self.props.get('NSDevices'):
                self.bo_props[p.get('ParameterName')] = p.get('ParameterValue')

            self.device_uuid = utils.gen_unique_id()
            self.bo_props['_ID'] = self.device_uuid

            oMsg = yield self.genResult('dm',
                                        region_api.newDevice(self.bo_props))
            oMsg = yield self.genResult(
                'dm',
                region_api.addDeviceToRegionTree(self.companyId,
                                                 self.bo_props))

            self.send(self.SUCCESS, {'DeviceID': self.device_uuid})

        except HandlerError as e:
            self._send(e.json_msg)
Beispiel #9
0
    def post(self):
        try:
            self.post_init('_ID', 'props', 'categroy')

            self.driver_props = self.props.get(self.categroy)
            self.props_content = []

            # 组织请求结构体
            for driver in self.driver_props:
                driver_id = driver.get('_ID')
                if driver_id is None:
                    driver_id = utils.gen_unique_id()
                    self.props_content.append({
                        'Type': 'Add',
                        'Position': self._ID,
                        'NodeType': self.categroy,
                        'Props': {
                            'DriverID': driver['DriverID'],
                            '_ID': driver_id
                        }
                    })
                logic_device_list = driver.get('NSDriverLogicDevice')
                for logic_device in logic_device_list:
                    logic_device_id = logic_device.get('_ID')
                    if logic_device_id is None:
                        logic_device_id = utils.gen_unique_id()
                        self.props_content.append({
                            'Type': 'Add',
                            'Position': driver_id,
                            'NodeType': 'NSDriverLogicDevice',
                            'Props': {
                                'DriverDeviceID':
                                logic_device['DriverDeviceID'],
                                '_ID': logic_device_id
                            }
                        })
                    # 通讯参数
                    communicate_params = logic_device.get(
                        'NSDevicesCommunicateParameter')
                    for c_param in communicate_params:
                        if '_ID' not in c_param:
                            self.props_content.append({
                                'Type': 'Add',
                                'Position': logic_device_id,
                                'NodeType': 'NSDevicesCommunicateParameter',
                                'Props': {
                                    '_ID': utils.gen_unique_id(),
                                    'ParameterName': c_param['ParameterName'],
                                    'ParameterValue': c_param['ParameterValue']
                                }
                            })
                    # 数据块
                    communicate_datablocks = logic_device.get(
                        'NSDevicesCommunicateDataBlock')
                    for c_datablock in communicate_datablocks:
                        datablock_id = c_datablock.get('_ID')
                        if datablock_id is None:
                            datablock_id = utils.gen_unique_id()
                            self.props_content.append({
                                'Type': 'Add',
                                'Position': logic_device_id,
                                'NodeType': 'NSDevicesCommunicateDataBlock',
                                'Props': {
                                    'DataBlockID':
                                    c_datablock.get('DataBlockID'),
                                    '_ID': datablock_id
                                }
                            })
                            # 数据块参数
                            datablock_params = c_datablock.get(
                                'NSDevicesCommunicateDataBlockParameter')
                            for d_param in datablock_params:
                                if '_ID' not in d_param:
                                    self.props_content.append({
                                        'Type': 'Add',
                                        'Position': datablock_id,
                                        'NodeType':
                                        'NSDevicesCommunicateDataBlockParameter',
                                        'Props': {
                                            '_ID':
                                            utils.gen_unique_id(),
                                            'ParameterName':
                                            d_param['ParameterName'],
                                            'ParameterValue':
                                            d_param['ParameterValue']
                                        }
                                    })

            oMsg = yield self.genResult(
                'dm',
                region_api.modifyDeviceDriver(self._ID, self.props_content))

            self.send(self.SUCCESS)

        except HandlerError as e:
            self._send(e.json_msg)