Beispiel #1
0
 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)
Beispiel #2
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'
Beispiel #3
0
 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()
Beispiel #4
0
    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
Beispiel #5
0
    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()
Beispiel #6
0
 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')
Beispiel #7
0
    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()
Beispiel #8
0
    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
Beispiel #9
0
 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')
Beispiel #10
0
    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()
Beispiel #11
0
    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()
Beispiel #12
0
 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'
Beispiel #13
0
    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()
Beispiel #14
0
 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