Skip to content

Commit 63bc837

Browse files
authored
Merge pull request #63 from lcfd/issue-55
[projects] Add "archived" property in project config #55
2 parents bfde11d + bc71c45 commit 63bc837

File tree

11 files changed

+100
-48
lines changed

11 files changed

+100
-48
lines changed

cli/trakcli/config/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ class Project(NamedTuple):
99
tags: list[str] = []
1010
customer: str = ""
1111
rate: int = 1
12+
archived: bool = False

cli/trakcli/create/commands/session.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,18 @@ def create_session(
100100
help="Check the session you are about to create, without save it.",
101101
),
102102
] = False,
103+
archived: Annotated[
104+
Optional[bool],
105+
typer.Option(
106+
"--archived",
107+
"-a",
108+
help="Show archived projects in lists.",
109+
),
110+
] = False,
103111
):
104112
#
105113
# Project checking
106-
projects_in_config = get_projects_from_config()
114+
projects_in_config = get_projects_from_config(archived)
107115

108116
# Check if there are configured projects
109117
if not len(projects_in_config):

cli/trakcli/create/commands/work.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from datetime import datetime
2-
from typing import Annotated
2+
from typing import Annotated, Optional
33

44
import typer
55
from rich import print as rprint
@@ -76,8 +76,16 @@ def create_work(
7676
help="",
7777
),
7878
] = 1,
79+
archived: Annotated[
80+
Optional[bool],
81+
typer.Option(
82+
"--archived",
83+
"-a",
84+
help="Show archived projects in lists.",
85+
),
86+
] = False,
7987
):
80-
projects_in_config = get_projects_from_config()
88+
projects_in_config = get_projects_from_config(archived)
8189

8290
if project_id in projects_in_config:
8391
details = get_project_from_config(project_id)

cli/trakcli/projects/commands.py

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import pathlib
22
import shutil
3+
from typing import Annotated, Optional
34

45
import typer
56
from rich import print as rprint
@@ -8,26 +9,30 @@
89

910
from trakcli.config.main import (
1011
TRAK_FOLDER,
11-
get_db_file_path,
1212
)
1313
from trakcli.projects.database import (
1414
get_projects_from_config,
15-
get_projects_from_db,
1615
)
1716
from trakcli.utils.print_with_padding import print_with_padding
1817

1918
app = typer.Typer()
2019

2120

2221
@app.command(help="List your projects.")
23-
def list():
22+
def list(
23+
archived: Annotated[
24+
Optional[bool],
25+
typer.Option(
26+
"--archived",
27+
"-a",
28+
help="Show archived projects in lists.",
29+
),
30+
] = False,
31+
):
2432
"""List the projects."""
2533

26-
db_path = get_db_file_path()
27-
28-
projects_in_db = get_projects_from_db(db_path)
29-
projects_in_config = get_projects_from_config()
30-
combined = {*projects_in_db, *projects_in_config}
34+
projects_in_config = get_projects_from_config(archived)
35+
combined = {*projects_in_config}
3136

3237
number_of_projects = len(combined)
3338

@@ -41,27 +46,8 @@ def list():
4146
for project in projects_in_config:
4247
table.add_row(project, "config")
4348

44-
projects_id_db_only = False
45-
for project in projects_in_db:
46-
if project not in projects_in_config:
47-
projects_id_db_only = True
48-
table.add_row(project, "database")
49-
5049
rprint("")
5150
rprint(table)
52-
rprint("")
53-
if projects_id_db_only:
54-
rprint(
55-
Panel.fit(
56-
title="Tip",
57-
renderable=print_with_padding(
58-
(
59-
"You have projects that don't exist in configuration.\n"
60-
"Plase, run the `trak create project <project-id>` command to configure your project."
61-
)
62-
),
63-
)
64-
)
6551

6652

6753
@app.command(help="Delete a project.")

cli/trakcli/projects/database.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77

88
def get_projects_from_db(db_path: Path):
9-
"""Get the projects in the database."""
9+
"""Deprecated. Get the projects in the database."""
1010

1111
with open(db_path, "r") as db:
1212
db_content = db.read()
@@ -16,7 +16,7 @@ def get_projects_from_db(db_path: Path):
1616
return {record.get("project", "") for record in parsed_json}
1717

1818

19-
def get_projects_from_config():
19+
def get_projects_from_config(archived: bool | None = False):
2020
"""Get the projects in the config."""
2121

2222
projects_path = pathlib.Path(TRAK_FOLDER / "projects")
@@ -28,7 +28,9 @@ def get_projects_from_config():
2828
details_path = x / "details.json"
2929
with open(details_path, "r") as f:
3030
details = json.load(f)
31-
projects.append(details.get("id", "ERROR: No id!"))
31+
32+
if not details.get("archived") or archived:
33+
projects.append(details.get("id", "ERROR: No id!"))
3234

3335
return projects
3436

cli/trakcli/report/commands/report_project.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,15 +103,23 @@ def report_project(
103103
formats=["%Y-%m-%d"],
104104
),
105105
] = None,
106+
archived: Annotated[
107+
Optional[bool],
108+
typer.Option(
109+
"--archived",
110+
"-a",
111+
help="Show archived projects in lists.",
112+
),
113+
] = False,
106114
):
107115
"""
108116
Get reports for your projects.
109117
The projects will be get by the configuration in the .trak folder.
110118
"""
111119

112-
projects_in_config = get_projects_from_config()
120+
projects_in_config = get_projects_from_config(archived)
113121

114-
projects_in_config.append("all")
122+
projects_in_config.append(ALL_PROJECTS)
115123

116124
# Check if there are configured projects
117125
if not len(projects_in_config):

cli/trakcli/tracker/commands/start_tracker.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,20 @@ def start_tracker(
4444
help="Add a tag to the tracked time. Useful in the reporting phase.",
4545
),
4646
] = "",
47+
archived: Annotated[
48+
Optional[bool],
49+
typer.Option(
50+
"--archived",
51+
"-a",
52+
help="Show archived projects in lists.",
53+
),
54+
] = False,
4755
):
4856
"""
4957
Start tracking a project by project_id.
5058
"""
5159

52-
projects_in_config = get_projects_from_config()
60+
projects_in_config = get_projects_from_config(archived)
5361

5462
if not project:
5563
project = questionary.select(

cli/trakcli/works/commands/delete.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
from typing import Annotated
2-
from rich.panel import Panel
3-
from trakcli.projects.utils.print_missing_project import print_missing_project
4-
from rich.prompt import Confirm
5-
1+
from typing import Annotated, Optional
62

73
import typer
84
from rich import print as rprint
5+
from rich.panel import Panel
6+
from rich.prompt import Confirm
97

108
from trakcli.projects.database import get_projects_from_config
9+
from trakcli.projects.utils.print_missing_project import print_missing_project
1110
from trakcli.works.database import (
1211
get_project_works_from_config,
1312
set_project_works_in_config,
@@ -22,10 +21,18 @@ def delete_work(
2221
"--in", "--of", "-p", help="The project's id in which the work is located."
2322
),
2423
],
24+
archived: Annotated[
25+
Optional[bool],
26+
typer.Option(
27+
"--archived",
28+
"-a",
29+
help="Show archived projects in lists.",
30+
),
31+
] = False,
2532
):
2633
"""Delete a work from a project."""
2734

28-
projects = get_projects_from_config()
35+
projects = get_projects_from_config(archived)
2936

3037
if project_id in projects:
3138
delete = Confirm.ask(

cli/trakcli/works/commands/done.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Annotated
1+
from typing import Annotated, Optional
22

33
import typer
44
from rich import print as rprint
@@ -22,10 +22,18 @@ def done_work(
2222
"--in", "--of", "-p", help="The project's id in which the work is located."
2323
),
2424
],
25+
archived: Annotated[
26+
Optional[bool],
27+
typer.Option(
28+
"--archived",
29+
"-a",
30+
help="Show archived projects in lists.",
31+
),
32+
] = False,
2533
):
2634
"""Mark as done a work of a project."""
2735

28-
projects = get_projects_from_config()
36+
projects = get_projects_from_config(archived)
2937

3038
if project_id in projects:
3139
confirm_done = Confirm.ask(

cli/trakcli/works/commands/list.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from datetime import datetime
2-
from typing import Annotated
2+
from typing import Annotated, Optional
33
from rich.panel import Panel
44
from trakcli.projects.utils.print_missing_project import print_with_padding
55

@@ -87,6 +87,14 @@ def list_works(
8787
done: Annotated[
8888
bool, typer.Option("--done", "-d", help="Show also done works.")
8989
] = False,
90+
archived: Annotated[
91+
Optional[bool],
92+
typer.Option(
93+
"--archived",
94+
"-a",
95+
help="Show archived projects in lists.",
96+
),
97+
] = False,
9098
):
9199
"""List the works in a project or all of them."""
92100

@@ -105,7 +113,7 @@ def list_works(
105113
return
106114
else:
107115
# Show all current projects
108-
projects = get_projects_from_config()
116+
projects = get_projects_from_config(archived)
109117

110118
for project in projects:
111119
works = get_project_works_from_config(project)

0 commit comments

Comments
 (0)