Beispiel #1
0
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))
Beispiel #2
0
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
Beispiel #3
0
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, )))
Beispiel #4
0
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'})
Beispiel #5
0
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'})
Beispiel #6
0
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'})
Beispiel #7
0
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)
Beispiel #8
0
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()
Beispiel #9
0
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)
Beispiel #10
0
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'})
Beispiel #11
0
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
Beispiel #12
0
 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")
Beispiel #13
0
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'})
Beispiel #14
0
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'})
Beispiel #15
0
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'})
Beispiel #16
0
    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))
Beispiel #17
0
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'})
Beispiel #18
0
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'})
Beispiel #19
0
 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")
Beispiel #20
0
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))
Beispiel #21
0
 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()