def todos_productos(): if request.method == "GET": producto = Producto.query.all() # verificamos si hay parámetros en la url y filtramos la lista con eso si titulo no esta vacio producto_filtrado busca en producto.titulo si el requerimiento es igual a algun titulo ya creado para filtrarlo. titulo = request.args.get("titulo") if titulo is not None: producto_filtrado = filter( lambda producto: titulo.lower() in producto.titulo, producto) else: producto_filtrado = producto # serializar los objetos de la lista - tendría una lista de diccionarios producto_lista = list( map(lambda producto: producto.serialize(), producto_filtrado)) return jsonify(producto_lista), 200 ###Validaciones de caracteres y que los campos no esten vacios### else: insumos_producto = request.json if insumos_producto is None: return jsonify( {"resultado": "no envio insumos para crear el producto"}), 400 # verificar que el diccionario tenga titulo, descripcion, foto,etc if ("titulo" not in insumos_producto or "descripcion" not in insumos_producto or "foto" not in insumos_producto): return jsonify( {"resultado": "revise las propiedades de su solicitud"}), 400 #validar que campos no vengan vacíos y que los string tenga sus respectivos caracteres if (insumos_producto["titulo"] == "" or insumos_producto["descripcion"] == "" or insumos_producto["foto"] == "" or len(str(insumos_producto["titulo"])) > 100 or len(str(insumos_producto["descripcion"])) > 2000 or len(str(insumos_producto["foto"])) > 200 or int(insumos_producto["cantidad"]) < 0 or float(insumos_producto["precio"]) < 0): return jsonify({"resultado": "revise los valores de su solicitud"}), 400 # METODO POST: crear una variable y asignarle el nuevo producto con los datos validados body = request.get_json() producto = Producto(titulo=body['titulo'], foto=body['foto'], descripcion=body['descripcion'], precio=body['precio'], cantidad=body['cantidad']) # agregar a la sesión de base de datos (sqlalchemy) y hacer commit de la transacción db.session.add(producto) try: db.session.commit() # devolvemos el nuevo donante serializado y 201_CREATED return jsonify(producto.serialize()), 201 except Exception as error: db.session.rollback() print(f"{error.args} {type(error)}") # devolvemos "mira, tuvimos este error..." return jsonify({"resultado": f"{error.args}"}), 500
def agregarP(id): categoria = Categoria.query.get_or_404(id) producto = Producto() productoForm = ProductoForm(obj = producto) if request.method =='POST': if productoForm.validate_on_submit(): productoForm.populate_obj(producto) db.session.add(producto) db.session.commit() return redirect(url_for('inicio')) return render_template('agregarP.html',productoForm=productoForm,categoria = categoria)
def crearProducto(): codigo=input('Código: ') nombre=input('Nombre: ') detalle=input('Detalle: ') precio=float(input('Precio: ')) producto=Producto(codigo, nombre, detalle, precio) archivoProd=open(RUTA_ARCHIVO, 'a') archivoProd.write(str(producto)) #123;Lápiz;Mongol;0.25 archivoProd.close()
def new_producto(): if request.method == 'POST': form = ProductoForm(request.form) if form.validate(): producto = form.save_entry(Producto()) db.session.add(producto) db.session.commit() return redirect(url_for('detail_producto', id=producto.id)) else: form = ProductoForm() return render_template('producto/new.html', form=form)
def validarCodigoProducto(codigo): #Si encuentra que devuelva la línea #Si no encuentra que devuelva un null (None) producto=None #Valor inicial archivoProd=open(RUTA_ARCHIVO, 'r') for linea in archivoProd.readlines(): atributos=linea.split(';') if codigo==atributos[0]: #Si encuentra el código en el archivo producto=Producto(atributos[0], atributos[1], atributos[2], atributos[3]) break archivoProd.close() return producto
def guardar(request): try: new = request.POST["nombre"] except (KeyError, "No se recibio el parametro nombre"): data = {"error_msj": "No se pudo guardar el registro"} return render(request, 'productos/nuevo.html', data) else: producto = Producto(nombre=new) producto.save() return HttpResponseRedirect( reverse('productos:detail', args=(producto.id, )))