def post(self): user = users.get_current_user() nombre_usuario = "alexis" #self.request.get("nombre_usuario") nombre_producto = self.request.get("nombre_producto") descripcion = self.request.get("content") con_cantidad = self.request.get("con_cantidad") categoria = self.request.get_all("tags") if con_cantidad: con_cantidad = True else: con_cantidad = False cantidad =2 print categoria[:] nuevo_producto = Producto(parent= Utils.get_parent_key(user), id=nombre_producto, nombre=nombre_producto, descripcion=descripcion, con_cantidad=con_cantidad, cantidad=cantidad, categoria= categoria, creado=nombre_usuario ) nuevo_producto.put() self.redirect("/")
def post(self): try: upload = self.get_uploads()[0] p = Producto(portada=upload.key()) p.put() self.redirect("/") except: self.response.write('<html><body>500, no se pudo subir la imagen</body></html>')
def get_productos(user): """ Permite obtener todos los productos del usuario """ productos = Producto.query(ancestor = get_parent_key(user)).order(Producto.fecha_creado).fetch() mapa_producto = {} for producto in productos: mapa_producto[producto.key] = producto return productos, mapa_producto
def __init__(self, ventana): global mP mP = Producto.Producto() self.ventana = ventana self.ventana.title("Ventana Productos") self.ventana.geometry("500x500") self.ventana.resizable(0,0) #contenedor self.contenedor = LabelFrame(self.ventana, text='Ingresar Nuevo Producto') self.contenedor.grid( row = 0, column = 0, columnspan = 3, padx = 20, pady = 20 ) #label nombre Label(self.contenedor, text='Nombre:').grid( row = 1, column = 0 ) #input nombre self.nombre = Entry(self.contenedor) self.nombre.focus() self.nombre.grid( row = 1, column = 1, padx = 5 ) #label precio Label(self.contenedor, text='Precio:').grid( row = 2, column = 0 ) #input precio self.precio = Entry(self.contenedor) self.precio.grid( row = 2, column = 1 ) #mensaje de salida self.mensaje = Label( text = '', fg = 'red' ) self.mensaje.grid( row = 3, column = 0, columnspan = 2, sticky = W + E ) #tablas self.tabla = ttk.Treeview(height = 10, column = 2) self.tabla.grid(row = 4, column = 0, columnspan = 2, padx = 50) self.tabla.heading('#0', text = 'Nombre', anchor = CENTER) self.tabla.heading('#1', text = 'Precio', anchor = CENTER)
class ControladorEditar: #variable global del modelo global mP mP = Producto.Producto() def editarProducto(self, nombre, nombreNuevo, precioNuevo): #logica de editar un producto en la BD y luego mostrarlo en la tabla en tiempo real fila = mP.editarProducto(nombre, nombreNuevo, precioNuevo) if (fila > 0): ventana = Tk() vP = producto.VentanaProducto(ventana) vP.mensaje['text'] = 'Producto Actualizado Correctamente' else: vP.mensaje['text'] = 'ERROR al actualizar el producto' vP.obtenerDatos() ventana.destroy()
def get_producto(user, producto): """ solo obtiene un producto en especifico """ producto = Producto.get_by_id(producto, get_parent_key(user)) return producto
class ControladorProducto: #ventana ventana = Tk() #variable global de la vista del producto global vP vP = producto.VentanaProducto(ventana) #variable global del modelo del producto global mP mP = Producto.Producto() def __init__(self, ventana): #boton agregar producto ttk.Button(vP.contenedor, text='Insertar Producto', command=self.agregarProducto).grid(row=3, columnspan=2, padx=10, pady=10, sticky=W + E) #boton eliminar producto ttk.Button(vP.contenedor, text='Eliminar Producto', command=self.eliminarProducto).grid( row=5, column=1, ) #boton editar producto ttk.Button(vP.contenedor, text='Editar Producto', command=self.modificarProducto).grid(row=5, column=0, padx=12, pady=12, sticky=W + E) vP.obtenerDatos() #funcion que valida que los datos no vengan vacios def validar(self): if (len(vP.nombre.get()) > 0 and len(vP.precio.get()) > 0): return True else: return False #logica para agregar un producto en la BD y actualizar los datos en tiempo real def agregarProducto(self): if (self.validar()): nombre = vP.nombre.get() precio = int(vP.precio.get()) fila = mP.registrarProducto(nombre, precio) if (fila > 0): vP.mensaje['text'] = f'{nombre} insertado correctamente' vP.nombre.delete(0, END) vP.precio.delete(0, END) else: vP.mensaje['text'] = "ERROR al insertar el producto" nombre.delete(0, END) precio.delete(0, END) else: vP.mensaje['text'] = "ERROR no ha ingresado datos" vP.obtenerDatos() #logica para eliminar un producto de la BD y actualizar los datos en tiempo real def eliminarProducto(self): try: nombre = vP.tabla.item(vP.tabla.selection())['text'] fila = mP.eliminarProducto(nombre) if (fila > 0): vP.mensaje['text'] = f'{nombre} eliminado correctamente' else: vP.mensaje['text'] = 'ERROR debe seleccionar un producto' vP.obtenerDatos() except: vP.mensaje['text'] = 'ERROR al eliminar el producto' #funcion que abre la ventana editar def modificarProducto(self): nombre = vP.tabla.item(vP.tabla.selection())['text'] precio = vP.tabla.item(vP.tabla.selection())['values'] vE = editar.VentanaModificar(self.ventana, nombre, precio)