taskai-cli 1.1.5__tar.gz → 1.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/PKG-INFO +1 -1
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/pyproject.toml +1 -1
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/taskai/models.py +5 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/taskai/views.py +54 -4
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/.github/workflows/publish-to-pypi.yml +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/.gitignore +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/DEVLOG.md +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/README.md +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/docs/index.md +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/migrations/_001_removing_lists.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/migrations/convert_title_to_name.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/mkdocs.yml +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/scripts/bump_version.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/taskai/cli.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/taskai/config.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/taskai/help_menu.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/taskai/json_dir_database.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/taskai/services/ai.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/taskai/services/pomodoro.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/taskai/services/repair_database.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/taskai/services/user_setup.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/test/test_cli.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/test/test_execution.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/test/test_json_dir_database.py +0 -0
- {taskai_cli-1.1.5 → taskai_cli-1.2.0}/test/test_view.py +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# local
|
|
2
2
|
from taskai.json_dir_database import JsonDirectoryDatabase
|
|
3
3
|
from taskai.models import TodoItem, Comment
|
|
4
|
+
from taskai.config import config
|
|
4
5
|
|
|
5
6
|
# external
|
|
6
7
|
from rich import print
|
|
@@ -8,19 +9,68 @@ from rich.console import Console
|
|
|
8
9
|
import rich
|
|
9
10
|
|
|
10
11
|
|
|
12
|
+
"""
|
|
13
|
+
Lets give the lists a display string
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
set of valid attributes
|
|
17
|
+
- id
|
|
18
|
+
- name
|
|
19
|
+
- status
|
|
20
|
+
-
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
VALID_ATTRS = {
|
|
27
|
+
"id",
|
|
28
|
+
"name",
|
|
29
|
+
"created_on",
|
|
30
|
+
"due_by",
|
|
31
|
+
"priority",
|
|
32
|
+
"status"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
@config("DISPLAY_STRING", "display_str")
|
|
37
|
+
@config("DISPLAY_COLORS", "display_colors")
|
|
11
38
|
def view_lists(
|
|
12
39
|
db: JsonDirectoryDatabase,
|
|
13
40
|
roots: list[int],
|
|
14
|
-
show_done=True,
|
|
41
|
+
show_done=True,
|
|
42
|
+
display_str: str = "id name status",
|
|
43
|
+
display_colors: str = None
|
|
15
44
|
):
|
|
16
45
|
"""Shows all the lists"""
|
|
17
46
|
|
|
47
|
+
attrs = display_str.lower().split(" ")
|
|
48
|
+
|
|
49
|
+
if display_colors:
|
|
50
|
+
colors = display_colors.lower().split(" ")
|
|
51
|
+
assert len(colors) == len(attrs), "must have a color for every attr"
|
|
52
|
+
|
|
53
|
+
for attr in attrs:
|
|
54
|
+
assert attr in VALID_ATTRS, "invalid attribute in display string {}".format(attr)
|
|
55
|
+
|
|
56
|
+
def _render_display_string(item: TodoItem):
|
|
57
|
+
display_string = ""
|
|
58
|
+
for i, attr in enumerate(attrs):
|
|
59
|
+
part = getattr(item, attr)
|
|
60
|
+
if not part:
|
|
61
|
+
continue
|
|
62
|
+
part = str(part)
|
|
63
|
+
if display_colors and colors[i] != "_":
|
|
64
|
+
part = _wrap_string(part, f"[{colors[i]}]", f"[/{colors[i]}]")
|
|
65
|
+
display_string += f" {part}"
|
|
66
|
+
display_string = _wrap_string(display_string, "[strike]", "[/strike]", condition=item.completed)
|
|
67
|
+
return display_string
|
|
18
68
|
|
|
19
69
|
def _print_item(item: TodoItem, level: int):
|
|
20
70
|
if not show_done and item.completed:
|
|
21
71
|
return
|
|
22
|
-
|
|
23
|
-
display_string =
|
|
72
|
+
|
|
73
|
+
display_string = _render_display_string(item)
|
|
24
74
|
indent = "\t" * level
|
|
25
75
|
print(indent + display_string)
|
|
26
76
|
|
|
@@ -101,4 +151,4 @@ def _wrap_string(string_, before, after=None, condition=True):
|
|
|
101
151
|
if condition:
|
|
102
152
|
return f"{before}{string_}{after}"
|
|
103
153
|
else:
|
|
104
|
-
return string_
|
|
154
|
+
return string_
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|