From 9dd942039f5fae3d1b957cc970263c66d6505f0a Mon Sep 17 00:00:00 2001 From: jakobsn Date: Wed, 13 Nov 2019 14:32:05 +0100 Subject: [PATCH] add user --- src/app/views/forms.py | 11 +++--- src/app/views/new_project.py | 76 ++++++++++++++++++++++++++++++++---- 2 files changed, 74 insertions(+), 13 deletions(-) diff --git a/src/app/views/forms.py b/src/app/views/forms.py index 4175602..4c88ec1 100644 --- a/src/app/views/forms.py +++ b/src/app/views/forms.py @@ -64,13 +64,14 @@ def get_project_form_elements(project_title="", project_description="", category ) return project_form_elements -def get_user_form_elements(user_name, read_permission, write_permission, modify_permission): +def get_user_form_elements(identifier=0, user_name="", read_permission=True, write_permission=False, modify_permission=False): user_form_elements = ( - form.Textbox("username", description="User", value=user_name), - form.Checkbox("read_permission", description="Read Permission", checked=True), - form.Checkbox("write_permission", description="Write Permission", checked=False), - form.Checkbox("modify_permission", description="Modify Permission", checked=False) + form.Textbox("user_name_" + str(identifier), description="User", value=user_name), + form.Checkbox("read_permission_" + str(identifier), description="Read Permission", checked=read_permission, value=read_permission), + form.Checkbox("write_permission_" + str(identifier), description="Write Permission", checked=write_permission, value=write_permission), + form.Checkbox("modify_permission_" + str(identifier), description="Modify Permission", checked=modify_permission, value=modify_permission) ) + return user_form_elements def get_new_project_form(elements): """ diff --git a/src/app/views/new_project.py b/src/app/views/new_project.py index 4402438..cf17cd1 100644 --- a/src/app/views/new_project.py +++ b/src/app/views/new_project.py @@ -1,5 +1,5 @@ import web -from views.forms import get_task_form_elements, get_new_project_form, get_project_form_elements +from views.forms import get_task_form_elements, get_new_project_form, get_project_form_elements, get_user_form_elements import models.project from views.utils import get_nav_bar @@ -18,7 +18,8 @@ class New_project: nav = get_nav_bar(session) project_form_elements = get_project_form_elements() task_form_elements = get_task_form_elements() - project_form = get_new_project_form((project_form_elements + task_form_elements)) + user_form_elements = get_user_form_elements() + project_form = get_new_project_form((project_form_elements + task_form_elements + user_form_elements)) return render.new_project(nav, project_form) def POST(self): @@ -48,6 +49,7 @@ class New_project: try: # Post the form data and save the project in the database if data["Create Project"]: + print("hei") 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) @@ -55,9 +57,15 @@ class New_project: 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)])) + print("HIHI") raise web.seeother('/') except Exception as e: - raise e + try: + if data["Add User"]: + project_form = self.compose_form(data, "add_user") + return render.new_project(nav, project_form) + except Exception as e: + raise e def get_task_count(self, data): """ @@ -68,9 +76,27 @@ class New_project: :param data: The data object from web.input :return: The number of tasks opened by the client """ - task_count = int((len(data) - 4) / 3) + #task_count = int((len(data) - 4) / 3) + + task_count = 0 + while True: + try: + data["task_title_"+str(task_count)] + task_count += 1 + except: + break return task_count + def get_user_count(self, data): + user_count = 0 + while True: + try: + data["user_name_"+str(user_count)] + user_count += 1 + except: + break + return user_count + def compose_form(self, data, operation): """ Compose a new project form by adding or removing a task @@ -81,22 +107,56 @@ class New_project: :return: A complete project form object """ task_count = self.get_task_count(data) - # A task is either added or removed + user_count = self.get_user_count(data) + print(user_count) if operation == "remove_task" and task_count >= 1: - task_count -= 1 + task_count -= 1 + + if operation == "remove_user" and user_count >=1: + user_count -= 1 project_form_elements = get_project_form_elements(data.project_title, data.project_description, data.category_name) task_form_elements = () - old_task_form_element = () + user_form_elements = () for i in range(0, task_count): old_task_form_element = get_task_form_elements(i, data["task_title_"+str(i)], data["task_description_"+str(i)], data["budget_"+str(i)]) task_form_elements = (task_form_elements + old_task_form_element) + for i in range(0, user_count): + try: + old_user_form_element = get_user_form_elements(i, data["user_name_"+str(i)], + data["read_permission_"+str(i)], data["write_permission_"+str(i)], data["modify_permission_"+str(i)]) + user_form_elements = (user_form_elements + old_user_form_element) + except Exception as e: + try: + old_user_form_element = get_user_form_elements(i, data["user_name_"+str(i)], + data["read_permission_"+str(i)], data["write_permission_"+str(i)]) + user_form_elements = (user_form_elements + old_user_form_element) + pass + except Exception as e: + try: + old_user_form_element = get_user_form_elements(i, data["user_name_"+str(i)], + data["read_permission_"+str(i)]) + user_form_elements = (user_form_elements + old_user_form_element) + pass + except Exception as e: + try: + old_user_form_element = get_user_form_elements(i, data["user_name_"+str(i)]) + user_form_elements = (user_form_elements + old_user_form_element) + pass + except Exception as e: + raise e + if operation == "add_task": new_task_form_elements = get_task_form_elements(task_count) - project_form = get_new_project_form((project_form_elements + task_form_elements + new_task_form_elements)) + project_form = get_new_project_form((project_form_elements + task_form_elements + new_task_form_elements + user_form_elements)) + return project_form + + if operation == "add_user": + new_user_form_elements = get_user_form_elements(user_count) + project_form = get_new_project_form((project_form_elements + task_form_elements + user_form_elements + new_user_form_elements)) return project_form project_form = get_new_project_form((project_form_elements + task_form_elements))