import sqlite3 import os import argparse import json import getpass import datetime import logging import project import action import task # logging.basicConfig(level=logging.DEBUG, format='%(asctime)s :: %(levelname)s :: %(message)s') 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) return conn except Error as e: print(e) return None db_filename = 'pits.db' schema_filename = 'pits_schema.sql' # TODO Use init command like original pit # TODO Need to add an action - log init db_is_new = not os.path.exists(db_filename) with sqlite3.connect(db_filename) as conn: if db_is_new: logging.info('Creating schema') with open(schema_filename, 'rt') as f: schema = f.read() conn.executescript(schema) # logging.info('Inserting initial data') # 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') parser_note.add_argument('-c', type=str) parser_note.add_argument('-e', type=int) parser_note.add_argument('-d', type=int) parser_note.set_defaults(func=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__': 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)) args.func(args, last_action, conn) print('END')