def registro(req): if req.method == 'POST': nombre = req.POST.get('nombre') email = req.POST.get('email') tel = req.POST.get('telefono') prods = req.POST.getlist('producto[]') if nombre and email and tel: user = User.objects.create_user(username=utils.generate_username(nombre), email=email) user.save() empresa = user.get_profile() empresa.telefono = tel empresa.nombre = nombre if prods: empresa.publico = True empresa.save() if prods: for p in prods: # TODO: checar si el producto ya existe, si ya existe no volverlo a crear producto = Producto(nombre=p) producto.save() empresa.productos.add(producto) return HttpResponse('<legend>Gracias por registrarte.</legend><p>Revisa tu correo y haz click en el link que te enviamos para completar tu registro.</p>') return render_to_response('website/registro.html', RequestContext(req))
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 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, )))
def put_producto(producto_id): if 'id' in session: id = session['id'] try: producto = Producto.get(Producto.id == producto_id) categoria = Categoria.get(Categoria.id == producto.categoria) inventario = Inventario.get((Inventario.id == categoria.inventario) & (Inventario.usuario == id)) proveedor = Proveedor.get(Proveedor.id == producto.proveedor) producto.nombre = request.json.get('nombre', producto.nombre) producto.descripcion = request.json.get('descripcion', producto.descripcion) producto.categoria = request.json.get('categoria', producto.categoria) producto.proveedor = request.json.get('proveedor', producto.proveedor) if producto.save(): return jsonify( producto.to_json(categoria.add_ok(), proveedor.to_json())) else: abort(422) except Producto.DoesNotExist: abort(404) except Inventario.DoesNotExist: abort(404) return jsonify({'message': 'KO'})
def post_lote(): if 'id' in session: id = session['id'] if not request.json: abort(400) costo = request.json.get('costo') precio = request.json.get('precio') existencia = request.json.get('existencia') producto = request.json.get('producto') if (costo.isdigit() == False): return jsonify( generate_response(1, error='Costo tiene que ser numerico')) if (precio.isdigit() == False): return jsonify( generate_response(1, error='Precio tiene que ser numerico')) if (existencia.isdigit() == False): return jsonify( generate_response(1, error='Existencia tiene que ser numerico')) lote = Lote.new(costo, precio, existencia, producto) if lote is None: abort(422) producto = Producto.get(Producto.id == lote.producto) return jsonify(lote.to_json(producto.add_ok())) return jsonify({'message': 'KO'})
def put_lote(lote_id): if 'id' in session: id = session['id'] try: lote = Lote.get(Lote.id == lote_id) producto = Producto.get(Producto.id == lote.producto) categoria = Categoria.get(Categoria.id == producto.categoria) inventario = Inventario.get((Inventario.id == categoria.inventario) & (Inventario.usuario == id)) lote.costo = request.json.get('costo', lote.costo) lote.precio = request.json.get('precio', lote.precio) lote.existencia = request.json.get('existencia', lote.existencia) lote.producto = request.json.get('producto', lote.producto) if lote.save(): return jsonify(lote.to_json(producto.add_ok())) else: abort(422) except Lote.DoesNotExist: abort(404) except Inventario.DoesNotExist: abort(404) return jsonify({'message': 'KO'})
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 get_productos(): if 'id' in session: id = session['id'] productos = Producto.select().join(Categoria).join(Inventario).where( Inventario.usuario == id) productos = [ Producto.to_json( Categoria.get(Categoria.id == Producto.categoria).add_ok(), Proveedor.get(Proveedor.id == Producto.proveedor).to_json()) for Producto in productos ] identificador = Producto.select().join(Categoria).join( Inventario).where(Inventario.usuario == id) identificador = [Producto.iden() for Producto in identificador] diccionario = {} for x in range(len(productos)): diccionario[identificador[x]] = productos[x] return jsonify(diccionario) return jsonify({'message': 'KO'})
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 test_detalle_varios_productos(self): q1 = Producto(nombre='Armario' , codigo='1234',descripcion='Hola',foto='foto1') q1.save() q2 = Producto(nombre='Armario(2)' , codigo='1234(2)',descripcion='Hola(2)',foto='foto2') q2.save() response = self.client.get('/producto/productoslist/') self.assertEqual(response.content,'[{"nombre":"Armario","codigo":"1234","descripcion":"Hola","foto":"http://localhost:8000/media/foto1"},{"nombre":"Armario(2)","codigo":"1234(2)","descripcion":"Hola(2)","foto":"http://localhost:8000/media/foto2"}]') print("Varias personas consultadas en detalle correctamente2")
def delete_proveedor(proveedor_id): if 'id' in session: id = session['id'] try: proveedor = Proveedor.get(Proveedor.id == proveedor_id) producto = Producto.select().where( Producto.proveedor == proveedor_id) for Producto in producto: producto.delete_instance() proveedor.delete_instance() return jsonify({'message': 'OK'}) except Proveedor.DoesNotExist: abort(404) return jsonify({'message': 'KO'})
def get_lote(lote_id): if 'id' in session: id = session['id'] try: lote = Lote.get(Lote.id == lote_id) producto = Producto.get(Producto.id == lote.producto) categoria = Categoria.get(Categoria.id == producto.categoria) inventario = Inventario.get((Inventario.id == categoria.inventario) & (Inventario.usuario == id)) return jsonify(lote.to_json(producto.add_ok())) except Lote.DoesNotExist: abort(404) except Inventario.DoesNotExist: abort(404) return jsonify({'message': 'KO'})
def get_producto(producto_id): if 'id' in session: id = session['id'] try: producto = Producto.get(Producto.id == producto_id) categoria = Categoria.get(Categoria.id == producto.categoria) inventario = Inventario.get((Inventario.id == categoria.inventario) & (Inventario.usuario == id)) proveedor = Proveedor.get(Proveedor.id == producto.proveedor) return jsonify( producto.to_json(categoria.add_ok(), proveedor.to_json())) except Producto.DoesNotExist: abort(404) except Inventario.DoesNotExist: abort(404) return jsonify({'message': 'KO'})
def get(self): #si no hay registros, entonces poblar if Producto.all().count() == 0: self.populate() #filtros radio = self.request.get('radio') nombre = self.request.get('nombre') stock_op = self.request.get('stock_op') stock = self.request.get('stock') expiracion_op = self.request.get('expiracion_op') expiracion = self.request.get('expiracion') precio_op = self.request.get('precio_op') precio = self.request.get('precio') query = "SELECT * FROM Producto" query_params = [] if radio == "nombre" and nombre != "": query += " WHERE nombre = '" + nombre + "'" if radio == "stock" and stock_op != "" and stock != "": query += " WHERE stock " + stock_op + " " + stock if radio == "expiracion" and expiracion_op != "" and expiracion != "": fecha = datetime.strptime('2012-02-10' , '%Y-%m-%d') query += " WHERE expiracion " + expiracion_op + "DATE("+expiracion[0:4]+", " + expiracion[5:7] +", " + expiracion[8:]+ ")" if radio == "precio" and precio_op != "" and precio != "": query += " WHERE precio " + precio_op + " " + precio productos = db.GqlQuery(query) context = { "radio" : radio, "productos" : productos, "query" : query, "nombre" : nombre, "stock_op" : stock_op, "stock" : stock, "expiracion_op" : expiracion_op, "expiracion" : expiracion, "precio_op" : precio_op, "precio" : precio } template = template_env.get_template('templates/index.html') self.response.out.write(template.render(context))
def get_lotes(): if 'id' in session: id = session['id'] lotes = Lote.select().join(Producto).join(Categoria).join( Inventario).where(Inventario.usuario == id) lotes = [ Lote.to_json(Producto.get(Producto.id == Lote.producto).add_ok()) for Lote in lotes ] identificador = Lote.select().join(Producto).join(Categoria).join( Inventario).where(Inventario.usuario == id) identificador = [Lote.iden() for Lote in identificador] diccionario = {} for x in range(len(lotes)): diccionario[identificador[x]] = lotes[x] return jsonify(diccionario) return jsonify({'message': 'KO'})
def post_producto(): if 'id' in session: id = session['id'] if not request.json: abort(400) nombre = request.json.get('nombre') descripcion = request.json.get('descripcion') categoria = request.json.get('categoria') proveedor = request.json.get('proveedor') producto = Producto.new(nombre, descripcion, categoria, proveedor) if producto is None: abort(422) if producto == "error": abort(406) categoria = Categoria.get(Categoria.id == producto.categoria) proveedor = Proveedor.get(Proveedor.id == producto.proveedor) return jsonify( producto.to_json(categoria.add_ok(), proveedor.to_json())) return jsonify({'message': 'KO'})
def producto(self): q1 = Producto(nombre='Armario',codigo='1234',descripcion='Hola',foto='http://localhost:8000/media/foto_producto/220px-Cervantes_Valladolid_lou.jpg') q1.save() self.assertEqual(response.content,'{"nombre":"Cervantes","codigo":"1234","descripcion":"Hola","foto":"http://localhost:8000/media/foto_producto/220px-Cervantes_Valladolid_lou.jpg"}') print("Question consultada XD1")
def agregar(request): if request.method == 'POST': producto = Producto() marca = Marca.objects.get(id = request.POST['id_marca']) producto.marca = marca producto.costo = request.POST['costo'] producto.descripcion = request.POST['descripcion'] producto.precio_diez = request.POST['precio_10'] producto.precio_veinte = request.POST['precio_20'] producto.precio_treinta = request.POST['precio_30'] producto.precio_cuarenta = request.POST['precio_40'] if 'cantidad' in request.POST: if request.POST['cantidad'] != "": producto.cantidad = request.POST['cantidad'] if 'precio_otro' in request.POST: if request.POST['precio_otro'] != "": producto.precio_otro = request.POST['precio_otro'] if 'imagen' in request.FILES: from ferrecabimas.settings import MEDIA_ROOT imagen = request.FILES['imagen'] with open(MEDIA_ROOT + '/' + imagen.name,'wb+') as new_file: for chunk in imagen.chunks(): new_file.write(chunk) producto.nombre_imagen = imagen.name producto.save() return HttpResponseRedirect("/productos/agregar") marcas = Marca.objects.all().order_by("nombre") productos = Producto.objects.all().order_by("descripcion") return render_to_response("agregar_productos.html",{'marcas':marcas,'productos':productos},RequestContext(request))
def populate(self): producto = Producto(nombre="Producto 1", stock=5, expiracion = datetime.date(2013, 7, 24), precio= 32.5) producto.put() producto = Producto(nombre="Producto 2", stock=4, expiracion = datetime.date(2013, 8, 5), precio= 23.10) producto.put() producto = Producto(nombre="Producto 3", stock=10, expiracion = datetime.date(2013, 6, 9), precio= 6.75) producto.put() producto = Producto(nombre="Producto 4", stock=7, expiracion = datetime.date(2013, 9, 11), precio= 2.50) producto.put() producto = Producto(nombre="Producto 5", stock=2, expiracion = datetime.date(2013, 5, 20), precio= 16.0) producto.put()