def handle_delete(self, request, user, *args, **kwargs): """Trata as requisições de DELETE para remover uma associação entre um Equipamento e um Grupo. URL: /equipamentogrupo/equipamento/<id_equip>/egrupo/<id_egrupo>/ """ try: equip_id = kwargs.get('id_equip') if not is_valid_int_greater_zero_param(equip_id): self.log.error( u'The equip_id parameter is not a valid value: %s.', equip_id) raise InvalidValueError(None, 'equip_id', equip_id) egroup_id = kwargs.get('id_egrupo') if not is_valid_int_greater_zero_param(egroup_id): self.log.error( u'The egroup_id parameter is not a valid value: %s.', egroup_id) raise InvalidValueError(None, 'egroup_id', egroup_id) Equipamento.get_by_pk(equip_id) EGrupo.get_by_pk(egroup_id) if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip_id, AdminPermission.EQUIP_WRITE_OPERATION): return self.not_authorized() with distributedlock(LOCK_EQUIPMENT_GROUP % egroup_id): EquipamentoGrupo.remove(user, equip_id, egroup_id) return self.response(dumps_networkapi({})) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def has_perm(user, perm_function, perm_oper, egroup_id=None, equip_id=None, equip_oper=None): ''' @raise EGrupoNotFoundError: Grupo do equipamento nao cadastrado. @raise EquipamentoNotFoundError: Equipamento nao cadastrado. @raise GrupoError: Falha ao pesquisar os direitos do grupo-equipamento, ou as permissões administrativas, ou o grupo do equipamento. @raise EquipamentoError: Falha ao pesquisar o equipamento. ''' if user is None: return False egroups = None if egroup_id is not None: egroup = EGrupo.get_by_pk(egroup_id) egroups = [egroup] elif equip_id is not None: equip = Equipamento.get_by_pk(equip_id, 'grupos') egroups = equip.grupos.all() if len(egroups) == 0: return False ugroups = user.grupos.all() for ugroup in ugroups: try: # perm = PermissaoAdministrativa().get_permission(perm_function, ugroup, perm_oper) PermissaoAdministrativa().get_permission(perm_function, ugroup, perm_oper) if (egroups is None) or (_has_equip_perm(ugroup, egroups, equip_oper)): return True except PermissaoAdministrativaNotFoundError: continue return False
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to get Group Equipment. URL: egroup/<id_egroup>/ """ try: self.log.info('Get Group Equipment by ID') id_egroup = kwargs.get('id_egroup') # User permission if not has_perm(user, AdminPermission.EQUIPMENT_GROUP_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Valid Group Equipment ID if not is_valid_int_greater_zero_param(id_egroup): self.log.error( u'The id_egroup parameter is not a valid value: %s.', id_egroup) raise InvalidValueError(None, 'id_egroup', id_egroup) # Find Group Equipment by ID to check if it exist egroup = EGrupo.get_by_pk(id_egroup) egroup_map = dict() egroup_map['group_equipament'] = model_to_dict(egroup) return self.response(dumps_networkapi(egroup_map)) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def has_perm(user, perm_function, perm_oper, egroup_id=None, equip_id=None, equip_oper=None): """ @raise EGrupoNotFoundError: Grupo do equipamento nao cadastrado. @raise EquipamentoNotFoundError: Equipamento nao cadastrado. @raise GrupoError: Falha ao pesquisar os direitos do grupo-equipamento, ou as permissões administrativas, ou o grupo do equipamento. @raise EquipamentoError: Falha ao pesquisar o equipamento. """ if user is None: return False egroups = None if egroup_id is not None: egroup = EGrupo.get_by_pk(egroup_id) egroups = [egroup] elif equip_id is not None: equip = Equipamento.get_by_pk(equip_id, 'grupos') egroups = equip.grupos.all() if len(egroups) == 0: return False ugroups = user.grupos.all() for ugroup in ugroups: try: # perm = PermissaoAdministrativa().get_permission(perm_function, ugroup, perm_oper) PermissaoAdministrativa().get_permission(perm_function, ugroup, perm_oper) if (egroups is None) or (_has_equip_perm(ugroup, egroups, equip_oper)): return True except PermissaoAdministrativaNotFoundError: continue return False
def handle_get(self, request, user, *args, **kwargs): '''Trata as requisições de GET remover a associação entre um grupo de equipamento e um equipamento. URL: egrupo/equipamento/id_equip/egrupo/id_egrupo/ ''' try: id_equip = kwargs.get('id_equipamento') id_egrupo = kwargs.get('id_egrupo') if not is_valid_int_greater_zero_param(id_egrupo): raise InvalidValueError(None, 'id_egrupo', id_egrupo) if not is_valid_int_greater_zero_param(id_equip): raise InvalidValueError(None, 'id_equip', id_equip) equip = Equipamento.get_by_pk(id_equip) EGrupo.get_by_pk(id_egrupo) if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, id_egrupo, id_equip, AdminPermission.EQUIP_WRITE_OPERATION): raise UserNotAuthorizedError( None, u'User does not have permission to perform the operation.') with distributedlock(LOCK_EQUIPMENT_GROUP % id_egrupo): EquipamentoGrupo.remove(user, equip.id, id_egrupo) return self.response(dumps_networkapi({})) except InvalidValueError, e: self.log.error( u'Parameter %s is invalid. Value: %s.', e.param, e.value) return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Trata as requisições de GET para listar todos os grupos de equipamento de um determindo equipamento. URL: egrupo/equip/id_equip """ try: if not has_perm(user, AdminPermission.EQUIPMENT_GROUP_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() id_equip = kwargs.get('id_equip') if not is_valid_int_greater_zero_param(id_equip): raise InvalidValueError(None, 'id_equip', id_equip) equip = Equipamento.get_by_pk(id_equip) egroups = EquipamentoGrupo.get_by_equipment(equip.id) group_list = [] map_list = [] for egroup in egroups: group_list.append(EGrupo.get_by_pk(egroup.egrupo.id)) for egroup in group_list: egroup_map = dict() egroup_map['id'] = egroup.id egroup_map['nome'] = egroup.nome map_list.append(egroup_map) network_map = dict() network_map['grupo'] = map_list return self.response(dumps_networkapi(network_map)) except InvalidValueError, e: self.log.error(u'Parameter %s is invalid. Value: %s.', e.param, e.value) return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to get Group Equipment. URL: equipment/group/<id_egroup>/ """ try: self.log.info('Get Equipment of Group by ID Group') id_egroup = kwargs.get('id_egroup') # User permission if not has_perm(user, AdminPermission.EQUIPMENT_GROUP_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Valid Group Equipment ID if not is_valid_int_greater_zero_param(id_egroup): self.log.error( u'The id_egroup parameter is not a valid value: %s.', id_egroup) raise InvalidValueError(None, 'id_egroup', id_egroup) # Find Group Equipment by ID to check if it exist egroup = EGrupo.get_by_pk(id_egroup) equip_list = [] for equipament in egroup.equipamento_set.all(): eq = {} equip = Equipamento.objects.select_related('modelo').get( id=equipament.id) eq = model_to_dict(equip) eq['type'] = model_to_dict(equip.tipo_equipamento) eq['model'] = model_to_dict(equip.modelo) eq['mark'] = model_to_dict(equip.modelo.marca) equip_list.append(eq) equipament_map = dict() equipament_map['equipments'] = equip_list return self.response(dumps_networkapi(equipament_map)) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): '''Trata as requisições de GET para listar todos os grupos de equipamento de um determindo equipamento. URL: egrupo/equip/id_equip ''' try: if not has_perm(user, AdminPermission.EQUIPMENT_GROUP_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.READ_OPERATION): return self.not_authorized() id_equip = kwargs.get('id_equip') if not is_valid_int_greater_zero_param(id_equip): raise InvalidValueError(None, 'id_equip', id_equip) equip = Equipamento.get_by_pk(id_equip) egroups = EquipamentoGrupo.get_by_equipment(equip.id) group_list = [] map_list = [] for egroup in egroups: group_list.append(EGrupo.get_by_pk(egroup.egrupo.id)) for egroup in group_list: egroup_map = dict() egroup_map['id'] = egroup.id egroup_map['nome'] = egroup.nome map_list.append(egroup_map) network_map = dict() network_map['grupo'] = map_list return self.response(dumps_networkapi(network_map)) except InvalidValueError, e: self.log.error( u'Parameter %s is invalid. Value: %s.', e.param, e.value) return self.response_error(269, e.param, e.value)
def handle_get(self, request, user, *args, **kwargs): """Treat requests GET to get Group Equipment. URL: equipment/group/<id_egroup>/ """ try: self.log.info("Get Equipment of Group by ID Group") id_egroup = kwargs.get('id_egroup') # User permission if not has_perm(user, AdminPermission.EQUIPMENT_GROUP_MANAGEMENT, AdminPermission.READ_OPERATION): self.log.error( u'User does not have permission to perform the operation.') raise UserNotAuthorizedError(None) # Valid Group Equipment ID if not is_valid_int_greater_zero_param(id_egroup): self.log.error( u'The id_egroup parameter is not a valid value: %s.', id_egroup) raise InvalidValueError(None, 'id_egroup', id_egroup) # Find Group Equipment by ID to check if it exist egroup = EGrupo.get_by_pk(id_egroup) equip_list = [] for equipament in egroup.equipamento_set.all(): eq = {} equip = Equipamento.objects.select_related().get( id=equipament.id) eq = model_to_dict(equip) eq['type'] = model_to_dict(equip.tipo_equipamento) eq['model'] = model_to_dict(equip.modelo) eq['mark'] = model_to_dict(equip.modelo.marca) equip_list.append(eq) equipament_map = dict() equipament_map['equipments'] = equip_list return self.response(dumps_networkapi(equipament_map)) except InvalidValueError, e: return self.response_error(269, e.param, e.value)
def insert_equipment_group(self, equip_id, group_id, user): equipment_group = EquipamentoGrupo() equipment_group.egrupo = EGrupo() equipment_group.egrupo.id = group_id equipment_group.equipamento = Equipamento() equipment_group.equipamento.id = equip_id try: equipment_group.create(user) equipment_group_map = dict() equipment_group_map['id'] = equipment_group.id map = dict() map['equipamento_grupo'] = equipment_group_map return self.response(dumps_networkapi(map)) except EGrupoNotFoundError: return self.response_error(102) except EquipamentoGrupoDuplicatedError: return self.response_error(146) except (EquipamentoError, GrupoError): return self.response_error(1)
def test_alter_valid(self): mock = self.mock_valid_alter() response = self.alter(self.ID_ALTER_VALID, {self.XML_KEY: mock}) valid_response(response) egrp = EGrupo.get_by_pk(self.ID_ALTER_VALID) self.valid_attr(mock, model_to_dict(egrp))