From 6fb1808daec6eba38acc2cdf5625a5eaf84bbeb7 Mon Sep 17 00:00:00 2001 From: "Maxence G. de Montauzan" Date: Tue, 10 Jul 2018 23:09:24 +0200 Subject: [PATCH] Move task --- task.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/task.py b/task.py index 9077c23..eaa3443 100644 --- a/task.py +++ b/task.py @@ -9,6 +9,7 @@ import sys import action from args import get_string_arg +from args import arg_number class Task: def __init__(self, status = None, priority = None): @@ -54,9 +55,43 @@ def handle_task(args, last_action, conn): edit_task(task, task_id, last_action.project_id, conn) # TODO To set as active project, us a -a option? + elif args[0] == '-d': + # FIXME Duplicate code + if len(args) > 1: + delete_task(arg_number(args[1]), conn) + else: + delete_task(last_action.task_id, conn) + elif args[0] == '-m': + # Try another logic + args_i = 1 + if len(args) < 3: + print('missing project number') + sys.exit(1) + + task_id = last_action.task_id + + # Task id + if args[args_i].isdigit(): + task_id = arg_number(args[args_i]) + args_i += 1 + + if not task_id: + print('No active task to move.') + sys.exit(1) + + # Project option - if not fail + if args[args_i] != '-p': + print('missing project number') + sys.exit(1) + else: + args_i += 1 + + moving_task(task_id, last_action.project_id, arg_number(args[args_i]), conn) else: print(f'Invalid project option: {args[0]}') + # TODO Cascade deleting + def parse_task_args(task, args): if not args: return @@ -145,8 +180,22 @@ def edit_task(task, task_id, project_id, conn): logging.debug('UPDATE TASK - ACTION MESSAGE : ' + action_message) action.create_action(cursor, project_id=project_id, task_id=task_id, action=action.TypeAction.UPDATE, message = action_message) -def moving_task(args): - print('moving') +def moving_task(task_id, old_project_id, project_id, conn): + logging.info('>> Moving task') + + query = """ + UPDATE task SET project_id = ? WHERE id = ?; + """ + + cursor = conn.cursor() + cursor.execute(query, (project_id, task_id,)) + + if cursor.rowcount != 1: + print('Problem occur when moving task...') + sys.exit(1) + + print('moved task {}: from project {} to project {}'.format(task_id, old_project_id, project_id)) + action.create_action(cursor, project_id=project_id, task_id=task_id) # TODO Message def delete_task(task_id, conn): logging.info('>> Remove task') @@ -160,6 +209,9 @@ def delete_task(task_id, conn): cursor.execute(query, (task_id,)) if cursor.rowcount != 1: logging.error('DELETE FAILED') + print('could not find task {}'.format(task_id)) + sys.exit(1) + print('deleted task {}: {}'.format(task_id, 'task_name')) def list_task(active_project_id, active_task_id, conn):