###プロジェクトディレクトリ構造
todo_list/
├── config.json
├── data/
│ ├── tasks.json
│ └── completed_tasks.json
├── main.py
└── requirements.txt
###ファイル contents
_config.json_ファイルは、データベースとローカルストレージの接続情報を定義します。次のようなフォーマットで定めることができ ます。
{
"database": {
"host": "localhost",
"port": 5432,
"username": "todo_listuser",
"password": "todo_listpass",
"database": "todo_listdb"
},
"local_storage": {
"tasks_file": "data/tasks.json",
"completed_tasks_file": "data/completed_tasks.json"
}
}
_data_ディレクトリには、ローカルストレージに保存されているデータが格納されます。tasks.json
とcompleted_tasks.json
という2つのファイルを書きます。
tasks.jsonは、未完了のタスクを格納します。
[
{
"id": 1,
"description": "第1回計画"
},
{
"id": 2,
"description": "第2回計画"
}
]
completed_tasks.jsonは、完了されたタスクを格納します。
[
{
"id": 1,
"description": "第1回計画 (完了)"
},
{
"id": 2,
"description": "第2回計画 (完了)"
}
]
_main.py_ファイルは、Todo Listプロジェクトのメインロジックを管理するものです。次のような内容を書きます。
import os
import json
from config import Config
config = Config()
db_host = config.database["host"]
db_port = config.database["port"]
db_username = config.database["username"]
db_password = config.database["password"]
db_database = config.database["database"]
tasks_file = config.local_storage["tasks_file"]
completed_tasks_file = config.local_storage["completed_tasks_file"]
class TodoList:
def __init__(self):
# データベース接続
self.conn = None
def get_task(self, task_id):
# 未完了タスクはローカルストレージから取得します
with open(tasks_file, "r") as f:
tasks = json.load(f)
for task in tasks:
if task["id"] == task_id:
return task
def complete_task(self, task_id):
# 完了タスクをローカルスト レジスターで保存します
with open(tasks_file, "r+") as f:
tasks = json.load(f)
for i, task in enumerate(tasks):
if task["id"] == task_id:
tasks[i]["status"] = "Completed"
with open(tasks_file, "w") as f:
json.dump(tasks, f)
# instance
todo_list = TodoList()
# test
print(todo_list.get_task(1))
todo_list.complete_task(1)
_requiresments.txt_ファイルは、プロジェクト必要なパッケージをリストしてみます。次のようなコマンドが使うかもしれません。
pip install -r requirements.txt
python setup.py develop
###実行する
最後に、projectディレクトリ内のmain.pyファイルでPythonを使用してプロジェクトのロジックを実際にすることができます。
cd todo_list/
# 依存packageのインストール・build
pip install -r requirements.txt
python main.py
これでTodo Listプロジェクトが完成しました!
追加機能:
- データベースのタスクの取得/保存
- タスクのステータスの変更(未 완了/完了)
- タスクの削除
- 未完了タスクの総数と完了タスクの総数表示