From 3c22e47d36d9fe5e3102b1a94505c6ae1836b9af Mon Sep 17 00:00:00 2001 From: "Maxence G. de Montauzan" Date: Wed, 4 Jul 2018 01:16:50 +0200 Subject: [PATCH] Share same connection --- action.py | 15 +++++++++- pits.py | 27 ++++++++---------- project.py | 83 +++++++++++++++++++++++++----------------------------- 3 files changed, 65 insertions(+), 60 deletions(-) diff --git a/action.py b/action.py index cc93e34..2938496 100644 --- a/action.py +++ b/action.py @@ -15,4 +15,17 @@ def create_action(cursor, project_id = '', task_id = '', note_id = '', message = cursor.execute(query, (project_id, task_id, note_id, getpass.getuser(), message, datetime.datetime.now(),)) - logging.debug('created action') \ No newline at end of file + logging.debug('created action') + +def read_last_action(conn): + logging.info('> last_action') + # query = 'SELECT * FROM action WHERE id = (SELECT MAX(id) FROM action' + # query = 'SELECT project_id, task_id, note_id FROM action' + query = 'SELECT project_id, task_id, note_id FROM action ORDER BY created_at DESC LIMIT 1;' + + cursor = conn.cursor() + cursor.execute(query) + logging.debug('DEEEEEEEEBU') + last_action = cursor.fetchone() + logging.debug(last_action) + return last_action \ No newline at end of file diff --git a/pits.py b/pits.py index eef3bed..90e5e4f 100644 --- a/pits.py +++ b/pits.py @@ -31,19 +31,14 @@ def handle_action(args, last_action): result = row logging.debug(result) -def read_last_action(): - logging.info('> last_action') - # query = 'SELECT * FROM action WHERE id = (SELECT MAX(id) FROM action' - # query = 'SELECT project_id, task_id, note_id FROM action' - query = 'SELECT project_id, task_id, note_id FROM action ORDER BY created_at DESC LIMIT 1;' +def create_connection(db_filename): + try: + conn = sqlite3.connect(db_filename) + return conn + except Error as e: + print(e) - with sqlite3.connect(db_filename) as conn: - cursor = conn.cursor() - cursor.execute(query) - logging.debug('DEEEEEEEEBU') - last_action = cursor.fetchone() - logging.debug(last_action) - return last_action + return None db_filename = 'pits.db' schema_filename = 'pits_schema.sql' @@ -93,9 +88,11 @@ parser.add_argument('--version', action='version', version='%(prog)s 1.0') if __name__ == '__main__': args = parser.parse_args() - last_action = read_last_action() - logging.debug('Last action: {}'.format(last_action)) + 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) + args.func(args, last_action, conn) print('END') \ No newline at end of file diff --git a/project.py b/project.py index 9955a4d..dfa6428 100644 --- a/project.py +++ b/project.py @@ -1,16 +1,14 @@ -import sqlite3 +# import sqlite3 import os import argparse import json import getpass import datetime import logging + import action -db_filename = 'pits.db' -schema_filename = 'pits_schema.sql' - -def handle_project(args, last_action): +def handle_project(args, last_action, conn): logging.info('> handle project') logging.debug('args: ' + str(args)) @@ -18,23 +16,23 @@ def handle_project(args, last_action): if args.create_name: do_something = True - create_project(args) + create_project(args, conn) if args.delete_id: do_something = True - delete_project(args.delete_id) + delete_project(args.delete_id, conn) if args.edit_id: do_something = True - edit_project(args, args.edit_id) + edit_project(args, args.edit_id, conn) if not do_something: active_project_id = None if last_action: active_project_id = last_action[0] - list_project(active_project_id) + list_project(active_project_id, conn) -def create_project(args): +def create_project(args, conn): # TODO Project is same name is forbidden logging.info('>> Create project') @@ -46,17 +44,16 @@ def create_project(args): status = 'active' if args.status: status = args.status - with sqlite3.connect(db_filename) as conn: - cursor = conn.cursor() - cursor.execute(query, (getpass.getuser(), args.create_name, status, datetime.datetime.now(),)) + cursor = conn.cursor() + cursor.execute(query, (getpass.getuser(), args.create_name, status, datetime.datetime.now(),)) - project_id = cursor.lastrowid + project_id = cursor.lastrowid - action.create_action(cursor, project_id=project_id) + action.create_action(cursor, project_id=project_id) - print('created project {}: {} (status: {})'.format(project_id, args.create_name, status)) + print('created project {}: {} (status: {})'.format(project_id, args.create_name, status)) -def edit_project(args, project_id): +def edit_project(args, project_id, conn): logging.info('>> Edit project') update_args = {} @@ -69,20 +66,19 @@ def edit_project(args, project_id): query = query.format(', '.join("%s = '%s'" % (k, v) for k, v in update_args.items())) logging.debug('update project query: ' + query) - with sqlite3.connect(db_filename) as conn: - cursor = conn.cursor() - if update_args: - logging.debug('Do a project update') - cursor.execute(query, (project_id,)) + cursor = conn.cursor() + if update_args: + logging.debug('Do a project update') + cursor.execute(query, (project_id,)) - log_args = ', '.join("%s: '%s'" % (k, v) for k, v in update_args.items()) - print('updated project {}: ({})'.format(project_id, log_args)) - else: - print('updated project {}: set active project') + log_args = ', '.join("%s: '%s'" % (k, v) for k, v in update_args.items()) + print('updated project {}: ({})'.format(project_id, log_args)) + else: + print('updated project {}: set active project') - action.create_action(cursor, project_id, message = 'update ' + str(update_args)) + action.create_action(cursor, project_id, message = 'update ' + str(update_args)) -def delete_project(project_id): +def delete_project(project_id, conn): logging.info('>> Remove project') query = """ @@ -90,22 +86,21 @@ def delete_project(project_id): WHERE id = ?; """ - with sqlite3.connect(db_filename) as conn: - cursor = conn.cursor() - cursor.execute(query, (project_id,)) - if cursor.rowcount != 1: - logging.error('DELETE FAILED') - print('deleted project {}: {}'.format(project_id, 'project_name')) + cursor = conn.cursor() + cursor.execute(query, (project_id,)) + if cursor.rowcount != 1: + logging.error('DELETE FAILED') + print('deleted project {}: {}'.format(project_id, 'project_name')) -def list_project(active_project_id): +def list_project(active_project_id, conn): logging.info('>> No arguments') query = "SELECT id, username, name, status, created_at FROM project;" - with sqlite3.connect(db_filename) as conn: - cursor = conn.cursor() - cursor.execute(query) - for row in cursor.fetchall(): - project_id, username, name, status, date = row - nb_task = 0 - current_project = '' - if active_project_id and active_project_id == project_id: current_project = '*' - print('{:1} {:2d}: ({:8}) | {} | {} ({} tasks )'.format(current_project, project_id, username, status, name, nb_task)) \ No newline at end of file + + cursor = conn.cursor() + cursor.execute(query) + for row in cursor.fetchall(): + project_id, username, name, status, date = row + nb_task = 0 + current_project = '' + if active_project_id and active_project_id == project_id: current_project = '*' + print('{:1} {:2d}: ({:8}) | {} | {} ({} tasks )'.format(current_project, project_id, username, status, name, nb_task)) \ No newline at end of file