From b5619c41ebf2ff985513fd3cbf1fecfc0c735661 Mon Sep 17 00:00:00 2001 From: "Maxence G. de Montauzan" Date: Sat, 21 Jul 2018 17:39:26 +0200 Subject: [PATCH] Current value on delete + no create without parent --- action.py | 2 +- note.py | 5 ++++- pits_schema.sql | 31 +++++++++++++++++++++++-------- task.py | 6 +++++- 4 files changed, 33 insertions(+), 11 deletions(-) diff --git a/action.py b/action.py index 21513d8..74ebf2b 100644 --- a/action.py +++ b/action.py @@ -106,7 +106,7 @@ def record_action( def set_active(cursor, project_id=None, task_id=None, note_id=None): - query = "UPDATE current SET {} = ? WHERE id = 0" + query = "UPDATE current SET {} = ?" if project_id: query = query.format("project_id") diff --git a/note.py b/note.py index 4e78c4b..78194c1 100644 --- a/note.py +++ b/note.py @@ -61,9 +61,12 @@ def handle_note(args, last_action, conn): def create_note(note, active_project_id, active_task_id, conn): - # TODO Don't create note if no project (nothing selected?) ==> foreign key is not a solution: there is no project ID :) logging.info(">> Create note") + if active_task_id == 0: + print("No task selected") + sys.exit(1) + query = """ INSERT INTO note (project_id, task_id, username, message) VALUES (?, ?, ?, ?); diff --git a/pits_schema.sql b/pits_schema.sql index aa1f877..c9488b2 100644 --- a/pits_schema.sql +++ b/pits_schema.sql @@ -101,44 +101,59 @@ END; -- Current table with trigger -- -------------------------------- CREATE TABLE current ( - id integer, project_id integer, task_id integer, note_id integer ); -INSERT INTO current VALUES (0,0,0,0); +INSERT INTO current VALUES (0,0,0); -- Trigger after insert for current values CREATE TRIGGER current_project AFTER INSERT ON project BEGIN - UPDATE current SET project_id = new.id WHERE id = 0; + UPDATE current SET project_id = new.id; END; CREATE TRIGGER current_task AFTER INSERT ON task BEGIN - UPDATE current SET task_id = new.id WHERE id = 0; + UPDATE current SET task_id = new.id; END; CREATE TRIGGER current_note AFTER INSERT ON note BEGIN - UPDATE current SET note_id = new.id WHERE id = 0; + UPDATE current SET note_id = new.id; END; -- Trigger after update for current values CREATE TRIGGER update_project AFTER UPDATE ON project BEGIN - UPDATE current SET project_id = new.id WHERE id = 0; + UPDATE current SET project_id = new.id; END; CREATE TRIGGER update_task AFTER UPDATE ON task BEGIN - UPDATE current SET task_id = new.id WHERE id = 0; + UPDATE current SET task_id = new.id; END; CREATE TRIGGER update_note AFTER UPDATE ON note BEGIN - UPDATE current SET note_id = new.id WHERE id = 0; + UPDATE current SET note_id = new.id; +END; + +-- Trigger after delete for current values +CREATE TRIGGER delete_project AFTER DELETE ON project +BEGIN + UPDATE current SET project_id = 0; +END; + +CREATE TRIGGER delete_task AFTER DELETE ON task +BEGIN + UPDATE current SET task_id = 0; +END; + +CREATE TRIGGER delete_note AFTER DELETE ON note +BEGIN + UPDATE current SET note_id = 0; END; -------------------------------- diff --git a/task.py b/task.py index 318e606..165de51 100644 --- a/task.py +++ b/task.py @@ -96,6 +96,7 @@ def handle_task(args, last_action, conn): else: print(f"Invalid task option: {args[0]}") + def parse_task_args(task, args): if not args: return @@ -126,9 +127,12 @@ def parse_task_args(task, args): def create_task(task, project_id, conn): - # TODO Don't create task if no project (nothing selected?) ==> foreign key is not a solution: there is no project ID :) logging.info(">> Create task") + if project_id == 0: + print("No project selected") + sys.exit(1) + query = """ INSERT INTO task (project_id, username, name, status, priority, date, time, created_at)