diff --git a/action.py b/action.py index e7344e2..a061684 100644 --- a/action.py +++ b/action.py @@ -11,7 +11,8 @@ class Action: def __init__(self, row): if not row: logging.debug('Action - empty row') - raise Exception('No action found - database need to be initialized.') + # TODO + # raise Exception('No action found - database need to be initialized.') else: logging.debug('Action - fill fields') self.project_id, self.task_id, self.note_id = row @@ -19,6 +20,16 @@ class Action: def __str__(self): return str(self.__dict__) +def handle_action(args, last_action, conn): + logging.info('>> handle action') + query = 'SELECT * FROM action;' + cursor = conn.cursor() + cursor.execute(query) + for row in cursor.fetchall(): + result = row + logging.debug(result) + + def create_action(cursor, project_id = '', task_id = '', note_id = '', message = ''): query = """ INSERT INTO action (project_id, task_id, note_id, username, message, created_at) diff --git a/pit_argparser.py b/pit_argparser.py new file mode 100644 index 0000000..8d35011 --- /dev/null +++ b/pit_argparser.py @@ -0,0 +1,87 @@ +import argparse +import logging + +import pits #TODO Cyclic dependency +import project +import task +import note +import action + +def help(args, last_action, conn): + logging.info('help function') + +def create_parser(): + parser = argparse.ArgumentParser() + parser.set_defaults(func=help) + + subparsers = parser.add_subparsers() + + # init Create empty Pit database or reinitialize an existing one + parser_init = subparsers.add_parser('init')#, usage='toto') + parser_init.add_argument('-f', '--force') + # parser_init.set_defaults(func=pits.init_database) + + create_project_parser(subparsers) + create_task_parser(subparsers) + create_note_parser(subparsers) + + # log Show chronological Pit activity log (== action) + parser_action = subparsers.add_parser('log') + parser_action.set_defaults(func=action.handle_action) + + # info Show summary information about your Pit database + # Pit version: 0.1.0 + # Pit file name: /home/budd/.pit + # Created by: budd on Jul 04, 2018 at 02:00 + # Last updated by: budd on Jul 04, 2018 at 19:53 + # Schema version: 1 + # Projects: 1 + # Tasks: 3 + # Notes: 3 + # Log entries: 9 + # TODO + + # help Show help information about Pit + + # version Show Pit version number + parser.add_argument('--version', action='version', version='%(prog)s 1.0') + + return parser + +def create_project_parser(subparsers): + # PROJECT ARGS PARSER + # project Create, search, and manage Pit projects + parser_project = subparsers.add_parser('project')#, usage='toto') + group_project = parser_project.add_mutually_exclusive_group() + group_project.add_argument('-c', type=str, dest='create_name', metavar='name', help='name of project') + group_project.add_argument('-e', type=int, dest='edit_id', metavar='number', help='Edit a project') + group_project.add_argument('-d', type=int, dest='delete_id', nargs='?', const=-1, metavar='number', help='Delete a project') + parser_project.add_argument('-n', type=str, dest='edit_name', metavar='name', help='Edit: new name of project') + parser_project.add_argument('-s', type=str, dest='status', metavar='status') + parser_project.add_argument('-q', type=int) + parser_project.set_defaults(func=project.handle_project) + +def create_task_parser(subparsers): + # TASK ARGS PARSER + # task Create, search, and manage Pit tasks + parser_task = subparsers.add_parser('task') + group_task = parser_task.add_mutually_exclusive_group() + group_task.add_argument('-c', type=str, dest='create_name', metavar='name', help='name of task') + group_task.add_argument('-e', type=int, dest='edit_id', metavar='number', help='Edit a task') + group_task.add_argument('-m', type=int, dest='moving_id', nargs='?', const=-1, metavar='number', help='Moving a task') + group_task.add_argument('-d', type=int, dest='delete_id', nargs='?', const=-1, metavar='number', help='Delete a task') + parser_task.add_argument('-n', type=str, dest='edit_name', metavar='name', help='Edit: new name of project') + parser_task.add_argument('-s', type=str, dest='status', metavar='status') + parser_task.add_argument('-q', type=int) + parser_task.add_argument('-i', type=int, dest='project_id', metavar='project id') + parser_task.set_defaults(func=task.handle_task) + +def create_note_parser(subparsers): + # NOTE ARGS PARSER + # note Create, search, and manage Pit notes + parser_note = subparsers.add_parser('note') + group_note = parser_note.add_mutually_exclusive_group() + group_note.add_argument('-c', type=str, dest='create_name', metavar='name', help='name of task') + group_note.add_argument('-e', type=int, dest='edit_id', metavar='number', help='Edit a task') + group_note.add_argument('-d', type=int, dest='delete_id', nargs='?', const=-1, metavar='number', help='Delete a task') + parser_note.set_defaults(func=note.handle_note) \ No newline at end of file diff --git a/pits.py b/pits.py index eb34980..40dbf56 100644 --- a/pits.py +++ b/pits.py @@ -10,6 +10,7 @@ import project import action import task import note +import pit_argparser # logging.basicConfig(level=logging.DEBUG, format='%(asctime)s :: %(levelname)s :: %(message)s') logging.basicConfig(level=logging.DEBUG, format='%(levelname)7s :: %(message)s') @@ -17,22 +18,9 @@ logging.basicConfig(level=logging.DEBUG, format='%(levelname)7s :: %(message)s') def info(): logging.info('info function') -def help(args, last_action, conn): - logging.info('help function') - def handle_note(args): logging.info('>> handle note') -def handle_action(args, last_action): - logging.info('>> handle action') - query = 'SELECT * FROM action;' - with sqlite3.connect(db_filename) as conn: - cursor = conn.cursor() - cursor.execute(query) - for row in cursor.fetchall(): - result = row - logging.debug(result) - def create_connection(db_filename): try: conn = sqlite3.connect(db_filename) @@ -60,50 +48,10 @@ with sqlite3.connect(db_filename) as conn: # conn.executescript(""" # insert into project values(1, 'me', 'test', 'in progress', 'now', 'now')""") -parser = argparse.ArgumentParser() -parser.set_defaults(func=help) - -subparsers = parser.add_subparsers() - -# PROJECT ARGS PARSER -parser_project = subparsers.add_parser('project')#, usage='toto') -group_project = parser_project.add_mutually_exclusive_group() -group_project.add_argument('-c', type=str, dest='create_name', metavar='name', help='name of project') -group_project.add_argument('-e', type=int, dest='edit_id', metavar='number', help='Edit a project') -group_project.add_argument('-d', type=int, dest='delete_id', nargs='?', const=-1, metavar='number', help='Delete a project') -parser_project.add_argument('-n', type=str, dest='edit_name', metavar='name', help='Edit: new name of project') -parser_project.add_argument('-s', type=str, dest='status', metavar='status') -parser_project.add_argument('-q', type=int) -parser_project.set_defaults(func=project.handle_project) - -parser_task = subparsers.add_parser('task') -group_task = parser_task.add_mutually_exclusive_group() -group_task.add_argument('-c', type=str, dest='create_name', metavar='name', help='name of task') -group_task.add_argument('-e', type=int, dest='edit_id', metavar='number', help='Edit a task') -group_task.add_argument('-m', type=int, dest='moving_id', nargs='?', const=-1, metavar='number', help='Moving a task') -group_task.add_argument('-d', type=int, dest='delete_id', nargs='?', const=-1, metavar='number', help='Delete a task') -parser_task.add_argument('-n', type=str, dest='edit_name', metavar='name', help='Edit: new name of project') -parser_task.add_argument('-s', type=str, dest='status', metavar='status') -parser_task.add_argument('-q', type=int) -parser_task.add_argument('-i', type=int, dest='project_id', metavar='project id') -parser_task.set_defaults(func=task.handle_task) - -parser_note = subparsers.add_parser('note') -group_note = parser_note.add_mutually_exclusive_group() -group_note.add_argument('-c', type=str, dest='create_name', metavar='name', help='name of task') -group_note.add_argument('-e', type=int, dest='edit_id', metavar='number', help='Edit a task') -group_note.add_argument('-d', type=int, dest='delete_id', nargs='?', const=-1, metavar='number', help='Delete a task') -parser_note.set_defaults(func=note.handle_note) - -parser_action = subparsers.add_parser('action') -parser_action.set_defaults(func=handle_action) - -parser.add_argument('--version', action='version', version='%(prog)s 1.0') - if __name__ == '__main__': + parser = pit_argparser.create_parser() args = parser.parse_args() - conn = create_connection(db_filename) with conn: last_action = action.read_last_action(conn) logging.debug('Last action: {}'.format(last_action))