diff --git a/src/app/templates/new_project.html b/src/app/templates/new_project.html index f827652..c3609a2 100644 --- a/src/app/templates/new_project.html +++ b/src/app/templates/new_project.html @@ -1,4 +1,4 @@ -$def with (nav, project_form) +$def with (nav, project_form, messasge) Beelance2 @@ -16,6 +16,8 @@ $def with (nav, project_form)
$:project_form.render()
+ +

$messasge

diff --git a/src/app/views/forms.py b/src/app/views/forms.py index 9fe54ae..513df15 100644 --- a/src/app/views/forms.py +++ b/src/app/views/forms.py @@ -72,7 +72,7 @@ def get_project_form_elements(project_title="", project_description="", category def get_user_form_elements(identifier=0, user_name="", read_permission=True, write_permission=False, modify_permission=False): users = get_users() user_form_elements = ( - form.Textbox("user_name_" + str(identifier), not_empty, description="User", value=user_name), + form.Textbox("user_name_" + str(identifier), description="User", value=user_name), form.Checkbox("read_permission_" + str(identifier), description="Read Permission", checked=read_permission), form.Checkbox("write_permission_" + str(identifier), description="Write Permission", checked=write_permission), form.Checkbox("modify_permission_" + str(identifier), description="Modify Permission", checked=modify_permission) @@ -87,11 +87,11 @@ def get_new_project_form(elements): :return: The ready to use project form """ return form.Form(*elements, - form.Button("Add User", type="submit", description="Add User", value="add_user"), - form.Button("Remove User", type="submit", description="Remove User", value="remove_user"), - form.Button("Add Task", type="submit", description="Add Task", value="add_task"), - form.Button("Remove Task", type="submit", description="Remove Task ", value="remove_task"), - form.Button("Create Project", type="submit", description="Create Project", value="create_project") + form.Button("add_user", type="submit", description="Add User", value="add_user", html="Add User"), + form.Button("remove_user", type="submit", description="Remove User", value="remove_user", html="Remove User"), + form.Button("add_task", type="submit", description="Add Task", value="add_task", html="Add Task"), + form.Button("remove_task", type="submit", description="Remove Task ", value="remove_task", html="Remove Task"), + form.Button("create_project", type="submit", description="Create Project", value="create_project", html="Create Project") ) def get_apply_form(elements): diff --git a/src/app/views/new_project.py b/src/app/views/new_project.py index 2b222d9..ec3fc5f 100644 --- a/src/app/views/new_project.py +++ b/src/app/views/new_project.py @@ -21,7 +21,7 @@ class New_project: task_form_elements = get_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) + return render.new_project(nav, project_form, "") def POST(self): """ @@ -36,78 +36,89 @@ class New_project: nav = get_nav_bar(session) print(data) - # Try the three different URL input parameters to determine how to generate the form - try: - # Add a set of task fields to the form - if data["Add Task"]: - project_form = self.compose_form(data, "add_task") - return render.new_project(nav, project_form) - except Exception as e: - try: - # Remove a set of task fields from the form - if data["Remove Task"]: - project_form = self.compose_form(data, "remove_task") - 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) - except Exception as e: - try: - if data["Remove User"]: - project_form = self.compose_form(data, "remove_user") - 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"]: - task_count = get_task_count(data) - user_count = get_user_count(data) - - # Get the "real" user_count, if there is only one field and no users assigned the project is open - status = "open" - if user_count > 0: - if len(data.user_name_0): - status = "in progress" - - # Save the project to the database - projectid = models.project.set_project(data.category_name, str(session.userid), - data.project_title, data.project_description, status) + # Try the different URL input parameters to determine how to generate the form + + # Add a set of task fields to the form + if data.add_task: + project_form = self.compose_form(data, "add_task") + return render.new_project(nav, project_form, "") + + # Remove a set of task fields from the form + if data.remove_task: + project_form = self.compose_form(data, "remove_task") + return render.new_project(nav, project_form, "") + + 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, "") + + # Post the form data and save the project in the database + if data.create_project: + + project_form = self.compose_form(data, None) + if not project_form.validates(): + return render.new_project(nav, project_form, "") + + task_count = get_task_count(data) + user_count = get_user_count(data) + + # If there already are users assignet to the project the status will be set to in progress + status = "open" + if len(data.user_name_0): + status = "in progress" + + # Validate the input user names + for i in range(0, user_count): + if len(data["user_name_"+str(i)]) and not models.login.get_user_id_by_name(data["user_name_"+str(i)]): + return render.register(nav, project_form, "Invalid user: " + data["user_name_"+str(i)]) + + # Save the project to the database + projectid = models.project.set_project(data.category_name, str(session.userid), + data.project_title, data.project_description, status) + + # 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)])) - # 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): - if len(data["user_name_"+str(i)]): - userid = models.login.get_user_id_by_name(data["user_name_"+str(i)]) - read, write, modify = "FALSE", "FALSE", "FALSE" - try: - data["read_permission_"+str(i)] - read = "TRUE" - except Exception as e: - read = "FALSE" - pass - try: - data["write_permission_"+str(i)] - write = "TRUE" - except Exception as e: - write = "FALSE" - pass - try: - data["modify_permission_"+str(i)] - modify = "TRUE" - except Exception as e: - # This error will be raised if no permission is set - modify = "FALSE" - pass - print(read, write, modify) - models.project.set_projects_user(str(projectid), str(userid), read, write, modify) - raise web.seeother('/') - except Exception as e: - raise e + # Save the users in the database + if len(data.user_name_0): + + + for i in range(0, user_count): + if len(data["user_name_"+str(i)]): + userid = models.login.get_user_id_by_name(data["user_name_"+str(i)]) + read, write, modify = "FALSE", "FALSE", "FALSE" + try: + data["read_permission_"+str(i)] + read = "TRUE" + except Exception as e: + read = "FALSE" + pass + try: + data["write_permission_"+str(i)] + write = "TRUE" + except Exception as e: + write = "FALSE" + pass + try: + data["modify_permission_"+str(i)] + modify = "TRUE" + except Exception as e: + # This error will be raised if no permission is set + modify = "FALSE" + pass + print(read, write, modify) + models.project.set_projects_user(str(projectid), str(userid), read, write, modify) + + + raise web.seeother('/?projects=my') + def compose_form(self, data, operation): """ Compose a new project form by adding or removing a task diff --git a/src/app/views/register.py b/src/app/views/register.py index 8ad4308..48a1ab6 100644 --- a/src/app/views/register.py +++ b/src/app/views/register.py @@ -32,13 +32,13 @@ class Register: nav = get_nav_bar(session) data = web.input() - f = register_form() + register = register_form() if not f.validates(): - return render.register(nav, r, "All fields must be valid.") + return render.register(nav, register, "All fields must be valid.") # Check if user exists if models.login.get_user_id_by_name(data.username): - return render.register(nav, r, "Invalid user, already exists.") + return render.register(nav, register, "Invalid user, already exists.") models.register.set_user(data.username, hashlib.md5(b'TDT4237' + data.password.encode('utf-8')).hexdigest(),