def GenerarHorario(): query_tipo_bloque = "SELECT BL_INI, BL_FIN FROM TIPO_BLOQUE" query_bloques = "SELECT * FROM BLOQUE" query_asignaturas = "SELECT ASI_ID, ASI_NOM FROM ASIGNATURA WHERE ASI_EST = '1'" tipo_bloque = list(RunQuery(query_tipo_bloque)) bloques = list(RunQuery(query_bloques)) asignaturas = list(RunQuery(query_asignaturas)) return tipo_bloque, bloques, asignaturas
def IngresarCrearActividad(app, contenido, ventana, seleccion, rows): # falta eliminar los objetos usados try: rows[seleccion[0]] except IndexError: messagebox.showinfo(message="Debes seleccionar una asignatura.", title="Mind your Study", parent=ventana) return EliminarBotones(buttons_ventana) ventana.geometry("800x365") k = rows[seleccion[0]] frame2 = tk.Frame(ventana) frame2.grid(row=3, column = 0, padx=30, pady=25, sticky="ew") tk.Label(frame2, text = 'Ingrese los datos de la actividad que desea crear: \n', font=("", 15, 'bold'),justify="center",).grid(row = 0, column = 0,columnspan=8, padx=10, sticky="w") # Asignatura tk.Label(frame2, text = 'Asignatura: ', font=("", 13, 'bold'),justify="left").grid(row = 1, column = 0,sticky="e") tk.Entry(frame2, textvariable = tk.StringVar(frame2, value = k[0]), state = 'readonly').grid(row = 1, column = 1, columnspan=3, ipadx = 120) # Descripcion tk.Label(frame2, text = 'Descripcion(*): ' , font=("", 13, 'bold'),justify="left").grid(row = 2, column = 0,sticky="e") descripcion = tk.Entry(frame2) descripcion.grid(row = 2, column = 1, columnspan=3, ipadx = 120) # Fecha tk.Label(frame2, text = 'Fecha(*): ' , font=("", 13, 'bold'),justify="left").grid(row = 3, column = 0,sticky="e" ) fecha = tk.Entry(frame2 ) fecha.grid(row = 3, column = 1, columnspan=3, ipadx = 120) tk.Label(frame2, text = ' Formato: AAAA-MM-DD ' , font=('', 10, ''),justify="left").grid(row = 3, column = 5,sticky="ew" ) # Prioridad tk.Label(frame2, text = 'Prioridad(*): ', font=("", 13, 'bold'),justify="left").grid(row = 4, column = 0,sticky="e") lista_prioridad = list(RunQuery('SELECT PRI_NIVEL FROM PRIORIDAD')) opcion_prioridad = tk.StringVar(frame2, value = '') prioridad = tk.OptionMenu(frame2, opcion_prioridad, *lista_prioridad) prioridad.grid(row=4, column=1, sticky="w") # Tipo tk.Label(frame2, text = 'Tipo(*): ' , font=("", 13, 'bold'),justify="left").grid(row = 5, column = 0,sticky="e") lista_tipo = list(RunQuery('SELECT TACT_TIPO FROM TIPO_ACTIVIDAD')) opcion_tipo = tk.StringVar(frame2, value = '') tipo = tk.OptionMenu(frame2, opcion_tipo, *lista_tipo) tipo.grid(row=5, column=1, sticky="w") tk.Label(frame2, text ='(*) espacio obligatorio', font=("", 13), justify="left").grid(row=7, column=0, padx=10, sticky="w") a = tk.Button(ventana, text="Crear actividad", command = lambda: CrearActividad(app, contenido,ventana, (k[1], descripcion.get(), fecha.get(), opcion_prioridad.get(), opcion_tipo.get())), relief = tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=30, y=290) a = tk.Button(ventana, text="Cancelar", command = ventana.destroy, relief = tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=230,y=290) ventanas.append(ventana) ventana.mainloop()
def RegistroBloque(b, case): if case == 'C': query = 'INSERT INTO BLOQUE VALUES(?,?,?)' elif case == 'E': query = 'DELETE FROM BLOQUE WHERE BL_ID = ? AND BL_DIA_SEM = ?' return RunQuery(query, b)
def RegistroNota(n, case): if case == 'C': query = 'INSERT INTO NOTA VALUES(NULL,?,?,?)' elif case == 'M': query = 'UPDATE NOTA SET NOT_ID_ASI = ?, NOT_TIPO = ?, NOT_VAL = ? WHERE NOT_ID = ?' elif case == 'E': query = 'DELETE FROM NOTA WHERE NOT_ID = ?' return RunQuery(query, n)
def RegistroActividad(a, case): if case == 'C': query = 'INSERT INTO ACTIVIDAD VALUES(NULL,?,?,?,?,?)' elif case == 'M': query = 'UPDATE ACTIVIDAD SET ACT_DESC = ?, ACT_FECHA = ?, ACT_PRI = ?, ACT_TIPO = ? WHERE ACT_ID = ? AND ACT_ID_ASI = ?' elif case == 'E': query = 'DELETE FROM ACTIVIDAD WHERE ACT_ID = ? AND ACT_ID_ASI = ?' RunQuery(query, a)
def RegistroAsignatura(a, case): if case == 'C': query = 'INSERT INTO ASIGNATURA VALUES(NULL,?,?,?,?,?)' elif case == 'M': query = 'UPDATE ASIGNATURA SET ASI_NOM = ?, ASI_DESC = ?, ASI_NOM_PROF = ?, ASI_MAIL_PROF = ?, ASI_EST = ? WHERE ASI_ID = ?' elif case == 'E': query = 'DELETE FROM ASIGNATURA WHERE ASI_ID = ?' return RunQuery(query, a)
def CambiarEstado(app, contenido, ventana, k, seleccion): rows = k[seleccion[0]] bloques = [] try: rows except IndexError: messagebox.showinfo(message="Debes seleccionar una asignatura.", title="Mind your Study", parent=ventana) return asi_id = rows[0] asignatura = rows[1] descripcion = rows[2] nom_profesor = rows[3] mail_profesor = rows[4] if (rows[5] == 1): nuevo_estado = 0 bloques = list( RunQuery( "SELECT BL_ID, BL_DIA_SEM FROM BLOQUE WHERE BL_ID_ASI = " + str(asi_id))) respuesta = messagebox.askyesno( message="La asignatura " + asignatura + " cambiara a estado no activo y se eliminaran sus bloques horarios ¿Continuar?", title="Cambiar Estado", parent=ventana) else: nuevo_estado = 1 respuesta = messagebox.askyesno( message="La asignatura " + asignatura + " cambiara a estado activo ¿Continuar?", title="Cambiar Estado", parent=ventana) if not respuesta: return if bloques != []: for k in bloques: GestionAsignatura('E', (k[0], k[1]), None, None) GestionAsignatura('M', None, (asignatura, descripcion, nom_profesor, mail_profesor, nuevo_estado, asi_id), None) MostrarAsignatura(app, contenido) messagebox.showinfo( message="Se ha cambiado el estado de la asignatura correctamente.", title="Mind your Study", parent=app)
def GenerarConsejo(tipo): if tipo != None: query = "SELECT CON_DESC FROM CONSEJO WHERE CON_TIPO = '" + tipo + "' ORDER BY RANDOM() LIMIT 1;" else: query = ''' SELECT CON_DESC FROM CONSEJO WHERE CON_TIPO NOT IN("recomendacionBuena", "recomendacionMedia", "recomendacionAlerta") ORDER BY RANDOM() LIMIT 1; ''' consejo = list(RunQuery(query)) return consejo[0][0]
def CalcularNota(id): if id != None: n_tipo = "SELECT ASI_ID AS ramo, NOT_TIPO AS tipo, ROUND(AVG(NOT_VAL),1) AS promedio FROM NOTA, ASIGNATURA WHERE NOT_ID_ASI = '" + str( id) + "' AND ASI_EST = '1' AND ASI_ID = '" + str( id) + "' GROUP BY NOT_TIPO" else: n_tipo = """SELECT ASI_ID AS ramo, NOT_TIPO AS tipo, ROUND(AVG(NOT_VAL),1) AS promedio FROM NOTA, ASIGNATURA WHERE NOT_ID_ASI = ASI_ID AND ASI_EST = '1' GROUP BY NOT_ID_ASI, NOT_TIPO """ n_final = "WITH A as (" + n_tipo + ") SELECT A.ramo, round(AVG(A.promedio),1) AS nota_final FROM A GROUP BY A.ramo" notas_tipo = list(RunQuery(n_tipo)) nota_final = list(RunQuery(n_final)) return notas_tipo, nota_final
def MostrarCrearActividad(app, contenido): rows = list(RunQuery("SELECT ASI_NOM, ASI_ID FROM ASIGNATURA WHERE ASI_EST = '1'")) if rows != []: EliminarBotones(buttons_ventana) EliminarVentanas(ventanas) ventana = tk.Toplevel(app, bg="#D4E6F1") ventana.title("Crear actividad") ventana.geometry("800x520") ventana.resizable(False, False) ventana.iconbitmap(ICON) ventana.focus() b = tk.Label(ventana, text="Selecciona la asignatura de la actividad a crear:",font=("", 20, 'bold'),justify="left") b.place(x=30,y=30) lista = tk.Listbox(ventana, height=16, width=81,font=("", 13, ""), bg = 'SystemButtonFace') lista.place(x=30, y=80) for k in range(len(rows)-1,-1,-1): i = rows[k] lista.insert(0,' '+ i[0]) a = tk.Button(ventana, text="Seleccionar", command = lambda: IngresarCrearActividad(app, contenido,ventana, lista.curselection(), rows), relief = tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=30,y=435) buttons_ventana.append(a) a = tk.Button(ventana, text="Cancelar", command = ventana.destroy, relief = tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=190,y=435) buttons_ventana.append(b) buttons_ventana.append(lista) buttons_ventana.append(a) ventanas.append(ventana) ventana.mainloop() else: messagebox.showinfo(message="No existen asignaturas activas / creadas.", title="Mind your Study", parent=app) return
def DatosAsignatura(frame, asig_nom): EliminarBotones(buttons_ventana) rows = list( RunQuery("SELECT * FROM ASIGNATURA WHERE ASI_NOM = '" + asig_nom + "'")) k = rows[0] # Asignatura b = tk.Label(frame, text='Asignatura: ' + k[1], font=("", 13, 'bold'), justify="left") b.grid(row=1, column=0, pady=5, sticky="w") buttons_ventana.append(b) # Descripcion b = tk.Label(frame, text='Descripcion: ' + k[2], font=("", 13, 'bold'), justify="left") b.grid(row=2, column=0, pady=5, sticky="w") buttons_ventana.append(b) # Profesor b = tk.Label(frame, text='Profesor/a: ' + k[3], font=("", 13, 'bold'), justify="left") b.grid(row=3, column=0, pady=5, sticky="w") buttons_ventana.append(b) # Correo Profesor b = tk.Label(frame, text='Correo Profesor/a: ' + k[4], font=("", 13, 'bold'), justify="left") b.grid(row=4, column=0, pady=5, sticky="w") buttons_ventana.append(b)
def MostrarEliminarActividad(app, contenido): rows = list(RunQuery("SELECT ACT_ID, ACT_ID_ASI, ASI_NOM, ACT_ID_ASI, ACT_DESC, ACT_FECHA, ACT_PRI, ACT_TIPO FROM ACTIVIDAD, ASIGNATURA WHERE ACT_FECHA >= date('now') AND ACT_ID_ASI = ASI_ID AND ASI_EST = '1' ORDER BY ACT_FECHA")) if rows != []: EliminarBotones(buttons_ventana) EliminarVentanas(ventanas) ventana = tk.Toplevel(app, bg="#D4E6F1") ventana.title("Eliminar Actividad") ventana.geometry("800x580") ventana.resizable(False, False) ventana.iconbitmap(ICON) ventana.focus() b = tk.Label(ventana, text="Selecciona la actividad a eliminar:",font=("", 20, 'bold'),justify="left") b.place(x=30,y=30) lista = tk.Listbox(ventana, height=20, width=81,font=("", 13, ""), bg = 'SystemButtonFace') lista.place(x=30, y=85) for k in range(len(rows)-1,-1,-1): i = rows[k] lista.insert(0,' '+i[5] + '. ' + i[2] + ': ' + i[4]) a = tk.Button(ventana, text="Seleccionar", command= lambda: EliminarActividad(app, contenido,ventana, rows, lista.curselection()), relief = tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=30,y=510) a = tk.Button(ventana, text="Cancelar", command = ventana.destroy, relief = tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=190,y=510) buttons_ventana.append(b) buttons_ventana.append(lista) buttons_ventana.append(a) ventanas.append(ventana) ventana.mainloop() else: messagebox.showinfo(message="No existen actividades actualmente.", title="Mind your Study", parent=app)
def EliminarAsignatura(app, contenido, ventana, rows, seleccion): try: rows[seleccion[0]] except IndexError: messagebox.showinfo(message="Debes seleccionar una asignatura.", title="Mind your Study", parent=ventana) return respuesta = messagebox.askyesno(message="¿Deseas eliminar la asignatura?", title="Eliminar Asignatura", parent=ventana) if not respuesta: return k = rows[seleccion[0]] bloques_eliminar = list( RunQuery("SELECT BL_ID, BL_DIA_SEM FROM BLOQUE WHERE BL_ID_ASI = '" + str(k[0]) + "'")) GestionAsignatura('E', None, (k[0], ), None) # Eliminamos asignatura # Eliminar los bloques de la asignatura for bloque in bloques_eliminar: GestionAsignatura('E', (bloque[0], bloque[1]), None, None) MostrarAsignatura(app, contenido) messagebox.showinfo(message="Se ha eliminado la asignatura correctamente.", title="Mind your Study", parent=app) # Fin modulos de interfaz grafica para la seccion Asignatura #
def NotificarActividad(): query = ''' WITH A AS ( SELECT ASI_NOM AS asig, (strftime('%j', ACTIVIDAD.ACT_FECHA) - strftime('%j', DATE('now'))) as diasFaltantes, ACT_TIPO as tipo, ACT_FECHA as fecha FROM ACTIVIDAD, ASIGNATURA, PRIORIDAD WHERE PRI_NIVEL = ACT_PRI AND ASI_ID = ACT_ID_ASI AND diasFaltantes BETWEEN 0 AND PRI_CANT ) SELECT "Tienes una actividad " || A.tipo || " de " || A.asig ||(CASE WHEN diasFaltantes = 0 THEN " hoy " || A.fecha || "." WHEN diasFaltantes = 1 THEN " en 1 dia (" || A.fecha ||")." ELSE " en " || A.diasFaltantes || " dias (" || A.fecha ||")." END) as Notificacion FROM A ''' notificaciones_list = list(RunQuery(query)) notificaciones = [] for k in notificaciones_list: notificaciones.append(k[0]) return notificaciones
def MostrarNota(app, contenido): EliminarBotones(buttons) EliminarBotones(buttons_ventana) EliminarVentanas(ventanas) b = tk.Button(contenido, text="Agregar Nota", command=lambda: MostrarIngresarNota(app, contenido), relief=tk.SOLID, font=("", 13, 'bold'), bd=1, padx=0, bg="#fbf8be", activebackground="#e3e0ac") b.place(x=80, y=450) buttons.append(b) b = tk.Button(contenido, text="Eliminar Nota", command=lambda: MostrarEliminarNota(app, contenido), relief=tk.SOLID, font=("", 13, 'bold'), bd=1, padx=0, bg="#fbf8be", activebackground="#e3e0ac") b.place(x=80, y=510) buttons.append(b) b = tk.Button(contenido, text="Modificar Nota", command=lambda: MostrarModificarNota(app, contenido), relief=tk.SOLID, font=("", 13, 'bold'), bd=1, padx=0, bg="#fbf8be", activebackground="#e3e0ac") b.place(x=356, y=450) buttons.append(b) b = tk.Button(contenido, text="Calcular Nota", command=lambda: ElegirCalcularNota(app), relief=tk.SOLID, font=("", 13, 'bold'), bd=1, padx=0, bg="#fbf8be", activebackground="#e3e0ac") b.place(x=360, y=510) buttons.append(b) container = tk.Frame(contenido) canvas = tk.Canvas(container, width=490, height=380) scrollbar = tk.Scrollbar(container, orient="vertical", command=canvas.yview) scrollable_frame = tk.Frame(canvas, relief=tk.GROOVE) scrollable_frame.bind( "<Configure>", lambda e: canvas.configure(scrollregion=canvas.bbox("all"))) canvas.create_window((0, 0), window=scrollable_frame, anchor="nw") canvas.configure(yscrollcommand=scrollbar.set) asignaturas = list( RunQuery("SELECT ASI_ID, ASI_NOM FROM ASIGNATURA WHERE ASI_EST = 1")) notas = list( RunQuery( "SELECT NOT_ID_ASI, NOT_TIPO, NOT_VAL FROM NOTA, ASIGNATURA WHERE NOT_ID_ASI = ASI_ID AND ASI_EST = 1 ORDER BY NOT_ID_ASI, NOT_TIPO" )) if asignaturas != []: r = 0 for i in range(0, len(asignaturas)): b = tk.Label(scrollable_frame, text=asignaturas[i][1], font=("", 14, 'bold'), justify="left") b.grid(row=r, column=0, sticky="w") buttons.append(b) r = r + 1 tiene_notas = False for j in range(0, len(notas)): if (asignaturas[i][0] == notas[j][0]): tiene_notas = True b = tk.Label(scrollable_frame, text="Nota " + notas[j][1] + ": " + str(notas[j][2]), font=("", 12, ''), justify="left") b.grid(row=r, column=0, sticky="w") buttons.append(b) r = r + 1 if tiene_notas == False: b = tk.Label(scrollable_frame, text="- sin notas -", font=("", 12, ''), justify="left") b.grid(row=r, column=0, sticky="w") buttons.append(b) r = r + 1 else: if asignaturas == []: b = tk.Label( scrollable_frame, text="Actualmente no hay asignaturas activas / creadas.", font=("", 14, 'bold'), justify="left") b.grid(row=0, column=0, sticky="w") buttons.append(b) container.place(x=40, y=40) canvas.pack(side="left", fill="both") scrollbar.pack(side="right", fill="y") buttons.append(container) buttons.append(canvas) buttons.append(scrollbar) buttons.append(scrollable_frame)
def MostrarIngresarNota(app, contenido): asignaturas = list( RunQuery("SELECT ASI_NOM, ASI_ID FROM ASIGNATURA WHERE ASI_EST = '1'")) if asignaturas != []: EliminarBotones(buttons_ventana) EliminarVentanas(ventanas) ventana = tk.Toplevel(app, bg="#D4E6F1") ventana.title("Ingresar nota") ventana.geometry("800x480") ventana.resizable(False, False) ventana.iconbitmap(ICON) ventana.focus() b = tk.Label(ventana, text="Selecciona la asignatura de la nota a ingresar:", font=("", 12, 'bold'), justify="left") b.place(x=30, y=30) lista = tk.Listbox(ventana, height=10, width=81, font=("", 12, ""), bg='SystemButtonFace') lista.place(x=30, y=70) asignaturas = list( RunQuery( "SELECT ASI_NOM, ASI_ID FROM ASIGNATURA WHERE ASI_EST = '1'")) for k in range(len(asignaturas) - 1, -1, -1): i = asignaturas[k] lista.insert(0, ' ' + i[0]) # Valor nota b = tk.Label(ventana, text='Nota: ', font=("", 12, 'bold'), justify="left") b.place(x=30, y=290) valor_nota = tk.Entry(ventana, font=('', 12, '')) valor_nota.place(x=140, y=290) # Tipo nota b = tk.Label(ventana, text='Tipo Nota: ', font=("", 12, 'bold'), justify="left") b.place(x=30, y=340) tipo_nota = list(RunQuery("SELECT TNOT_NOM FROM TIPO_NOTA")) opcion_tipo_nota = tk.StringVar(ventana, value='') nuevo_tipo_nota = tk.OptionMenu(ventana, opcion_tipo_nota, *tipo_nota) nuevo_tipo_nota.place(x=140, y=340) a = tk.Button(ventana, text="Ingresar Nota", command=lambda: IngresarNota(app, contenido, ventana, [ lista.curselection(), valor_nota.get(), opcion_tipo_nota.get() ], asignaturas), relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=30, y=400) buttons_ventana.append(a) a = tk.Button(ventana, text="Cancelar", command=ventana.destroy, relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=210, y=400) buttons_ventana.append(b) buttons_ventana.append(lista) buttons_ventana.append(a) ventanas.append(ventana) ventana.mainloop() else: messagebox.showinfo( message="No existen asignaturas activas / creadas.", title="Mind your Study", parent=app) return
def MostrarInicio(app, contenido): EliminarBotones(buttons) EliminarBotones(buttons_ventana) EliminarVentanas(ventanas) b = tk.Label(contenido, text="Bienvenidos a \n Mind your Study", font=("", 35, 'bold'), justify="center", bg="#D4E6F1") b.place(x=100, y=100) buttons.append(b) version = list(RunQuery("SELECT max(VERSION_NUM) FROM VERSION")) str_version = version[0][0] # CONSEJO consejo = EmitirPlanificacion('consejo') test = ImageTk.PhotoImage(Image.open("assets/chinchilla.png")) label1 = tk.Label(contenido, image=test, bg='#D4E6F1') label1.image = test label1.place(x=49, y=403) buttons.append(label1) test = ImageTk.PhotoImage(Image.open("assets/text_bubble.png")) label1 = tk.Label(contenido, text=consejo, font=("", 10, 'bold'), image=test, bg='#D4E6F1', compound='center', wraplength=230) label1.image = test label1.place(x=155, y=310) buttons.append(label1) notificaciones, cantidad_notificaciones = CalcularNotificaciones() button = tk.Button( contenido, text="Notificaciones", command=lambda: MostrarNotificaciones(app, notificaciones), font=("", 13, 'bold'), bg='#E2E8ED', compound='center', relief=tk.GROOVE) button.place(x=20, y=20) buttons.append(button) label_cantidad_notificaciones = tk.Label(contenido, text=str(cantidad_notificaciones), font=("", 15, 'bold'), bg='#E2E8ED', compound='center', relief=tk.GROOVE, pady=2, padx=4) label_cantidad_notificaciones.place(x=150, y=20) buttons.append(label_cantidad_notificaciones) b = tk.Label(contenido, text="Version " + str_version, font=("", 17, ""), justify="center", bg="#D4E6F1") b.place(x=240, y=223) buttons.append(b)
def VentanaAbout(app): global buttons_ventana, ventanas EliminarBotones(buttons_ventana) EliminarVentanas(ventanas) ventana = tk.Toplevel(app, bg="#D4E6F1") ventana.title("Acerca de Mind your Study") ventana.geometry("400x250") ventana.resizable(False, False) ventana.iconbitmap(ICON) ventana.focus() tabControl = ttk.Notebook(ventana) tab1 = ttk.Frame(tabControl) tab2 = ttk.Frame(tabControl) tabControl.add(tab1, text='Acerca de') tabControl.add(tab2, text='Documentacion') tabControl.pack(expand=1, fill="both") #### TAB INFORMACION #### frame = tk.Frame(tab1) frame.grid(row=0, column=1, padx=10, pady=10, sticky="ew") ttk.Label(frame, text="Mind your Study", font=("", 15, 'bold'), justify="center").grid(row=0, column=0, columnspan=2, sticky="w") #version ttk.Label(tab1, text="Version:").grid(column=0, row=1, padx=5, pady=10, sticky="e") version = list(RunQuery("SELECT max(VERSION_NUM) FROM VERSION")) str_version = version[0][0] ttk.Label(tab1, text=str_version).grid(column=1, row=1, padx=0, pady=10, sticky="w") ####################################################################### #pagina web ttk.Label(tab1, text="Pagina web:").grid(column=0, row=2, padx=5, pady=10, sticky="e") link1 = tk.Label(tab1, text="github.com/lcc-usach-is/MindYourStudy", fg='blue', cursor="hand2") link1.grid(column=1, row=2, padx=0, pady=10, sticky="w") link1.bind( "<Button-1>", lambda e: callback("https://github.com/lcc-usach-is/MindYourStudy")) #licencia ttk.Label(tab1, text="Licencia:").grid(column=0, row=3, padx=5, pady=10, sticky="e") link2 = tk.Label(tab1, text="GNU General Public License v3.0", fg='blue', cursor="hand2") link2.grid(column=1, row=3, padx=0, pady=10, sticky="w") link2.bind( "<Button-1>", lambda e: callback( r"file://C:\Users\Public\Mind your Study\files\LICENSE.txt")) #### TAB DOCUMENTACION #### #fuente consejos link3 = tk.Label(tab2, text="- Bibliografia de consejos", fg='blue', cursor="hand2") link3.grid(column=0, row=0, padx=20, pady=20, sticky="w") link3.bind( "<Button-1>", lambda e: callback( r"file://C:\Users\Public\Mind your Study\files\consejos_source.txt" )) #Manual de usuario link4 = tk.Label(tab2, text="- Manual de usuario", fg='blue', cursor="hand2") link4.grid(column=0, row=1, padx=20, pady=20, sticky="w") link4.bind( "<Button-1>", lambda e: callback( r"file://C:\Users\Public\Mind your Study\files\manual_usuario.pdf") ) #lb = tk.Label(tab2, text ="En caso de no tener una conexion a internet, puedes encontrar la documentación en el siguiente directorio") #lb.grid(column=0, row=2 ,padx =20, pady = 10, sticky="w") #boton de confirmacion para cerrar la ventana a = tk.Button(ventana, text="OK", command=ventana.destroy, relief=tk.SOLID, bd=1, padx=10) a.place(x=330, y=210) buttons_ventana.append(a) ventanas.append(ventana) ventana.mainloop()
def IngresarModificarActividad(app, contenido, ventana, seleccion, rows): # Hay que eliminar los label y entry usados en esta funcion try: rows[seleccion[0]] except IndexError: messagebox.showinfo(message="Debes seleccionar una actividad.", title="Mind your Study", parent=ventana) return EliminarBotones(buttons_ventana) ventana.geometry("800x580") k = rows[seleccion[0]] container = tk.Frame(ventana) canvas = tk.Canvas(container, width=490, height=200) scrollbar = tk.Scrollbar(container, orient="horizontal", command=canvas.xview) scrollable_frame = tk.Frame(canvas, relief=tk.GROOVE) scrollable_frame.bind( "<Configure>", lambda e: canvas.configure( scrollregion=canvas.bbox("all") ) ) canvas.create_window((0, 0), window=scrollable_frame, anchor="nw") canvas.configure(xscrollcommand=scrollbar.set) tk.Label(scrollable_frame, text = 'Has seleccionado una actividad con los siguientes datos: \n', font=("", 15, 'bold'),justify="center",).grid(row = 0, column = 0,columnspan=7, sticky="w") # Asignatura tk.Label(scrollable_frame, text = 'Asignatura: ' + k[4], font=("", 13, 'bold'),justify="left").grid(row = 1, column = 0,sticky="w") # Descripcion antigua tk.Label(scrollable_frame, text = 'Descripcion: ' + k[5], font=("", 13, 'bold'),justify="left").grid(row = 2, column = 0, sticky="w") # Fecha antigua tk.Label(scrollable_frame, text = 'Fecha: ' + k[3] + '-' + k[2] + '-' + k[1], font=("", 13, 'bold'),justify="left").grid(row = 3, column = 0,sticky="w" ) # Prioridad tk.Label(scrollable_frame, text = 'Prioridad: ' + xstr(k[6]), font=("", 13, 'bold'),justify="left").grid(row = 4, column = 0,sticky="w") # Tipo tk.Label(scrollable_frame, text = 'Tipo: ' + k[7], font=("", 13, 'bold'),justify="left").grid(row = 5, column = 0,sticky="w") container.grid(row=1, column = 0, padx=30, pady=25,ipadx=124) canvas.pack(side="top", fill="x") scrollbar.pack(side="bottom", fill="x") frame2 = tk.Frame(ventana) frame2.grid(row=3, column = 0, padx=30, sticky="we") tk.Label(frame2, text = 'Ingresa los datos que desee modificar: \n', font=("", 15, 'bold'),justify="center",).grid(row = 0, column = 0,columnspan=7, sticky="w") # Asignatura tk.Label(frame2, text = 'Asignatura: ', font=("", 13, 'bold'),justify="left").grid(row = 1, column = 0,sticky="e") tk.Entry(frame2, textvariable = tk.StringVar(frame2, value = k[4]), state = 'readonly').grid(row = 1, column = 1, columnspan=3, ipadx = 120) # Descripcion tk.Label(frame2, text = 'Descripcion: ' , font=("", 13, 'bold'),justify="left").grid(row = 2, column = 0, padx=(10,0),sticky="e") nueva_descripcion = tk.Entry(frame2 ) nueva_descripcion.grid(row = 2, column = 1, columnspan=3, ipadx = 120) # Fecha tk.Label(frame2, text = 'Fecha: ' , font=("", 13, 'bold'),justify="left").grid(row = 3, column = 0,sticky="e" ) nueva_fecha = tk.Entry(frame2 ) nueva_fecha.grid(row = 3, column = 1, columnspan=3, ipadx = 120) tk.Label(frame2, text = ' Formato: AAAA-MM-DD ' , font=('', 10, ''),justify="left").grid(row = 3, column = 5,sticky="ew" ) # Prioridad tk.Label(frame2, text = 'Prioridad: ', font=("", 13, 'bold'),justify="left").grid(row = 4, column = 0,sticky="e") prioridad = list(RunQuery('SELECT PRI_NIVEL FROM PRIORIDAD')) opcion_prioridad = tk.StringVar(frame2, value = xstr(k[6])) nueva_prioridad = tk.OptionMenu(frame2, opcion_prioridad, *prioridad) nueva_prioridad.grid(row=4, column=1, sticky="w") # Tipo tk.Label(frame2, text = 'Tipo: ' , font=("", 13, 'bold'),justify="left").grid(row = 5, column = 0,sticky="e") tipo = list(RunQuery('SELECT TACT_TIPO FROM TIPO_ACTIVIDAD')) opcion_tipo = tk.StringVar(frame2, value = k[7]) nueva_tipo = tk.OptionMenu(frame2, opcion_tipo, *tipo) nueva_tipo.grid(row=5, column=1, sticky="w") a = tk.Button(ventana, text="Modificar actividad", command = lambda: ModificarActividad(app, contenido,ventana, (nueva_descripcion.get(),nueva_fecha.get(),opcion_prioridad.get(), opcion_tipo.get(),k[8],k[9]), k), relief = tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=30, y=510) a = tk.Button(ventana, text="Cancelar", command = ventana.destroy, relief = tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=280,y=510)
def Recomendar(tipo_r): if tipo_r == "estudios": query_promedio_notas = ''' SELECT ROUND(AVG(NOT_VAL),1) FROM NOTA, ASIGNATURA WHERE ASI_ID = NOT_ID_ASI AND ASI_EST = 1 ''' list_prom = list(RunQuery(query_promedio_notas)) promedio_notas = list_prom[0][0] if promedio_notas != None: if promedio_notas < 4.0: tipoconsejo = "recomendacionAlerta" elif promedio_notas >= 5.0: tipoconsejo = "recomendacionBuena" else: tipoconsejo = "recomendacionMedia" query_recomendacion = ''' SELECT CON_DESC FROM CONSEJO WHERE CON_TIPO = "''' + tipoconsejo + '''" ORDER BY RANDOM() LIMIT 1; ''' list_recomendacion = list(RunQuery(query_recomendacion)) recomendacion = list_recomendacion[0][0] else: recomendacion = "" else: query_cantidad_evaluaciones = ''' SELECT COUNT(ACT_ID) FROM ACTIVIDAD, ASIGNATURA WHERE strftime('%W', ACT_FECHA) = strftime('%W',DATE('now')) AND strftime('%Y', ACT_FECHA) = strftime('%Y',DATE('now')) AND ACT_ID_ASI = ASI_ID AND ASI_EST = '1' AND ACT_TIPO = 'evaluativa' ''' list_cantidad_evaluaciones = list( RunQuery(query_cantidad_evaluaciones)) cantidad_evaluaciones = list_cantidad_evaluaciones[0][0] if cantidad_evaluaciones == 0: recomendacion = "Esta semana no tienes evaluaciones, no te vendria mal un descanso." elif cantidad_evaluaciones < 3: recomendacion = "Esta semana tienes algunas evaluaciones, seria bueno estar preparado." else: recomendacion = "Esta semana tienes muchas evaluaciones, preparate y estudia." return recomendacion # # FIN MODULOS QUE SON PARTE DEL DES ##
def MostrarAsignatura(app, contenido): EliminarBotones(buttons) EliminarBotones(buttons_ventana) EliminarVentanas(ventanas) b = tk.Button(contenido, text="Agregar Asignatura", command=lambda: IngresarCrearAsignatura(app, contenido), relief=tk.SOLID, font=("", 13, 'bold'), bd=1, padx=0) b.place(x=80, y=420) b["bg"] = "#fbf8be" b["activebackground"] = "#e3e0ac" buttons.append(b) b = tk.Button(contenido, text="Eliminar Asignatura", command=lambda: MostrarEliminarAsignatura(app, contenido), relief=tk.SOLID, font=("", 13, 'bold'), bd=1, padx=0) b.place(x=80, y=480) b["bg"] = "#fbf8be" b["activebackground"] = "#e3e0ac" buttons.append(b) b = tk.Button(contenido, text="Modificar Asignatura", command=lambda: MostrarModificarAsignatura(app, contenido), relief=tk.SOLID, font=("", 13, 'bold'), bd=1, padx=0) b.place(x=350, y=420) b["bg"] = "#fbf8be" b["activebackground"] = "#e3e0ac" buttons.append(b) b = tk.Button(contenido, text="Cambiar Estado", command=lambda: MostrarCambiarEstado(app, contenido), relief=tk.SOLID, font=("", 13, 'bold'), bd=1, padx=0) b.place(x=360, y=480) b["bg"] = "#fbf8be" b["activebackground"] = "#e3e0ac" buttons.append(b) container = tk.Frame(contenido) canvas = tk.Canvas(container, width=490, height=300) scrollbar = tk.Scrollbar(container, orient="vertical", command=canvas.yview) scrollable_frame = tk.Frame(canvas, relief=tk.GROOVE) scrollable_frame.bind( "<Configure>", lambda e: canvas.configure(scrollregion=canvas.bbox("all"))) canvas.create_window((0, 0), window=scrollable_frame, anchor="nw") canvas.configure(yscrollcommand=scrollbar.set) container.place(x=40, y=80) canvas.pack(side="left", fill="both") scrollbar.pack(side="right", fill="y") #Asignatura asig_list = list( RunQuery("SELECT ASI_NOM FROM ASIGNATURA WHERE ASI_EST ='1'")) if asig_list != []: asig = ['{}'.format(*opcion) for opcion in asig_list] opcion_asig = tk.StringVar( contenido, value=asig[0] ) # ¿Que pasa si el nombre de la asignatura es muy largo? nueva_asig = tk.OptionMenu(contenido, opcion_asig, *asig) nueva_asig.config(font=("", 13, 'bold')) nueva_asig["highlightthickness"] = 0 nueva_asig.place(x=40, y=25) buttons.append(nueva_asig) b = tk.Button(contenido, text="Seleccionar", command=lambda: DatosAsignatura(scrollable_frame, opcion_asig.get()), relief=tk.SOLID, font=("", 13, 'bold'), bd=1, padx=0) b.place(x=400, y=25) b["bg"] = "#fbf8be" b["activebackground"] = "#e3e0ac" buttons.append(b) else: b = tk.Label(scrollable_frame, text="Actualmente no hay asignaturas activas.", font=("", 14, 'bold'), justify="left") b.grid(row=0, column=0, sticky="w") buttons.append(b) buttons.append(container) buttons.append(canvas) buttons.append(scrollbar) buttons.append(scrollable_frame)
def GenerarCalendario(): query = "SELECT DIA_NOMBRE as dia, strftime('%d', ACT_FECHA) as dia_mes, strftime('%m',ACT_FECHA) as mes, strftime('%Y',ACT_FECHA) as anyo, ASI_NOM, ACT_DESC, ACT_PRI, ACT_TIPO, ACT_ID,ACT_ID_ASI FROM ACTIVIDAD, ASIGNATURA, DIA WHERE ACT_FECHA >= date('now') AND ACT_ID_ASI = ASI_ID AND strftime('%w', ACT_FECHA) = DIA_ID AND ASI_EST = '1' ORDER BY ACT_FECHA" rows = RunQuery(query) rows_list = list(rows) return rows_list
def IngresarBloque(app, contenido): asignaturas = list( RunQuery("SELECT ASI_ID, ASI_NOM FROM ASIGNATURA WHERE ASI_EST ='1'")) if asignaturas != []: EliminarVentanas(ventanas) EliminarBotones(buttons_ventana) ventana = tk.Toplevel(app, bg="#D4E6F1") ventana.title("Crear Bloque") ventana.geometry("800x500") ventana.resizable(False, False) ventana.iconbitmap(ICON) ventana.focus() # Lista Asignaturas b = tk.Label(ventana, text=' Selecciona la asignatura del bloque a crear:', font=("", 15, 'bold'), justify="left") b.place(x=30, y=30) lista = tk.Listbox(ventana, height=11, width=81, font=("", 12, ""), bg='SystemButtonFace') lista.place(x=30, y=85) for k in range(len(asignaturas) - 1, -1, -1): i = asignaturas[k] lista.insert(0, ' ' + i[1]) # Lista Dia Semana b = tk.Label(ventana, text='Dia de la semana: ', font=("", 13, 'bold'), justify="left") b.place(x=30, y=320) dia_list = list( RunQuery("SELECT DIA_NOMBRE FROM DIA WHERE DIA_ID >'0'")) dia = ['{}'.format(*opcion) for opcion in dia_list] opcion_dia = tk.StringVar(ventana, value='') nuevo_dia = tk.OptionMenu(ventana, opcion_dia, *dia) nuevo_dia.place(x=185, y=318) # Lista hora b = tk.Label(ventana, text='Hora: ', font=("", 13, 'bold'), justify="left") b.place(x=30, y=370) hora = list(RunQuery("SELECT BL_ID, BL_INI, BL_FIN FROM TIPO_BLOQUE")) hora_list = [] for k in hora: hora_list.append([k[1], k[2]]) opcion_hora = tk.StringVar(ventana, value='') nuevo_hora = tk.OptionMenu(ventana, opcion_hora, *hora_list) nuevo_hora.place(x=90, y=368) a = tk.Button(ventana, text="Crear Bloque", command=lambda: Crearbloque(app, contenido, ventana, ( lista.curselection(), opcion_dia.get(), opcion_hora.get()), asignaturas, hora), relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=30, y=422) buttons_ventana.append(a) a = tk.Button(ventana, text="Cancelar", command=ventana.destroy, relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=200, y=422) ventanas.append(ventana) ventana.mainloop() else: messagebox.showinfo( message="No existen asignaturas activas / creadas.", title="Mind your Study", parent=app) return
def MostrarEliminarBloque(app, contenido): rows = list(RunQuery("SELECT * FROM BLOQUE ORDER BY BL_DIA_SEM")) if rows != []: asig_list = list( RunQuery( "SELECT ASI_ID, ASI_NOM FROM ASIGNATURA WHERE ASI_EST = '1'")) bl_list = list( RunQuery("SELECT BL_ID, BL_INI FROM TIPO_BLOQUE ORDER BY BL_INI")) EliminarBotones(buttons_ventana) EliminarVentanas(ventanas) ventana = tk.Toplevel(app, bg="#D4E6F1") ventana.title("Eliminar Bloque") ventana.geometry("800x580") ventana.resizable(False, False) ventana.iconbitmap(ICON) ventana.focus() b = tk.Label(ventana, text="Selecciona el bloque a eliminar:", font=("", 20, 'bold'), justify="left") b.place(x=30, y=30) lista = tk.Listbox(ventana, height=20, width=81, font=("", 13, ""), bg='SystemButtonFace') lista.place(x=30, y=85) for k in range(len(rows) - 1, -1, -1): i = rows[k] for asig in asig_list: if i[1] == asig[0]: asignatura = asig[1] for bl in bl_list: if i[0] == bl[0]: hora = bl[1] lista.insert(0, i[2] + ' a las ' + hora + ': ' + asignatura) a = tk.Button(ventana, text="Seleccionar", command=lambda: EliminarBloque( app, contenido, ventana, rows, lista.curselection()), relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=30, y=500) a = tk.Button( ventana, text="Borrar todo", command=lambda: EliminarTodoBloques(app, contenido, ventana, rows), relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=195, y=500) a = tk.Button(ventana, text="Cancelar", command=ventana.destroy, relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=355, y=500) buttons_ventana.append(b) buttons_ventana.append(lista) buttons_ventana.append(a) ventanas.append(ventana) ventana.mainloop() else: messagebox.showinfo(message="No existen bloques actualmente.", title="Mind your Study", parent=app) return
def IngresarModificarNota( app, contenido, ventana, seleccion, rows): # Hay que eliminar los label y entry usados en esta funcion try: rows[seleccion[0]] except IndexError: messagebox.showinfo(message="Debes seleccionar una nota.", title="Mind your Study", parent=ventana) return EliminarBotones(buttons_ventana) ventana.geometry("800x450") k = rows[seleccion[0]] container = tk.Frame(ventana) canvas = tk.Canvas(container, width=490, height=150) scrollbar = tk.Scrollbar(container, orient="horizontal", command=canvas.xview) scrollable_frame = tk.Frame(canvas, relief=tk.GROOVE) scrollable_frame.bind( "<Configure>", lambda e: canvas.configure(scrollregion=canvas.bbox("all"))) canvas.create_window((0, 0), window=scrollable_frame, anchor="nw") canvas.configure(xscrollcommand=scrollbar.set) tk.Label( scrollable_frame, text='Has seleccionado una nota con los siguientes datos: \n', font=("", 15, 'bold'), justify="center", ).grid(row=0, column=0, columnspan=7, sticky="w") # Asignatura tk.Label(scrollable_frame, text='Asignatura: ' + k[2], font=("", 13, 'bold'), justify="left").grid(row=1, column=0, sticky="w") # Tipo nota antiguo tk.Label(scrollable_frame, text='Tipo nota: ' + k[3], font=("", 13, 'bold'), justify="left").grid(row=2, column=0, sticky="w") # Valor nota antiguo tk.Label(scrollable_frame, text='Valor nota: ' + str(k[4]), font=("", 13, 'bold'), justify="left").grid(row=3, column=0, sticky="w") container.grid(row=1, column=0, padx=29, pady=25, ipadx=125) canvas.pack(side="top", fill="x") scrollbar.pack(side="bottom", fill="x") frame2 = tk.Frame(ventana) frame2.grid(row=3, column=0, padx=29, sticky="we") tk.Label( frame2, text='Ingrese los datos que desee modificar: \n', font=("", 15, 'bold'), justify="center", ).grid(row=0, column=0, columnspan=7, sticky="w") # Asignatura tk.Label(frame2, text='Asignatura: ', font=("", 13, 'bold'), justify="left").grid(row=1, column=0, sticky="e") tk.Entry(frame2, textvariable=tk.StringVar(frame2, value=k[2]), state='readonly').grid(row=1, column=1, columnspan=3, ipadx=120) # Valor nota b = tk.Label(frame2, text='Nota: ', font=("", 12, 'bold'), justify="left") b.grid(row=2, column=0, sticky="e") valor_nota = tk.Entry(frame2, font=('', 12, '')) valor_nota.grid(row=2, column=1, sticky="nw") # Tipo nota b = tk.Label(frame2, text='Tipo Nota: ', font=("", 12, 'bold'), justify="left") b.grid(row=3, column=0, sticky="e") tipo_nota = list(RunQuery("SELECT TNOT_NOM FROM TIPO_NOTA")) opcion_tipo_nota = tk.StringVar(frame2, value=k[3]) nuevo_tipo_nota = tk.OptionMenu(frame2, opcion_tipo_nota, *tipo_nota) nuevo_tipo_nota.grid(row=3, column=1, sticky="nw") a = tk.Button(ventana, text="Modificar nota", command=lambda: ModificarNota(app, contenido, ventana, (k[1], opcion_tipo_nota.get(), valor_nota.get(), k[0]), k), relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=29, y=385) a = tk.Button(ventana, text="Cancelar", command=ventana.destroy, relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=219, y=385)
def MostrarCambiarEstado(app, contenido): rows = list(RunQuery("SELECT * FROM ASIGNATURA")) if rows != []: EliminarVentanas(ventanas) ventana = tk.Toplevel(app, bg="#D4E6F1") ventana.title("Cambiar estado") ventana.geometry("800x520") ventana.resizable(False, False) ventana.iconbitmap(ICON) ventana.focus() b = tk.Label( ventana, text="Selecciona la asignatura para cambiar su estado actual:", font=("", 17, 'bold'), justify="left") b.place(x=30, y=30) lista = tk.Listbox(ventana, height=16, width=81, font=("", 13, ""), bg='SystemButtonFace') lista.place(x=30, y=85) for k in range(len(rows) - 1, -1, -1): i = rows[k] if (i[5] == 1): lista.insert(0, ' ' + i[1] + ': ACTIVA') else: lista.insert(0, ' ' + i[1] + ': NO ACTIVA') a = tk.Button(ventana, text="Seleccionar", command=lambda: CambiarEstado( app, contenido, ventana, rows, lista.curselection()), relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=30, y=435) a = tk.Button(ventana, text="Cancelar", command=ventana.destroy, relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=190, y=435) ventanas.append(ventana) ventana.mainloop() else: messagebox.showinfo( message="No existen asignaturas para cambiar su estado.", title="Mind your Study", parent=app) return
def MostrarEliminarNota(app, contenido): rows = list( RunQuery( "SELECT NOT_ID, ASI_NOM, NOT_TIPO, NOT_VAL FROM NOTA, ASIGNATURA WHERE NOT_ID_ASI = ASI_ID AND ASI_EST = 1 ORDER BY NOT_ID_ASI, NOT_TIPO" )) if rows != []: EliminarBotones(buttons_ventana) EliminarVentanas(ventanas) ventana = tk.Toplevel(app, bg="#D4E6F1") ventana.title("Eliminar nota") ventana.geometry("800x520") ventana.resizable(False, False) ventana.iconbitmap(ICON) ventana.focus() b = tk.Label(ventana, text="Selecciona la nota a eliminar:", font=("", 20, 'bold'), justify="left") b.place(x=30, y=30) lista = tk.Listbox(ventana, height=17, width=81, font=("", 13, ""), bg='SystemButtonFace') lista.place(x=30, y=80) for k in range(len(rows) - 1, -1, -1): i = rows[k] lista.insert(0, ' ' + i[1] + '. ' + i[2] + ': ' + str(i[3])) a = tk.Button(ventana, text="Seleccionar", command=lambda: EliminarNota(app, contenido, ventana, rows, lista.curselection()), relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=0) a.place(x=30, y=445) a = tk.Button( ventana, text="Borrar todo", command=lambda: EliminarTodoNotas(app, contenido, ventana, rows), relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=190, y=445) a = tk.Button(ventana, text="Cancelar", command=ventana.destroy, relief=tk.SOLID, font=("", 17, 'bold'), bd=1, padx=10) a.place(x=375, y=445) buttons_ventana.append(b) buttons_ventana.append(lista) buttons_ventana.append(a) ventanas.append(ventana) ventana.mainloop() else: messagebox.showinfo(message="No existen Notas que eliminar.", title="Mind your Study", parent=app) return
def ResumirActividades(opcionA, tiempo): # Es posible ahorrar lineas if opcionA == 'Realizadas': if tiempo == 'Semanal': query = """ SELECT DIA_NOMBRE as dia, strftime('%d', ACT_FECHA) as dia_mes, strftime('%m',ACT_FECHA) as mes, strftime('%Y',ACT_FECHA) as anyo, ASI_NOM, ACT_DESC, ACT_PRI, ACT_TIPO FROM ACTIVIDAD, ASIGNATURA, DIA WHERE strftime('%W',ACT_FECHA) = strftime('%W',DATE('now')) AND mes = strftime('%m',DATE('now')) AND anyo = strftime('%Y',DATE('now')) AND ACT_FECHA <= DATE('now') AND ACT_ID_ASI = ASI_ID AND strftime('%w', ACT_FECHA) = DIA_ID ORDER BY ACT_FECHA""" else: query = """ SELECT DIA_NOMBRE as dia, strftime('%d', ACT_FECHA) as dia_mes, strftime('%m',ACT_FECHA) as mes, strftime('%Y',ACT_FECHA) as anyo, ASI_NOM, ACT_DESC, ACT_PRI, ACT_TIPO FROM ACTIVIDAD, ASIGNATURA, DIA WHERE mes = strftime('%m',DATE('now')) AND anyo = strftime('%Y',DATE('now')) AND ACT_FECHA <= DATE('now') AND ACT_ID_ASI = ASI_ID AND strftime('%w', ACT_FECHA) = DIA_ID ORDER BY ACT_FECHA""" elif opcionA == 'Pendientes': if tiempo == 'Semanal': query = """ SELECT DIA_NOMBRE as dia, strftime('%d', ACT_FECHA) as dia_mes, strftime('%m',ACT_FECHA) as mes, strftime('%Y',ACT_FECHA) as anyo, ASI_NOM, ACT_DESC, ACT_PRI, ACT_TIPO FROM ACTIVIDAD, ASIGNATURA, DIA WHERE strftime('%W',ACT_FECHA) = strftime('%W',DATE('now')) AND mes = strftime('%m',DATE('now')) AND anyo = strftime('%Y',DATE('now')) AND ACT_FECHA > DATE('now') AND ACT_ID_ASI = ASI_ID AND strftime('%w', ACT_FECHA) = DIA_ID ORDER BY ACT_FECHA""" else: query = """ SELECT DIA_NOMBRE as dia, strftime('%d', ACT_FECHA) as dia_mes, strftime('%m',ACT_FECHA) as mes, strftime('%Y',ACT_FECHA) as anyo, ASI_NOM, ACT_DESC, ACT_PRI, ACT_TIPO FROM ACTIVIDAD, ASIGNATURA, DIA WHERE mes = strftime('%m',DATE('now')) AND anyo = strftime('%Y',DATE('now')) AND ACT_FECHA > DATE('now') AND ACT_ID_ASI = ASI_ID AND strftime('%w', ACT_FECHA) = DIA_ID ORDER BY ACT_FECHA""" else: if tiempo == 'Semanal': query = """ SELECT DIA_NOMBRE as dia, strftime('%d', ACT_FECHA) as dia_mes, strftime('%m',ACT_FECHA) as mes, strftime('%Y',ACT_FECHA) as anyo, ASI_NOM, ACT_DESC, ACT_PRI, ACT_TIPO FROM ACTIVIDAD, ASIGNATURA, DIA WHERE strftime('%W',ACT_FECHA) = strftime('%W',DATE('now')) AND mes = strftime('%m',DATE('now')) AND anyo = strftime('%Y',DATE('now')) AND ACT_ID_ASI = ASI_ID AND strftime('%w', ACT_FECHA) = DIA_ID ORDER BY ACT_FECHA""" else: query = """ SELECT DIA_NOMBRE as dia, strftime('%d', ACT_FECHA) as dia_mes, strftime('%m',ACT_FECHA) as mes, strftime('%Y',ACT_FECHA) as anyo, ASI_NOM, ACT_DESC, ACT_PRI, ACT_TIPO FROM ACTIVIDAD, ASIGNATURA, DIA WHERE mes = strftime('%m',DATE('now')) AND anyo = strftime('%Y',DATE('now')) AND ACT_ID_ASI = ASI_ID AND strftime('%w', ACT_FECHA) = DIA_ID ORDER BY ACT_FECHA""" rows = RunQuery(query) rows_list = list(rows) return rows_list