本文整理汇总了Python中networkapi.equipamento.models.Equipamento.edit方法的典型用法代码示例。如果您正苦于以下问题:Python Equipamento.edit方法的具体用法?Python Equipamento.edit怎么用?Python Equipamento.edit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类networkapi.equipamento.models.Equipamento
的用法示例。
在下文中一共展示了Equipamento.edit方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: handle_post
# 需要导入模块: from networkapi.equipamento.models import Equipamento [as 别名]
# 或者: from networkapi.equipamento.models.Equipamento import edit [as 别名]
def handle_post(self, request, user, *args, **kwargs):
"""Trata uma requisicao POST para editar um equipamento.
URL: equipmento/edit/
"""
try:
# Load XML data
xml_map, attrs_map = loads(request.raw_post_data)
# XML data format
networkapi_map = xml_map.get('networkapi')
if networkapi_map is None:
msg = u'There is no value to the networkapi tag of XML request.'
self.log.error(msg)
return self.response_error(3, msg)
equip_map = networkapi_map.get('equipamento')
if equip_map is None:
msg = u'There is no value to the ip tag of XML request.'
self.log.error(msg)
return self.response_error(3, msg)
# Get XML data
equip_id = equip_map.get('id_equip')
id_modelo = equip_map.get('id_modelo')
nome = equip_map.get('nome')
id_tipo_equipamento = equip_map.get('id_tipo_equipamento')
maintenance = equip_map.get('maintenance')
# Valid equip_id
if not is_valid_int_greater_zero_param(equip_id):
self.log.error(
u'Parameter equip_id is invalid. Value: %s.', equip_id)
raise InvalidValueError(None, 'equip_id', equip_id)
# Valid id_modelo
if not is_valid_int_greater_zero_param(id_modelo):
self.log.error(
u'Parameter id_modelo is invalid. Value: %s.', id_modelo)
raise InvalidValueError(None, 'id_modelo', id_modelo)
# Valid id_tipo_equipamento
if not is_valid_int_greater_zero_param(id_tipo_equipamento):
self.log.error(
u'Parameter id_tipo_equipamento is invalid. Value: %s.', id_tipo_equipamento)
raise InvalidValueError(
None, 'id_tipo_equipamento', id_tipo_equipamento)
# Valid nome
if not is_valid_string_minsize(nome, 3) or not is_valid_string_maxsize(nome, 80) or not is_valid_regex(nome, "^[A-Z0-9-_]+$"):
self.log.error(u'Parameter nome is invalid. Value: %s', nome)
raise InvalidValueError(None, 'nome', nome)
# Business Rules
# New equipment
equip = Equipamento()
equip = equip.get_by_pk(equip_id)
#maintenance is a new feature. Check existing value if not defined in request
#Old calls does not send this field
if maintenance is None:
maintenance = equip.maintenance
if not is_valid_boolean_param(maintenance):
self.log.error(u'The maintenance parameter is not a valid value: %s.', maintenance)
raise InvalidValueError(None, 'maintenance', maintenance)
# User permission
if not has_perm(user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip_id, AdminPermission.EQUIP_WRITE_OPERATION):
raise UserNotAuthorizedError(
None, u'User does not have permission to perform the operation.')
with distributedlock(LOCK_EQUIPMENT % equip_id):
tipo_equip = TipoEquipamento.get_by_pk(id_tipo_equipamento)
if equip.tipo_equipamento != tipo_equip:
# Environments with filters using current equip type, with
# equipment associated
envs = [eq_env.ambiente.id for eq_env in equip.equipamentoambiente_set.filter(
ambiente__filter__filterequiptype__equiptype=equip.tipo_equipamento)]
# Filters case 1 and 2
filters_ok = True
# Networks in environments with same ip range
nets_same_range = NetworkIPv4.objects.filter(vlan__ambiente__in=envs).values(
'oct1', 'oct2', 'oct3', 'oct4', 'block').annotate(count=Count('id')).filter(count__gt=1)
if len(nets_same_range) > 0:
for net_gp in nets_same_range:
nets_current_range = NetworkIPv4.objects.filter(vlan__ambiente__in=envs, oct1=net_gp[
'oct1'], oct2=net_gp['oct2'], oct3=net_gp['oct3'], oct4=net_gp['oct4'], block=net_gp['block'])
filters_of_envs = [
net.vlan.ambiente.filter.id for net in nets_current_range]
for fil_ in filters_of_envs:
if TipoEquipamento.objects.filter(id=id_tipo_equipamento, filterequiptype__filter=fil_).count() == 0:
filters_ok = False
break
#.........这里部分代码省略.........