Exemple #1
0
    def update(self, event):
        if event["codigo"] == 12:
            resposta = self._messager.question(
                None, "Salvar", "Deseja realmente DELETAR esse FLASHCARD?",
                self._messager.Yes, self._messager.No)

            if resposta == self._messager.Yes:
                indice = self._stack_telas.screens[
                    6].flashcards_lista.currentRow()

                if indice > -1:
                    titulo = self._stack_telas.screens[
                        6].flashcards_lista.takeItem(indice).text()

                    conexao, cursor = abrir_banco_de_dados()

                    lista_grupo = apply_sql_command(
                        cursor,
                        "SELECT id FROM Grupos WHERE titulo='%s'" % (titulo),
                        "fetchall")
                    id_grupo = lista_grupo[0][0]

                    apply_sql_command(
                        cursor, "DELETE FROM Flashcards WHERE id_grupo=%s" %
                        (id_grupo))
                    apply_sql_command(
                        cursor,
                        "DELETE FROM Datas WHERE id_grupo=%s" % (id_grupo))
                    apply_sql_command(
                        cursor, "DELETE FROM Grupos WHERE id=%s" % (id_grupo))

                    fechar_banco_de_dados(conexao)
    def update(self, event):
        if event["codigo"] in (33, 35):
            self._stack_telas.screens[9].clear()
            self._stack_telas.open_screen(9)

            conexao, cursor = abrir_banco_de_dados()

            lista_historico = apply_sql_command(
                cursor,
                "SELECT data, (100*SUM(state))/COUNT(data) FROM Historicos GROUP BY data ORDER BY id DESC",
                retorno="fetchall")

            self._stack_telas.screens[9].tabela_historico.setRowCount(
                len(lista_historico))
            self._stack_telas.screens[
                9].tabela_historico.setHorizontalHeaderLabels(
                    ["Data", "Porcentagem de conclusão"])

            fechar_banco_de_dados(conexao)

            indice_linha = 0
            for tupla_valores in lista_historico:
                self._stack_telas.screens[9].adicionarItemTabela(
                    indice_linha, tupla_valores)

                indice_linha += 1
Exemple #3
0
def create_database():
    conexao, cursor = abrir_banco_de_dados()

    sql_command = """CREATE TABLE IF NOT EXISTS Grupos(
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                titulo TEXT NOT NULL
            );"""
    apply_sql_command(cursor, sql_command)

    sql_command = """CREATE TABLE IF NOT EXISTS Flashcards(
                id INTEGER PRIMARY KEY AUTOINCREMENT, 
                pergunta TEXT NOT NULL, 
                resposta TEXT NOT NULL,
                id_grupo INTEGER NOT NULL,
                CONSTRAINT fk_grupo FOREIGN KEY (id_grupo) REFERENCES Grupos (id)
            );"""
    apply_sql_command(cursor, sql_command)

    sql_command = """CREATE TABLE IF NOT EXISTS Datas(
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                data INTEGER NOT NULL, 
                id_grupo INTEGER NOT NULL,
                CONSTRAINT fk_grupo FOREIGN KEY (id_grupo) REFERENCES Grupos (id)
            );"""
    apply_sql_command(cursor, sql_command)

    sql_command = """CREATE TABLE IF NOT EXISTS Dias(
                dia TEXT PRIMARY KEY UNIQUE NOT NULL
            );"""
    apply_sql_command(cursor, sql_command)

    try:
        apply_sql_command(
            cursor,
            "INSERT INTO Dias (dia) VALUES ('segunda'), ('terça'), ('quarta'), ('quinta'), ('sexta'), ('sabado'), ('domingo')"
        )
    except:
        pass

    sql_command = """CREATE TABLE IF NOT EXISTS Atividades(
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                atividade TEXT NOT NULL,
                dia TEXT NOT NULL,
                CONSTRAINT fk_dia FOREIGN KEY (dia) REFERENCES Dias (dia)
            );"""
    apply_sql_command(cursor, sql_command)

    sql_command = """CREATE TABLE IF NOT EXISTS Historicos(
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                atividade TEXT NOT NULL,
                data DATE NOT NULL,
                state BOOL NOT NULL
            );"""
    apply_sql_command(cursor, sql_command)

    fechar_banco_de_dados(conexao)
Exemple #4
0
    def update(self, event):
        if event["codigo"] == 31:
            conexao, cursor = abrir_banco_de_dados()

            for i in range(
                    0, self._stack_telas.screens[8].atividades_listwidget.
                    count()):
                item = self._stack_telas.screens[8].atividades_listwidget.item(
                    i)

                atividade = item.text()
                estado = item.checkState() > 0
                data = hojeFormatado()

                apply_sql_command(
                    cursor,
                    "UPDATE Historicos SET state=%s WHERE atividade='%s' AND data='%s'"
                    % (estado, atividade, data),
                    retorno="fetchall")

            fechar_banco_de_dados(conexao)

        if event["codigo"] == 36:
            conexao, cursor = abrir_banco_de_dados()

            for i in range(
                    0, self._stack_telas.screens[10].tabela_editar.rowCount()):
                atividade = self._stack_telas.screens[10].tabela_editar.item(
                    i, 0).text()
                estado = self._stack_telas.screens[10].tabela_editar.item(
                    i, 1).text()
                data = dataFormatada(
                    self._stack_telas.screens[10].data_label.text())

                apply_sql_command(
                    cursor,
                    "UPDATE Historicos SET state=%s WHERE atividade='%s' AND data='%s'"
                    % (estado, atividade, data),
                    retorno="fetchall")

            fechar_banco_de_dados(conexao)

            self._abrir_tela_editar_historico.update({
                "codigo":
                34,
                "descricao":
                "Atualizar porcentagem da tela EDITAR HISTÓRICO"
            })  # FORÇANDO ABERTURA DA TELA VER DIA
Exemple #5
0
    def update(self, event):
        if event["codigo"] == 2:
            self._stack_telas.screens[6].clear()
            self._stack_telas.open_screen(6)

            conexao, cursor = abrir_banco_de_dados()

            lista_grupos_flashcards = apply_sql_command(
                cursor, "SELECT titulo FROM Grupos", retorno="fetchall")

            fechar_banco_de_dados(conexao)

            for tupla in lista_grupos_flashcards:
                titulo = tupla[0]

                self._stack_telas.screens[6].flashcards_lista.addItem(titulo)
Exemple #6
0
    def update(self, event):
        if event["codigo"] == 25:
            self._stack_telas.screens[7].clear()
            self._stack_telas.open_screen(7)


            conexao, cursor = abrir_banco_de_dados()


            listas_dias = apply_sql_command(cursor, "SELECT dia FROM Dias", retorno="fetchall")


            fechar_banco_de_dados(conexao)


            for lista_dia in listas_dias: 
                dia = lista_dia[0]
                self._stack_telas.screens[7].dias_box.addItem(dia.title())

            self._stack_telas.screens[7].dias_box.setCurrentIndex(dia_da_semana_indice())
    def update(self, event):
        if event["codigo"] == 24:
            self._stack_telas.screens[8].clear()
            self._stack_telas.open_screen(8)

            hoje_formatado = hojeFormatado()
            dia = dia_da_semana()
            self._stack_telas.screens[8].atividades.setText(dia.upper())

            conexao, cursor = abrir_banco_de_dados()

            listas_atividades = apply_sql_command(
                cursor,
                "SELECT atividade FROM Atividades WHERE dia='%s'" % (dia),
                retorno="fetchall")
            for lista_atividade in listas_atividades:
                atividade = lista_atividade[0]
                estado = 0  # False

                lista_historicos = apply_sql_command(
                    cursor,
                    "SELECT state FROM Historicos WHERE atividade='%s' AND data='%s'"
                    % (atividade, hoje_formatado),
                    retorno="fetchall")

                if not lista_historicos:
                    apply_sql_command(
                        cursor,
                        "INSERT INTO Historicos (atividade, data, state) VALUES ('%s', '%s', 0)"
                        % (atividade, hoje_formatado))
                else:
                    estado = lista_historicos[0][0]

                self._stack_telas.screens[8].adicionarCheckBox(
                    atividade, estado)

            fechar_banco_de_dados(conexao)
Exemple #8
0
    def update(self, event):
        if event["codigo"] == 34:
            self._stack_telas.screens[10].clear()
            self._stack_telas.open_screen(10)

            indice = self._stack_telas.screens[9].tabela_historico.currentRow()
            data = self._stack_telas.screens[9].tabela_historico.item(indice, 0).text()

            self._stack_telas.screens[10].data_label.setText(data)
            self._stack_telas.screens[10].dia_label.setText(diaDaSemanaData(data).upper())

            data = data.split('/')
            data = data[2] + '-' + data[1] + '-' + data[0]

            conexao, cursor = abrir_banco_de_dados()


            lista_historico = apply_sql_command(cursor, "SELECT atividade, state FROM Historicos WHERE data='%s'" % (data), retorno="fetchall")


            fechar_banco_de_dados(conexao)


            lista_state = [value[1] for value in lista_historico]
            porcentagem = int(100 * (sum(lista_state) / len(lista_state)))
            self._stack_telas.screens[10].porcentagem_barra_progresso.setValue(porcentagem)


            self._stack_telas.screens[10].tabela_editar.setRowCount(len(lista_historico)) 
            self._stack_telas.screens[10].tabela_editar.setHorizontalHeaderLabels(["Atividade", "Estado"])

            indice_linha = 0
            for tupla_valores in lista_historico:
                self._stack_telas.screens[10].adicionarItemTabela(indice_linha, tupla_valores)

                indice_linha += 1
    def update(self, event):
        if event["codigo"] == 27:
            dia = self._stack_telas.screens[7].dias_box.currentText().lower()
            atividades = self._stack_telas.screens[7].atividade_line.text()

            lista_atividades = atividades.split(',')

            conexao, cursor = abrir_banco_de_dados()


            for atividade in lista_atividades:
                self._stack_telas.screens[7].atividades_listwidget.addItem(atividade)

                apply_sql_command(cursor, "INSERT INTO Atividades (atividade, dia) VALUES ('%s', '%s')" % (atividade, dia))
            

            fechar_banco_de_dados(conexao)


        if event["codigo"] == 28:
            dia = self._stack_telas.screens[7].dias_box.currentText().lower()
            atividade = self._stack_telas.screens[7].atividades_listwidget.takeItem(self._stack_telas.screens[7].atividades_listwidget.currentRow()).text()
            

            conexao, cursor = abrir_banco_de_dados()


            apply_sql_command(cursor, "DELETE FROM Atividades WHERE atividade='%s' AND dia='%s'" % (atividade, dia))
            print("DELETE FROM Atividades WHERE atividade='%s' AND dia='%s'" % (atividade, dia))

            fechar_banco_de_dados(conexao)


        if event["codigo"] == 29:
            dia = self._stack_telas.screens[7].dias_box.currentText().lower()
            self._stack_telas.screens[7].atividades_listwidget.clear()

            conexao, cursor = abrir_banco_de_dados()

            listas_atividades = apply_sql_command(cursor, "SELECT a.atividade FROM Atividades as a INNER JOIN Dias as d ON a.dia=d.dia WHERE d.dia='%s'" % (dia), retorno="fetchall")
            for lista_atividade in listas_atividades: 
                atividade = lista_atividade[0]
                self._stack_telas.screens[7].atividades_listwidget.addItem(atividade)


            fechar_banco_de_dados(conexao)
Exemple #10
0
    def update(self, event):
        if event["codigo"] in (4, 5):
            self._flashcards = []

            item = self._stack_telas.screens[1].revisoes_do_dia_lista.currentItem()
            if event["codigo"] == 4:
                item = self._stack_telas.screens[1].revisoes_atrasadas_lista.currentItem()
            titulo = item.text()  

            conexao, cursor = abrir_banco_de_dados()

            id_grupo = apply_sql_command(cursor, "SELECT id FROM Grupos WHERE titulo='%s'" % (titulo), "fetchall")
            self._id_grupo = id_grupo[0][0]

            id_data = apply_sql_command(cursor, "SELECT id FROM Datas WHERE id_grupo=%s ORDER BY data" % (self._id_grupo), "fetchall")
            self._id_data = id_data[0][0]

            lista_lashcards = apply_sql_command(cursor, "SELECT pergunta, resposta FROM Flashcards WHERE id_grupo='%s'" % (self._id_grupo), "fetchall")

            for tupla in lista_lashcards:
                pergunta = tupla[0]
                resposta = tupla[1]
                valor_para_ordenar = 0

                self._flashcards.append({"pergunta": pergunta, "resposta": resposta, "valor para ordenar": valor_para_ordenar})


            fechar_banco_de_dados(conexao)


        if event["codigo"] == 13:
            self._indice_flashcard = 0
            self._ciclo = 1
            self._stack_telas.screens[3].ciclo_line.setText(str(self._ciclo))
            self._max_ciclos = self._stack_telas.screens[4].qtd_ciclos_spinbox.value()

            self._modo = 1
            if self._stack_telas.screens[4].ordenar_flashcards_radiobutton.isChecked():
                self._modo = 0

            self._stack_telas.screens[3].texto.setText(self._flashcards[self._indice_flashcard]["pergunta"])

            
        if event["codigo"] in (15, 16):
            pergunta_ou_resposta = self._stack_telas.screens[3].pergunta_ou_resposta.text()

            if pergunta_ou_resposta == "Pergunta":
                self._stack_telas.screens[3].pergunta_ou_resposta.setText("Resposta")
                self._stack_telas.screens[3].texto.setText(self._flashcards[self._indice_flashcard]["resposta"])
            else:
                self._stack_telas.screens[3].pergunta_ou_resposta.setText("Pergunta")
                self._stack_telas.screens[3].texto.setText(self._flashcards[self._indice_flashcard]["pergunta"])
        

        if event["codigo"] in (17, 18):
            modo_ordenar = 0

            if event["codigo"] == 17:
                if self._modo == modo_ordenar:
                    self._flashcards[self._indice_flashcard]["valor para ordenar"] += 1
                else:
                    del self._flashcards[self._indice_flashcard]
                    self._indice_flashcard -= 1
            elif self._modo == modo_ordenar:
                self._flashcards[self._indice_flashcard]["valor para ordenar"] -= 1 


            self._indice_flashcard += 1

            if self._indice_flashcard >= len(self._flashcards):
                self._indice_flashcard = 0
                self._ciclo += 1

                if self._modo == modo_ordenar:
                    self._flashcards = sorted(self._flashcards, key=lambda flashcards: flashcards["valor para ordenar"]) 


            if (self._ciclo > self._max_ciclos) or (len(self._flashcards) <= 0):
                conexao, cursor = abrir_banco_de_dados()

                apply_sql_command(cursor,"DELETE FROM Datas WHERE id=%s" % (self._id_data))

                fechar_banco_de_dados(conexao)


                self._abrir_tela_ver_dia.update({"codigo": 0, "descricao": "Fim da revisão de flashcards"}) # FORÇANDO ABERTURA DA TELA VER DIA
            else:
                self._stack_telas.screens[3].pergunta_ou_resposta.setText("Pergunta")
                self._stack_telas.screens[3].texto.setText(self._flashcards[self._indice_flashcard]["pergunta"])
                self._stack_telas.screens[3].ciclo_line.setText(str(self._ciclo))


        if event["codigo"] == 20:
            pergunta_ou_resposta = self._stack_telas.screens[3].pergunta_ou_resposta.text().lower()
            new_text = self._stack_telas.screens[3].texto.toPlainText()

            if new_text != self._flashcards[self._indice_flashcard][pergunta_ou_resposta]:
                conexao, cursor = abrir_banco_de_dados()


                apply_sql_command(cursor, "UPDATE Flashcards SET %s = '%s' WHERE %s='%s' AND id_grupo=%s" % (pergunta_ou_resposta, new_text, pergunta_ou_resposta, self._flashcards[self._indice_flashcard][pergunta_ou_resposta], self._id_grupo))
                self._flashcards[self._indice_flashcard][pergunta_ou_resposta] = new_text
                    

                fechar_banco_de_dados(conexao)
    def update(self, event):
        if event["codigo"] == 1:
            self._stack_telas.screens[2].clear()
            self._flashcard = {}

            arquivo = open('backup.txt', 'r')
            lista = arquivo.readlines()
            arquivo.close()

            for i in range(0, len(lista), 2):
                pergunta = lista[i]
                resposta = lista[i + 1]

                self._flashcard[pergunta] = resposta
                self._stack_telas.screens[2].flashcards_box.addItem(pergunta)

        if event["codigo"] == 8:
            self._datas = []

        if event["codigo"] == 6:
            pergunta = self._stack_telas.screens[2].pergunta_texto.toPlainText(
            )
            resposta = self._stack_telas.screens[2].resposta_texto.toPlainText(
            )

            if pergunta != "" and resposta != "":
                if pergunta not in self._flashcard:
                    arquivo = open('backup.txt', 'a')
                    arquivo.write(pergunta.replace("\n", " ") + "\n")
                    arquivo.write(resposta.replace("\n", " ") + "\n")
                    arquivo.close()

                    self._flashcard[pergunta] = resposta
                    self._stack_telas.screens[2].flashcards_box.addItem(
                        pergunta)
                else:
                    self._messager.information(None, "FLASHCARDS",
                                               "Você já criou essa pergunta")
            else:
                self._messager.information(None, "FLASHCARDS",
                                           "Campo(s) vazio(s)")

        if event["codigo"] == 7:
            pergunta = self._stack_telas.screens[2].flashcards_box.currentText(
            )
            indice = self._stack_telas.screens[2].flashcards_box.currentIndex()

            if pergunta:
                del self._flashcard[pergunta]
                self._stack_telas.screens[2].flashcards_box.removeItem(indice)

        if event["codigo"] == 21:
            data_selecionada = self._stack_telas.screens[
                5].calendario_widget.selectedDate()

            ano = data_selecionada.year()
            mes = data_selecionada.month()
            dia = data_selecionada.day()

            data_inteiro = data(ano, mes, dia)

            if data_inteiro not in self._datas:
                self._datas.append(data_inteiro)
                self._stack_telas.screens[5].datas_listwidget.addItem(
                    str(dia) + "/" + str(mes) + "/" + str(ano))

        if event["codigo"] == 22:
            indice_data_selected = self._stack_telas.screens[
                5].datas_listwidget.currentRow()

            if indice_data_selected > -1:
                del self._datas[indice_data_selected]
                self._stack_telas.screens[5].datas_listwidget.takeItem(
                    indice_data_selected)

        if event["codigo"] == 23:
            if len(self._datas) > 0:
                conexao, cursor = abrir_banco_de_dados()

                titulo = self._stack_telas.screens[2].titulo_line.text()

                lista_titulos = apply_sql_command(
                    cursor,
                    "SELECT 1 FROM Grupos WHERE substr(titulo, 1, %s)='%s'" %
                    (len(titulo), titulo), "fetchall")
                if lista_titulos:
                    titulo += "({})".format(len(lista_titulos))

                id_grupo = apply_sql_command(
                    cursor,
                    "INSERT INTO Grupos (titulo) VALUES ('%s')" % (titulo),
                    "lastrowid")

                for data_ in self._datas:
                    apply_sql_command(
                        cursor,
                        "INSERT INTO Datas (data, id_grupo) VALUES (%s, %s)" %
                        (data_, id_grupo))

                for pergunta, resposta in self._flashcard.items():
                    apply_sql_command(
                        cursor,
                        "INSERT INTO Flashcards (pergunta, resposta, id_grupo) VALUES ('%s', '%s', %s)"
                        % (pergunta, resposta, id_grupo))

                fechar_banco_de_dados(conexao)

                copyfile(
                    "C:\\Users\\lucas\\OneDrive\\Área de Trabalho\\flashcards refatorado2\\model\\banco de dados.db",
                    "C:\\Users\\lucas\\OneDrive\\Área de Trabalho\\flashcards refatorado2\\backup\\banco de dados.db"
                )

                os.remove("backup.txt")

                self._stack_telas.open_screen(0)
            else:
                self._messager.information(None, "Datas",
                                           "Selecione ao menos 1 data")