diff --git a/.gitignore b/.gitignore index e69de29..834520c 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,3 @@ +#ignore src/pm-kun/__pycache__/* +__pycache__/ +*.pyc \ No newline at end of file diff --git a/src/pm_kun/__init__.py b/src/pm_kun/__init__.py index b444fe0..09b3b3a 100644 --- a/src/pm_kun/__init__.py +++ b/src/pm_kun/__init__.py @@ -1,3 +1,49 @@ -def main() -> int: - print("Hello from pm-kun!") - return 0 \ No newline at end of file +import datetime +from typing import Optional +from pm_kun.task.todo import BaseTask +from pm_kun.type_definition import Priority, Status, ToDo +import uuid + + +def main() -> None: + print("This is Entory point for pm-kun.") + is_process = True + my_task = BaseTask() + while is_process: + print("1.タスクの追加") + print("2.タスクの削除") + print("3.タスクの更新") + print("4.終了") + select = input("選択してください") + if select == "1": + task = input("タスクを入力してください") + my_Todo: ToDo = { + "id": str(uuid.uuid4()), + "task": "", + "status": Status.未着手, + "period": datetime.date.today(), + "priority": Priority.低, + } + my_Todo["id"] = str(uuid.uuid4()) + my_Todo["task"] = task + my_task.add_task(my_Todo) + print(f"TODOの数:{len(my_task.todo_list)}") + print(my_task.todo_list) + elif select == "2": + task = input("削除するタスクを入力してください") + for todo in my_task.todo_list: + if task in todo["task"]: + id = todo["id"] + my_task.delete_task(id) + print(my_task.todo_list) + elif select == "3": + cuurent_task = input("更新するタスクを入力してください") + update_task = input("更新後のタスクを入力してください") + for todo in my_task.todo_list: + if cuurent_task in todo["task"]: + id = todo["id"] + my_task.update_task(id, task=update_task) + print(my_task.todo_list) + elif select == "4": + break + return None diff --git a/src/pm_kun/task/__initi__.py b/src/pm_kun/task/__initi__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/pm_kun/task/todo.py b/src/pm_kun/task/todo.py new file mode 100644 index 0000000..9a65586 --- /dev/null +++ b/src/pm_kun/task/todo.py @@ -0,0 +1,73 @@ +from datetime import date +from typing import List, Optional +from pm_kun.type_definition import Priority, Status, ToDo + + +def main() -> None: + print("""ここではpm-kunのTODOリストの作成と管理を行います。""") + return None + + +class BaseTask: + """ + タスクを管理するクラス。 + このクラスはタスクの追加、削除、更新、検索を行う + """ + + def __init__(self) -> None: + self.todo_list: List[ToDo] = [] + pass + + def add_task(self, task: ToDo) -> None: + """ + タスクを追加するメソッド + Args: + todo:ToDo 追加するタスク + """ + self.todo_list.append(task) + return None + + def delete_task(self, id: str) -> None: + """ + タスクを削除するメソッド + Args: + """ + for todo in self.todo_list: + if todo["id"] == id: + self.todo_list.remove(todo) + break + return None + + def update_task( + self, + id: str, + task: Optional[str] = None, + status: Optional[Status] = None, + period: Optional[date] = None, + priority: Optional[Priority] = None, + ) -> None: + """ + タスクを更新するメソッド + Args: + """ + for todo in self.todo_list: + if todo["id"] == id: + if task is not None: + todo["task"] = task + if status is not None: + todo["status"] = status + if period is not None: + todo["period"] = period + if priority is not None: + todo["priority"] = priority + break + return None + + def search_task(self, id: str) -> None: + """ + タスクを検索するメソッド + Args: + """ + for task in self.todo_list: + if task["id"] == id: + return task diff --git a/src/pm_kun/type_definition.py b/src/pm_kun/type_definition.py new file mode 100644 index 0000000..01428ea --- /dev/null +++ b/src/pm_kun/type_definition.py @@ -0,0 +1,24 @@ +from datetime import date +from typing import TypedDict +from enum import Enum +from uuid import UUID + + +class Priority(Enum): + 低 = 0 + 標準 = 1 + 緊急 = 2 + + +class Status(Enum): + 未着手 = 0 + 対応中 = 1 + 完了 = 2 + + +class ToDo(TypedDict): + id: str + task: str + status: Status + period: date + priority: Priority