def llenar_combo_miembros(self): conn = Conexion(self.database_proyec) query = 'select complete_name from miembros' miembros_com = conn.run_query(query) miembros_com = [m[0] for m in miembros_com] self.combo_miembros['values'] = miembros_com or 'Vacio' self.combo_miembros.current(0)
def mostrar_informacion_de_exposiciones(self): sem = defaultdict(dict) for miembro in Conexion( self.database_proyec).run_query('select * from activities'): sem[miembro[3]].update({miembro[1]: miembro[4]}) sem_miembros = dict(sem) semanas = [ sem[0] for sem in Conexion(self.database_proyec).run_query( 'select distinct semana from activities') ] expos = defaultdict(list) for miembro, exposiciones in sem_miembros.items(): for semana in semanas: expos[miembro] += [ 'x' if exposiciones.get(semana, 'no') == 'si' else ' ' ] columns = tuple(range(0, len(semanas))) ancho = 550 width = int(ancho / (len(semanas) + 1)) self.tree_exposicion = ttk.Treeview(self.label_frame_0, height=7, columns=columns) self.tree_exposicion.grid(row=4, column=0, columnspan=3, padx=10, pady=5) self.tree_exposicion.heading('#0', text=f'Nombre', anchor=CENTER) self.tree_exposicion.column('#0', width=800 - ancho) for column in range(1, len(semanas) + 1): self.tree_exposicion.heading(f'#{column}', text=f'{column}', anchor=CENTER) self.tree_exposicion.column(f'#{column}', width=width) self.tree_exposicion.tag_configure('par', background='#CCFFCC') self.tree_exposicion.tag_configure('impar', background='#006666', foreground='#FFFFFF') elements = self.tree_exposicion.get_children() for element in elements: self.tree_exposicion.delete(element) count = 0 for miembro, aspas in expos.items(): color = 'par' if count % 2 == 0 else 'impar' count += 1 self.tree_exposicion.insert('', 0, text=miembro, values=tuple(aspas), tags=(color, )) self.message_mostrar_actividad['text'] = 'Actividad encontrada'
def llenar_tabla_miembros(self): elements = self.tree_miembro.get_children() for element in elements: self.tree_miembro.delete(element) conn = Conexion(self.database_proyec) query = 'select * from miembros' miembros = conn.run_query(query) miembros = [miem for miem in miembros] self.len_miembros = len(miembros) for miembro in miembros: self.tree_miembro.insert('', 0, text=miembro[1], values=(miembro[2], miembro[3], miembro[4])) self.llenar_combo_miembros()
def guardar_miembro(self): try: miembro = Miembro(self.name.get(), int(self.edad.get()), self.combo_grado.get(), self.combo_casa_estudios.get()) conn = Conexion(self.database_proyec) query = "INSERT INTO miembros VALUES(NULL,?,?,?,?)" parameters = (miembro.name, miembro.edad, miembro.grado, miembro.casa_estudios) conn.run_query(query, parameters) self.name = '' self.edad = '' self.combo_grado.current(9) self.llenar_tabla_miembros() except Exception as ex: self.message_miembro['text'] = ex
def llenar_tabla_actividades_miembros(self): elements = self.tree_actividad.get_children() for element in elements: self.tree_actividad.delete(element) conn = Conexion(self.database_proyec) query = 'select * from activities' activities_ = [act for act in conn.run_query(query)] self.len_activities = len(activities_) for act in activities_: color = 'si' if int(act[1]) % 2 == 0 else 'no' self.tree_actividad.insert('', 0, text=act[3], values=(act[4], act[1], act[2]), tags=(color, )) self.mostrar_informacion_de_exposiciones()
def exportar_miembros(self): print('Exportar miembros') conn = Conexion(self.database_proyec) sql = 'select * from miembros' miembros = conn.run_query(sql) with filedialog.asksaveasfile(title='Guardar como', defaultextension=".csv", filetypes=(("Archivo csv", "*.csv"), ("Todos Archivos", "*.*"))) as f: f.write('Miembro,Edad,Ciclo o Grado,Casa de estudios\n') for miembro in miembros: miembro = [(m.strip('\n') if isinstance(m, str) else m) for m in miembro] miembro = [f'{mie}' for mie in miembro] f.write(','.join(miembro[1:]) + '\n') messagebox.showinfo('Guardado', 'Integrantes guardados')
def eliminar_miembro(self): try: self.tree_miembro.item(self.tree_miembro.selection())['text'][0] except IndexError as e: self.message_miembro['text'] = 'Por favor selecciona un miembro' return self.message_miembro['text'] = '' name = self.tree_miembro.item(self.tree_miembro.selection())['text'] edad = self.tree_miembro.item( self.tree_miembro.selection())['values'][0] grado = self.tree_miembro.item( self.tree_miembro.selection())['values'][1] conn = Conexion(self.database_proyec) query = "DELETE FROM miembros WHERE complete_name=? AND edad=? AND grado_ciclo=?" conn.run_query(query, (name, edad, grado)) self.message_miembro['text'] = f'{name} eliminado' self.llenar_tabla_miembros()
def guardar_actividad_de_miembro(self): try: actividad_ = Actividad(self.combo_miembros.get(), int(self.semana.get()), self.combo_exp.get(), self.text.get(1.0, END).strip('\n')) conn = Conexion(self.database_proyec) query = "INSERT INTO activities VALUES(NULL,?,?,?,?)" parameters = (actividad_.semana, actividad_.actividad, actividad_.miembro, actividad_.exp) conn.run_query(query, parameters) self.text.delete(1.0, END) self.message_actividad['text'] = 'Actividad guardada' pos = (self.len_activities + 1) % self.len_miembros self.semana.set(int(self.semana.get()) + int(not (bool(pos)))) self.combo_miembros.current(pos) self.llenar_tabla_actividades_miembros() except Exception as ex: self.message_actividad['text'] = ex
def exportar_actividades(self): print('Exportando actividades') conn = Conexion(self.database_proyec) sql = 'select * from activities' actividades = conn.run_query(sql) with filedialog.asksaveasfile(title='Guardar como', defaultextension=".csv", filetypes=(("Archivo csv", "*.csv"), ("Todos Archivos", "*.*"))) as f: f.write('Semana,Actividad,Responsable,Exp\n') for activity in actividades: activity = [(act.strip("\n") if isinstance(act, str) else act) for act in activity] activity = [ (''.join(act.split(",")) if isinstance(act, str) else act) for act in activity ] activity = [f'{act}' for act in activity] f.write(','.join(activity[1:]) + '\n') messagebox.showinfo('Guardado', 'Actividades guardadas')
def actualizar_bd_miembro(self): try: miembro = Miembro(self.nombre_miembro.get(), int(self.edad_miembro.get()), self.editar_combo_miembro.get(), self.editar_combo_estudios.get()) except Exception as ex: messagebox.showwarning('Error encontrado', ex) return conn = Conexion(self.database_proyec) query = "UPDATE miembros SET complete_name=?, edad=?, grado_ciclo=?, casa_estudios=? WHERE complete_name=? AND edad=? AND grado_ciclo=?" parameters = (self.nombre_miembro.get(), self.edad_miembro.get(), self.editar_combo_miembro.get(), self.editar_combo_estudios.get(), self.name_old, self.edad_old, self.grado_old) conn.run_query(query, parameters) messagebox.showinfo( 'Actualziado', f'Actualizado con exito {self.nombre_miembro.get()}') self.editar_miembro.destroy() self.llenar_tabla_miembros()
def eliminar_actividad_de_miembro(self): try: self.tree_actividad.item( self.tree_actividad.selection())['text'][0] except IndexError as e: self.message_actividad['text'] = 'Por favor selecciona un miembro' return self.message_actividad['text'] = '' nombre = self.tree_actividad.item( self.tree_actividad.selection())['text'] exp = self.tree_actividad.item( self.tree_actividad.selection())['values'][0] semana = int( self.tree_actividad.item( self.tree_actividad.selection())['values'][1]) actividad = self.tree_actividad.item( self.tree_actividad.selection())['values'][2] conn = Conexion(self.database_proyec) query = "DELETE FROM activities WHERE semana=? AND actividad=? AND responsable=? AND exp=?" conn.run_query(query, (semana, actividad, nombre, exp)) self.message_actividad['text'] = f'{actividad} eliminado' self.llenar_tabla_actividades_miembros()
def llenar_mostrador_actividades(self): elements = self.tree_actividad_miembro.get_children() for element in elements: self.tree_actividad_miembro.delete(element) conn = Conexion(self.database_proyec) query = 'select * from activities where semana=?' try: parameters = (int(self.ver_semana.get()), ) actividades_a_mostrar = conn.run_query(query, parameters) actividades_a_mostrar = [v for v in actividades_a_mostrar] for ac_mostrar in actividades_a_mostrar: exp_temp = ac_mostrar[4] self.tree_actividad_miembro.insert('', 0, text=ac_mostrar[3], values=(ac_mostrar[2], ac_mostrar[3]), tags=(exp_temp, )) self.message_mostrar_actividad[ 'text'] = 'Actividad encontrada' if actividades_a_mostrar else "Actividad no encontrada" except ValueError as ex: self.message_mostrar_actividad[ 'text'] = 'La semana debe ser un numero entero'
def actualizar_tabla_actividades(self): print(self.new_name.get(), self.combo_new_exp.get(), self.new_semana.get(), self.text_actualizar.get(1.0, END)) try: actividad = Actividad(self.new_name.get(), int(self.new_semana.get()), self.combo_new_exp.get(), self.text_actualizar.get(1.0, END)) except Exception as ex: messagebox.showwarning('Ocurrio un error', ex) return conn = Conexion(self.database_proyec) query = "UPDATE activities SET semana=?, actividad=?, responsable=?, exp=? WHERE semana=? AND actividad=? AND responsable=?" parameters = (actividad.semana, actividad.actividad, actividad.miembro, actividad.exp, self.semana_old, self.actividad_old, self.name_old_actividad) conn.run_query(query, parameters) messagebox.showinfo('Actualizado', f'Actualizado {actividad.miembro} exitosamente.') self.message_actividad[ 'text'] = f'Actualizado {actividad.miembro} exitosamente.' self.llenar_tabla_actividades_miembros() self.ventana_actualizar_actividad.destroy()
def validate(self): query = 'select * from users where user=? AND passwd=?' parameters = (self.user.get(), self.passwd.get()) user = Conexion().run_query(query, parameters) val = [member for member in user] return True if val else False