Improve update

This commit is contained in:
2018-07-10 20:04:57 +02:00
parent 7bb3f9af80
commit 2217abb304

View File

@@ -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')