Source code for networkapi.api_equipment.v4.facade

# -*- coding: utf-8 -*-
import logging

from django.core.exceptions import FieldError
from django.db.models import Q
from networkapi.api_equipment.facade import get_equipment_by_id

from networkapi.api_equipment.exceptions import EquipmentInvalidValueException
from networkapi.api_rest.exceptions import NetworkAPIException
from networkapi.api_rest.exceptions import ObjectDoesNotExistException
from networkapi.api_rest.exceptions import ValidationAPIException
from networkapi.distributedlock import LOCK_EQUIPMENT
from networkapi.equipamento.models import Equipamento
from networkapi.equipamento.models import EquipamentoAmbiente
from networkapi.equipamento.models import EquipamentoError
from networkapi.equipamento.models import EquipamentoNotFoundError
from networkapi.infrastructure.datatable import build_query_to_datatable_v3
from networkapi.util.geral import create_lock
from networkapi.util.geral import destroy_lock

log = logging.getLogger(__name__)

[docs]def update_equipment(equipments, user): """Update equipment.""" locks_list = create_lock(equipments, LOCK_EQUIPMENT) response = list() try: for equipment in equipments: equipment_obj = get_equipment_by_id(equipment.get('id')) equipment_obj.update_v4(equipment) response.append({'id': equipment_obj.id}) except ObjectDoesNotExistException, e: raise ObjectDoesNotExistException(e.detail) except EquipamentoError, e: raise ValidationAPIException(e.message) except EquipmentInvalidValueException, e: raise ValidationAPIException(str(e)) except ValidationAPIException, e: raise ValidationAPIException(str(e)) except Exception, e: raise NetworkAPIException(str(e)) finally: destroy_lock(locks_list) return response
[docs]def create_equipment(equipments, user): """Create equipment""" response = list() try: for equipment in equipments: equipment_obj = Equipamento() equipment_obj.create_v4(equipment) response.append({'id': equipment_obj.id}) except EquipamentoError, e: raise ValidationAPIException(e.message) except EquipmentInvalidValueException, e: raise ValidationAPIException(e.detail) except ValidationAPIException, e: raise ValidationAPIException(e.detail) except Exception, e: raise NetworkAPIException(str(e)) return response
[docs]def delete_equipment(equipments): """Delete equipment by ids""" locks_list = create_lock(equipments, LOCK_EQUIPMENT) try: for equipment in equipments: equipment_obj = get_equipment_by_id(equipment) equipment_obj.delete_v4() except ObjectDoesNotExistException, e: raise ObjectDoesNotExistException(e.detail) except EquipamentoError, e: raise ValidationAPIException(e.message) except EquipmentInvalidValueException, e: raise ValidationAPIException(e.detail) except ValidationAPIException, e: raise ValidationAPIException(e.detail) except Exception, e: raise NetworkAPIException(str(e)) finally: destroy_lock(locks_list)