-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvisualizar_lista.py
98 lines (76 loc) · 3.26 KB
/
visualizar_lista.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from pathlib import Path
from utilitarios import (
cabecalho,
entrada_id,
informacao,
ler_tarefas,
menu_acoes,
selecionar_acao,
)
def visualizar(
acoes: list[str], nome_arquivo: str = "tarefas.csv", tamanho: int = 50
) -> None:
"""Imprime a lista de tarefas e a de ações, recebe uma ação escolhida em loop e a executa."""
cabecalho(texto="lista de tarefas", tamanho=tamanho)
if not Path.exists(Path.cwd() / nome_arquivo):
informacao(mensagem="nenhuma tarefa encontrada", tamanho=tamanho)
return
if len(ler_tarefas(nome_arquivo)) == 0:
Path.unlink(Path.cwd() / nome_arquivo)
informacao(mensagem="nenhuma tarefa encontrada", tamanho=tamanho)
return
imprimir(nome_arquivo, tamanho)
menu_acoes(acoes, tamanho)
while True:
acao_escolhida: int = selecionar_acao(acoes, tamanho)
match acao_escolhida:
case 1:
id: int = entrada_id(nome_arquivo, tamanho)
ver_detalhes(id, nome_arquivo, tamanho)
case 2:
return
case _:
informacao("ação não implementada", tamanho)
def imprimir(nome_arquivo: str = "tarefas.csv", tamanho: int = 50) -> None:
"""Imprime a lista de tarefas em formato personalizado."""
tarefas: list[dict[str, str]] = ler_tarefas(nome_arquivo)
print("=" * tamanho)
for indice, tarefa in enumerate(tarefas):
titulo_tarefa, descricao_tarefa, status = list(tarefa.values())
print(f"# {str(indice + 1):>2} | ", end="")
if len(titulo_tarefa) <= tamanho - 21:
print(f"{titulo_tarefa[: (tamanho - 21)]}", end="")
print(f"[ {status.upper():<9} ]".rjust(tamanho - len(titulo_tarefa) - 7))
else:
print(f"{titulo_tarefa[: (tamanho - 24)]}...", end="")
print(f"[ {status.upper():<9} ]".rjust(14))
print("-" * tamanho)
if len(descricao_tarefa) <= tamanho:
print(descricao_tarefa)
else:
print(f"{descricao_tarefa[: tamanho - 3]}...")
print("=" * tamanho)
def ver_detalhes(id: int, nome_arquivo: str = "tarefas.csv", tamanho: int = 50) -> None:
"""Imprime título, descrição e status completos de uma tarefa em formato personalizado."""
tarefas: list[dict[str, str]] = ler_tarefas(nome_arquivo)
titulo_tarefa, descricao_tarefa, status = list(tarefas[id - 1].values())
print("=" * tamanho)
print(f"# {str(id):>2} | ", end="")
if len(titulo_tarefa) <= tamanho - 21:
print(f"{titulo_tarefa[: (tamanho - 21)]}", end="")
print(f"[ {status.upper():<9} ]".rjust(tamanho - len(titulo_tarefa) - 7))
else:
print(f"{titulo_tarefa[: (tamanho - 21)]}", end="")
print(f"[ {status.upper():<9} ]".rjust(14))
while len(titulo_tarefa) > tamanho - 21:
titulo_tarefa = titulo_tarefa[(tamanho - 21) :]
print(" " * 5 + "| " + titulo_tarefa[: tamanho - 21])
print("-" * tamanho)
if len(descricao_tarefa) <= tamanho:
print(descricao_tarefa)
else:
print(f"{descricao_tarefa[:tamanho]}")
while len(descricao_tarefa) > tamanho:
descricao_tarefa = descricao_tarefa[tamanho:]
print(descricao_tarefa[:tamanho])
print("=" * tamanho)