예제 #1
0
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
예제 #2
0
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()
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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]
예제 #9
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
예제 #10
0
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  
예제 #11
0
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)
예제 #12
0
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) 
예제 #13
0
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 #
예제 #14
0
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
예제 #15
0
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)
예제 #16
0
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
예제 #17
0
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)
예제 #18
0
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()
예제 #19
0
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)
예제 #20
0
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 ##
예제 #21
0
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)
예제 #22
0
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
예제 #23
0
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
예제 #24
0
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
예제 #25
0
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)
예제 #26
0
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
예제 #27
0
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
예제 #28
0
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