From 2217abb3048d6587457c100ae1350b81c304fcbf Mon Sep 17 00:00:00 2001 From: "Maxence G. de Montauzan" Date: Tue, 10 Jul 2018 20:04:57 +0200 Subject: [PATCH] Improve update --- project.py | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/project.py b/project.py index d968e6a..0adaeb2 100644 --- a/project.py +++ b/project.py @@ -10,9 +10,8 @@ import sys import action class Project: - def __init__(self, status = ''): - self.id = 0 - self.name = '' + def __init__(self, status = None): + self.name = None self.status = status def __str__(self): @@ -47,19 +46,16 @@ def handle_project(args, last_action, conn): sys.exit(1) project = Project() - project.id = last_action.project_id if args[1].isdigit(): - if int(args[1]) == project.id: - print('nothing to update') - sys.exit(1) - project.id = int(args[1]) + project_id = int(args[1]) parse_project_args(project, args[2:]) else: + project_id = last_action.project_id parse_project_args(project, args[1:]) - logging.debug('Project: {}'.format(project)) + logging.debug('Project: ({}) {}'.format(project_id, project)) - edit_project(project, conn) + edit_project(project, project_id, conn) # TODO To set as active project, us a -a option? elif args[0] == '-d': @@ -140,31 +136,29 @@ def create_project(project, conn): print('created project {}: {} (status: {})'.format(project_id, project.name, project.status)) -def edit_project(project, conn): +def edit_project(project, project_id, conn): logging.info('>> Edit project') - update_args = {} - if project.status: - update_args['status'] = project.status - if project.name: - update_args['name'] = project.name + update_args = [item for item in project.__dict__.items() if item[1] is not None] + + logging.debug('Project update args: {}'.format(update_args)) query = 'UPDATE project SET {} WHERE 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)) logging.debug('update project query: ' + query) cursor = conn.cursor() if update_args: 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()) - print('updated project {}: ({})'.format(project.id, log_args)) + log_args = ', '.join("%s: '%s'" % (k, v) for k, v in update_args) + print('updated project {}: ({})'.format(project_id, log_args)) else: - print('updated project {}: set as active project'.format(project.id)) + print('updated project {}: set as active project'.format(project_id)) # TODO If not project ID to set active - 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, conn): logging.info('>> Remove project')