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
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)
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
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)
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)
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)
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")