From a23efc330c5bd94ac6607bc67ead0602711553a2 Mon Sep 17 00:00:00 2001 From: "Maxence G. de Montauzan" Date: Sun, 22 Jul 2018 00:25:31 +0200 Subject: [PATCH] No 2 projects with same name --- pits_schema.sql | 2 +- project.py | 34 +++++++++++++++++++--------------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/pits_schema.sql b/pits_schema.sql index c9488b2..76a3925 100644 --- a/pits_schema.sql +++ b/pits_schema.sql @@ -9,7 +9,7 @@ CREATE TABLE project ( id integer primary key, username text, -- User the project belongs to. - name text, -- Project name. + name text unique, -- Project name. status text, -- Project status. created_at date, -- When the project was created? updated_at date -- When the project was last updated? diff --git a/project.py b/project.py index 22f4932..0d20c30 100644 --- a/project.py +++ b/project.py @@ -3,6 +3,7 @@ import getpass import datetime import logging import sys +import sqlite3 import task @@ -91,7 +92,6 @@ def parse_project_args(project, args): def create_project(project, conn): - # TODO Project is same name is forbidden logging.info(">> Create project") query = """ @@ -100,21 +100,25 @@ def create_project(project, conn): """ cursor = conn.cursor() - cursor.execute( - query, - (getpass.getuser(), project.name, project.status, datetime.datetime.now()), - ) - project_id = cursor.lastrowid - action_message = "{} (status: {})".format(project.name, project.status) - - record_action(cursor, TypeAction.CREATE, action_message, project_id=project_id) - logging.debug(action_message) - - print( - "created project {}: {} (status: {})".format( - project_id, project.name, project.status + try: + cursor.execute( + query, + (getpass.getuser(), project.name, project.status, datetime.datetime.now()), ) - ) + project_id = cursor.lastrowid + action_message = "{} (status: {})".format(project.name, project.status) + + record_action(cursor, TypeAction.CREATE, action_message, project_id=project_id) + logging.debug(action_message) + + print( + "created project {}: {} (status: {})".format( + project_id, project.name, project.status + ) + ) + except sqlite3.IntegrityError as error: + print("project with the same name already exists") + logging.info(error) def edit_project(project, project_id, conn):