From 9ca6e350509e75f1507f4afe133848f5bcf00af1 Mon Sep 17 00:00:00 2001 From: jakobsn Date: Wed, 13 Nov 2019 16:19:02 +0100 Subject: [PATCH] Create project with users --- mysql/sql/init.sql | 2 +- src/app/models/login.py | 2 +- src/app/models/project.py | 10 ++--- src/app/views/new_project.py | 72 ++++++++++++++++++------------------ 4 files changed, 44 insertions(+), 42 deletions(-) diff --git a/mysql/sql/init.sql b/mysql/sql/init.sql index 8c6cf9d..670764e 100644 --- a/mysql/sql/init.sql +++ b/mysql/sql/init.sql @@ -65,7 +65,7 @@ CREATE TABLE projects ( FOREIGN KEY (userid) REFERENCES users(userid) ); -CREATE TABLE project_users ( +CREATE TABLE projects_users ( projectid INT UNSIGNED NOT NULL, userid INT UNSIGNED NOT NULL, read_permission BOOLEAN, diff --git a/src/app/models/login.py b/src/app/models/login.py index fc038de..7b372b0 100644 --- a/src/app/models/login.py +++ b/src/app/models/login.py @@ -16,7 +16,7 @@ def get_user_id_by_name(username): cursor = db.cursor() query = ("SELECT userid from users WHERE username =\"" + username + "\"") cursor.execute(query) - userid = cursor.fetchall() + userid = cursor.fetchall()[0][0] cursor.close() return userid diff --git a/src/app/models/project.py b/src/app/models/project.py index 57d2164..46e5305 100644 --- a/src/app/models/project.py +++ b/src/app/models/project.py @@ -160,12 +160,12 @@ def get_task_files(taskid): cursor.close return filenames -def set_project_user(projectid, userid, read_permission="TRUE", +def set_projects_user(projectid, userid, read_permission="TRUE", write_permission="NULL", modify_permission="NULL"): cursor = db.cursor() - query = ("INSERT INTO project_users VALUES (\"" + project_id + "\", \"" + - userid + "\", \"" + read_permission + "\", \"" + - write_permission + "\", \"" + modify_permission + "\"") + query = ("INSERT INTO projects_users VALUES (\"" + projectid + "\", \"" + + userid + "\", " + read_permission + ", " + + write_permission + ", " + modify_permission + ")") cursor.execute(query) - df.commit() + db.commit() cursor.close() diff --git a/src/app/views/new_project.py b/src/app/views/new_project.py index e69d3bc..a6cbc3c 100644 --- a/src/app/views/new_project.py +++ b/src/app/views/new_project.py @@ -47,47 +47,49 @@ class New_project: project_form = self.compose_form(data, "remove_task") return render.new_project(nav, project_form) except Exception as e: - try: - # Post the form data and save the project in the database - if data["Create Project"]: - projectid = models.project.set_project(data.category_name, str(session.userid), - data.project_title, data.project_description, "open") - task_count = self.get_task_count(data) - user_count = self.get_user_count(data) - # Save the tasks in the database - for i in range(0, task_count): - models.project.set_task(str(projectid), (data["task_title_" + str(i)]), - (data["task_description_" + str(i)]), (data["budget_" + str(i)])) - for i in range(0, user_count): - userid = models.login.get_user_id_by_name(data["user_name_"+str(i)]) - read, write, modify = "FALSE" - try: - if data["read_permission_"str(i)]: - read = "TRUE" - except Exception as e: - try: - if data["write_permission_"str(i)]: - write = "TRUE" - except Exception as e: - try: - if data["modify_permission_"str(i)]: - modify = "TRUE" - models.project.set_project_user(str(projectid), str(userid), ) - raise web.seeother('/') - + if data["Add User"]: + project_form = self.compose_form(data, "add_user") + return render.new_project(nav, project_form) except Exception as e: try: - if data["Add User"]: - project_form = self.compose_form(data, "add_user") - return render.new_project(nav, project_form) + if data["Remove User"]: + project_form = self.compose_form(data, "remove_user") + return render.new_project(nav, project_form) except Exception as e: try: - if data["Remove User"]: - project_form = self.compose_form(data, "remove_user") - return render.new_project(nav, project_form) + # Post the form data and save the project in the database + if data["Create Project"]: + projectid = models.project.set_project(data.category_name, str(session.userid), + data.project_title, data.project_description, "open") + task_count = self.get_task_count(data) + user_count = self.get_user_count(data) + # Save the tasks in the database + for i in range(0, task_count): + models.project.set_task(str(projectid), (data["task_title_" + str(i)]), + (data["task_description_" + str(i)]), (data["budget_" + str(i)])) + for i in range(0, user_count): + userid = models.login.get_user_id_by_name(data["user_name_"+str(i)]) + read, write, modify = "FALSE", "FALSE", "FALSE" + try: + if data["read_permission_"+str(i)]: + read = "TRUE" + except Exception as e: + try: + if data["write_permission_"+str(i)]: + write = "TRUE" + except Exception as e: + try: + if data["modify_permission_"+str(i)]: + modify = "TRUE" + except Exception as e: + # This error will be raised if no permission is set + raise e + models.project.set_projects_user(str(projectid), str(userid), read, write, modify) + raise web.seeother('/') except Exception as e: - raise e + raise e + def get_task_count(self, data): """