Ejemplo n.º 1
0
    def get(self, id=None):
        if id is not None:
            camara = CamaraModel.findByID(id)
            productos = ProductModel.find_by_camara(id)
            products = []
            for i in productos:
                if i.coordinates != "":
                    products.append({
                        'id': i.id,
                        'nombre_producto': i.product_name,
                        'coordenadas': i.coordinates
                    })
            return {
                'id_camara': id,
                'nombre': camara.nombre,
                'url': camara.path,
                "pasillo_id": camara.pasillo_id,
                'productos': products
            }

        else:
            lista = []
            for x in CamaraModel.find_all():
                lista.append(x.json())
                if lista[-1]['pasillo_id'] is None:
                    lista[-1].update({'libre': True})
                else:
                    lista[-1].update({'libre': False})

            return {'camara': lista}, 200
Ejemplo n.º 2
0
    def post(self):
        data = Camara.parser.parse_args()

        # create new element
        new_camara = CamaraModel(**data)
        message = 'Ha ocurrido un error al ingresar a la base de datos'
        try:
            new_camara.save_to_db()
        except SQLAlchemyError as e:
            error = str(e.__dict__['orig'])
            return error
            # return {
            #     'message': message
            # }

        return new_camara.json(), 201  #201 created
Ejemplo n.º 3
0
 def put(self, id=None):
     data = Camara.parser.parse_args()
     if id is not None:
         camara = CamaraModel.findByID(id)
         camara.nombre = data['nombre']
         camara.pasillo_id = data['pasillo_id']
         camara.path = data['path']
         camara.save_to_db()
         return "camara modificada", 200
Ejemplo n.º 4
0
    def post(self, apitype=None):
        if apitype is not None:
            data = Foto.parser.parse_args()
            camara_id = data['camara_id']
            if apitype == "prediccion":
                folder = f'camaras_{camara_id}'
                if (not os.path.exists(folder)):
                    os.mkdir(folder)
                camara = CamaraModel.findByID(camara_id)
                if camara is None:
                    return {'message': f'La cámara {camara_id} no existe'}, 400

                # print(image_helper.get_path(data['image'], folder=folder),flush=True)
            elif apitype == "rectangulos":
                folder = f'productos/camaras_{camara_id}'
                if (not os.path.exists("productos")):
                    os.mkdir("productos")
                if (not os.path.exists(folder)):
                    os.mkdir(folder)
                camara = CamaraModel.findByID(camara_id)
                if camara is None:
                    return {'message': f'La cámara {camara_id} no existe'}, 400

                # print(image_helper.get_path(data['image'], folder=folder),flush=True)
            try:
                os.remove(folder + "/foto.jpg")
            except:
                pass
            try:
                image_path = data['image'].save(folder + "/foto.jpg")
                # basename = image_helper.get_basename(image_path)
                return {
                    'message':
                    f'El archivo foto.jpg ha sido subido correctamente'
                }, 201

            except UploadNotAllowed:
                extension = image_helper.get_extension(data['image'])
                return {
                    'message':
                    f'La extension \'{extension}\' del archivo no esta permitida'
                }, 400
Ejemplo n.º 5
0
 def put(self, id=None):
     data = Pasillo.parser.parse_args()
     if id is not None:
         pasillo = PasilloModel.findByID(id)
         pasillo.numero = data['numero']
         pasillo.categoria = data['categoria']
         for i in data['camaras']:
             camara = CamaraModel.findByID(i)
             if (camara is not None):
                 camara.pasillo_id = id
                 camara.save_to_db()
         pasillo.save_to_db()
         return "pasillo modificado", 200
Ejemplo n.º 6
0
    def post(self):
        data = Pasillo.parser.parse_args()
        print(data, flush=True)
        # create new element
        new_pasillo = PasilloModel(data['categoria'], data['numero'])

        try:
            new_pasillo.save_to_db()
            if (data['camaras'] is not None):
                savedpasillo = PasilloModel.findByNumber(data['numero'])
                for i in data['camaras']:
                    camara = CamaraModel.findByID(i)
                    if (camara is not None):
                        camara.pasillo_id = i
                        camara.save_to_db()
        except SQLAlchemyError as e:
            error = str(e.__dict__['orig'])
            return error
            # return {
            #     'message': 'Ha ocurrido un error al ingresar a la base de datos'
            # }
        return new_pasillo.json(), 201  #201 created
Ejemplo n.º 7
0
    def get(self, apitype=None, id=None):
        if apitype is not None:
            if apitype == "admin":
                if id is not None:
                    dic = dict()
                    dic["id_pasillo"] = id
                    pasillo = PasilloModel.findByID(id)
                    dic['numero'] = pasillo.numero
                    dic['categoria'] = pasillo.categoria
                    dic['camaras'] = []
                    camaras = CamaraModel.findByIDPasillo(id)
                    for i in camaras:
                        productos = ProductModel.find_by_camara(i.id)
                        dic['camaras'].append({
                            'id_camara': i.id,
                            'url_foto': i.path
                        })
                        products = []
                        for j in productos:
                            if j.coordinates != "":
                                products.append({
                                    'id': j.id,
                                    'nombre_producto': j.product_name,
                                    'coordenadas': j.coordinates
                                })

                        dic['camaras'][-1].update({'productos': products})
                    return dic, 200
                else:
                    allPasillos = []
                    for x in PasilloModel.find_all():
                        if x.numero != -1:
                            allPasillos.append(x.jsonWithCameras())
                    for pasillo in allPasillos:
                        pasillo.update(
                            {'total_camaras': len(pasillo['camaras'])})
                        del pasillo['camaras']
                    return {'pasillos': allPasillos}, 200
        elif id is not None:
            dic = dict()
            dic['camaras'] = []
            dic["id_pasillo"] = id
            pasillo = PasilloModel.findByID(id)
            dic['numero'] = pasillo.numero
            camaras = CamaraModel.findByIDPasillo(id)
            for i in camaras:
                productos = ProductModel.find_by_camara(i.id)
                dic['camaras'].append({'id_camara': i.id, 'url_foto': i.path})
                products = []
                for j in productos:
                    prediccion = PrediccionModel.findByProductId(j.id)
                    if prediccion.area is not None:
                        products.append({
                            'nombre_producto': j.product_name,
                            'porcentaje_vacio': prediccion.area
                        })
                    else:
                        products.append({
                            'nombre_producto': j.product_name,
                            'porcentaje_vacio': 0
                        })

                dic['camaras'][-1].update({'productos': products})
            return dic, 200
        else:
            retorno = []
            allPasillos = PasilloModel.find_all()
            for i in allPasillos:
                if i.numero != -1:
                    total = 0
                    totalproductos = 0
                    productos = ProductModel.find_by_pasillo(i.id)
                    for j in productos:
                        prediccion = PrediccionModel.findByProductId(j.id)
                        if prediccion is not None:
                            total += prediccion.area
                        totalproductos += 1
                    # i['total_espacio_vacio'] = total
                    retorno.append(i.json())
                    if totalproductos != 0:
                        total = total / totalproductos
                    retorno[-1]['total_espacio_vacio'] = total
            return sorted(retorno,
                          key=lambda x: x['total_espacio_vacio'],
                          reverse=True), 200