Share same connection

This commit is contained in:
2018-07-04 01:16:50 +02:00
parent 7390e6e031
commit 3c22e47d36
3 changed files with 65 additions and 60 deletions

View File

@@ -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(),)) cursor.execute(query, (project_id, task_id, note_id, getpass.getuser(), message, datetime.datetime.now(),))
logging.debug('created action') 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

27
pits.py
View File

@@ -31,19 +31,14 @@ def handle_action(args, last_action):
result = row result = row
logging.debug(result) logging.debug(result)
def read_last_action(): def create_connection(db_filename):
logging.info('> last_action') try:
# query = 'SELECT * FROM action WHERE id = (SELECT MAX(id) FROM action' conn = sqlite3.connect(db_filename)
# query = 'SELECT project_id, task_id, note_id FROM action' return conn
query = 'SELECT project_id, task_id, note_id FROM action ORDER BY created_at DESC LIMIT 1;' except Error as e:
print(e)
with sqlite3.connect(db_filename) as conn: return None
cursor = conn.cursor()
cursor.execute(query)
logging.debug('DEEEEEEEEBU')
last_action = cursor.fetchone()
logging.debug(last_action)
return last_action
db_filename = 'pits.db' db_filename = 'pits.db'
schema_filename = 'pits_schema.sql' schema_filename = 'pits_schema.sql'
@@ -93,9 +88,11 @@ parser.add_argument('--version', action='version', version='%(prog)s 1.0')
if __name__ == '__main__': if __name__ == '__main__':
args = parser.parse_args() args = parser.parse_args()
last_action = read_last_action() conn = create_connection(db_filename)
logging.debug('Last action: {}'.format(last_action)) 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') print('END')

View File

@@ -1,16 +1,14 @@
import sqlite3 # import sqlite3
import os import os
import argparse import argparse
import json import json
import getpass import getpass
import datetime import datetime
import logging import logging
import action import action
db_filename = 'pits.db' def handle_project(args, last_action, conn):
schema_filename = 'pits_schema.sql'
def handle_project(args, last_action):
logging.info('> handle project') logging.info('> handle project')
logging.debug('args: ' + str(args)) logging.debug('args: ' + str(args))
@@ -18,23 +16,23 @@ def handle_project(args, last_action):
if args.create_name: if args.create_name:
do_something = True do_something = True
create_project(args) create_project(args, conn)
if args.delete_id: if args.delete_id:
do_something = True do_something = True
delete_project(args.delete_id) delete_project(args.delete_id, conn)
if args.edit_id: if args.edit_id:
do_something = True do_something = True
edit_project(args, args.edit_id) edit_project(args, args.edit_id, conn)
if not do_something: if not do_something:
active_project_id = None active_project_id = None
if last_action: if last_action:
active_project_id = last_action[0] 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 # TODO Project is same name is forbidden
logging.info('>> Create project') logging.info('>> Create project')
@@ -46,17 +44,16 @@ def create_project(args):
status = 'active' status = 'active'
if args.status: status = args.status if args.status: status = args.status
with sqlite3.connect(db_filename) as conn: cursor = conn.cursor()
cursor = conn.cursor() cursor.execute(query, (getpass.getuser(), args.create_name, status, datetime.datetime.now(),))
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') logging.info('>> Edit project')
update_args = {} 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())) query = query.format(', '.join("%s = '%s'" % (k, v) for k, v in update_args.items()))
logging.debug('update project query: ' + query) logging.debug('update project query: ' + query)
with sqlite3.connect(db_filename) as conn: cursor = conn.cursor()
cursor = conn.cursor() if update_args:
if update_args: logging.debug('Do a project update')
logging.debug('Do a project update') cursor.execute(query, (project_id,))
cursor.execute(query, (project_id,))
log_args = ', '.join("%s: '%s'" % (k, v) for k, v in update_args.items()) log_args = ', '.join("%s: '%s'" % (k, v) for k, v in update_args.items())
print('updated project {}: ({})'.format(project_id, log_args)) print('updated project {}: ({})'.format(project_id, log_args))
else: else:
print('updated project {}: set active project') 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') logging.info('>> Remove project')
query = """ query = """
@@ -90,22 +86,21 @@ def delete_project(project_id):
WHERE id = ?; WHERE id = ?;
""" """
with sqlite3.connect(db_filename) as conn: cursor = conn.cursor()
cursor = conn.cursor() cursor.execute(query, (project_id,))
cursor.execute(query, (project_id,)) if cursor.rowcount != 1:
if cursor.rowcount != 1: logging.error('DELETE FAILED')
logging.error('DELETE FAILED') print('deleted project {}: {}'.format(project_id, 'project_name'))
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') logging.info('>> No arguments')
query = "SELECT id, username, name, status, created_at FROM project;" query = "SELECT id, username, name, status, created_at FROM project;"
with sqlite3.connect(db_filename) as conn:
cursor = conn.cursor() cursor = conn.cursor()
cursor.execute(query) cursor.execute(query)
for row in cursor.fetchall(): for row in cursor.fetchall():
project_id, username, name, status, date = row project_id, username, name, status, date = row
nb_task = 0 nb_task = 0
current_project = '' current_project = ''
if active_project_id and active_project_id == project_id: 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)) print('{:1} {:2d}: ({:8}) | {} | {} ({} tasks )'.format(current_project, project_id, username, status, name, nb_task))