From df19ae3ba46d990171dbd96e53b37ee61925a9c2 Mon Sep 17 00:00:00 2001 From: jakobsn Date: Fri, 29 Nov 2019 16:08:58 +0100 Subject: [PATCH] checkpoint apply edit --- src/app/templates/apply.html | 13 +++++----- src/app/views/apply.py | 48 +++++++++++++++++++++++++++--------- src/app/views/forms.py | 10 ++++---- src/app/views/new_project.py | 7 ++---- 4 files changed, 50 insertions(+), 28 deletions(-) diff --git a/src/app/templates/apply.html b/src/app/templates/apply.html index 9a830aa..4a0c642 100644 --- a/src/app/templates/apply.html +++ b/src/app/templates/apply.html @@ -1,4 +1,4 @@ -$def with (nav, apply_form, get_apply_permission_form, project, applicants) +$def with (nav, apply_form, get_apply_permission_form, project, applicants, permissions) Beelance2 @@ -20,13 +20,14 @@ $def with (nav, apply_form, get_apply_permission_form, project, applicants)
-

Users to apply:

- $applicants +

Add Users

$:apply_form.render() - $for i, user in enumerate(applicants): +

Users to apply:

+ + $for i in range(0, len(applicants)):
- $ apply_permissions_form = get_apply_permissions_form(i, userid=user) - $user[1] + $ apply_permissions_form = get_apply_permissions_form(i, permissions[i][0], permissions[i][1], permissions[i][2], applicants[i]) + $applicants[i][1] $:apply_permissions_form.render()
diff --git a/src/app/views/apply.py b/src/app/views/apply.py index 350e255..a808839 100644 --- a/src/app/views/apply.py +++ b/src/app/views/apply.py @@ -27,9 +27,10 @@ class Apply: apply_form = get_apply_form(user_dropdown) apply_permissions_form = get_apply_permissions_form() applicants = [[session.userid, session.username]] + permissions = [["TRUE", "TRUE", "TRUE"]] render = web.template.render('templates/', globals={"get_apply_permissions_form":get_apply_permissions_form, 'session':session}) - return render.apply(nav, apply_form, get_apply_permissions_form, project, applicants) + return render.apply(nav, apply_form, get_apply_permissions_form, project, applicants, permissions) def POST(self): data = web.input(projectid=0, add_user=None, remove_user=None, apply=None) @@ -46,18 +47,18 @@ class Apply: project = models.project.get_project_by_id(data.projectid) if data.add_user: - applicants = self.get_applicants(data, "add_user") - return render.apply(nav, apply_form, get_apply_permissions_form, project, applicants) + applicants, permissions = self.get_applicants(data, "add_user") + return render.apply(nav, apply_form, get_apply_permissions_form, project, applicants,permissions) elif data.remove_user: - applicants = self.get_applicants(data, "remove_user") - return render.apply(nav, apply_form, get_apply_permissions_form, project, applicants) + applicants, permissions = self.get_applicants(data, "remove_user") + return render.apply(nav, apply_form, get_apply_permissions_form, project, applicants, permissions) elif data.apply: - applicants = self.get_applicants(data, "") - for applicant in applicants: - models.project.set_projects_user(data.projectid, str(applicant[0]), "TRUE", "TRUE", "FALSE") - models.project.update_project_status(data.projectid, "in progress") - raise web.seeother(('/project?projectid=' + str(data.projectid))) + applicants, permissions = self.get_applicants(data, "") + for applicant, permission in zip(applicants, permissions): + models.project.set_projects_user(data.projectid, str(applicant[0]), permission[0], permission[1], permission[2]) + models.project.update_project_status(data.projectid, "in progress") + raise web.seeother(('/project?projectid=' + str(data.projectid))) def get_applicants(self, data, operation): print(operation) @@ -65,11 +66,33 @@ class Apply: user_count = get_element_count(data, "user_") print("count", user_count) applicants = [] + permissions = [] for i in range (0, user_count): print("Raw applicant", data["user_"+str(i)]) applicant = data["user_"+str(i)][1:][:-1].split(",") applicants.append([ int(applicant[0]), applicant[1][2:][:-1] ]) + 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: + modify = "FALSE" + pass + permissions.append([read, write, modify]) + if operation == "remove_user": print("remove") user_to_remove = data.remove_user[1:][:-1].split(",") @@ -78,17 +101,18 @@ class Apply: print(user_to_remove, applicants[i]) if user_to_remove == applicants[i]: applicants.pop(i) + permissions.pop(i) break elif operation == "add_user": - user_id_to_add = data.user_to_add user_name_to_add = get_user_name_by_id(user_id_to_add) new_applicant = [ int(user_id_to_add), user_name_to_add ] if new_applicant not in applicants: applicants.append(new_applicant) + permissions.append(["TRUE", "FALSE", "FALSE"]) print(applicants) - return applicants + return applicants, permissions diff --git a/src/app/views/forms.py b/src/app/views/forms.py index 9a5264d..ded25c9 100644 --- a/src/app/views/forms.py +++ b/src/app/views/forms.py @@ -109,7 +109,7 @@ def get_apply_form(elements): except TypeError as e: apply_form = form.Form(elements, form.Button("add_user", type="submit", description="Add User", value="add_user", html="Add User"), - form.Button("apply", type="submit", description="Apply", value="apply", html="apply") + form.Button("apply", type="submit", description="Apply", value="apply", html="Apply") ) return apply_form @@ -117,12 +117,12 @@ def get_user_dropdown(): users = get_users() return form.Dropdown("user_to_add", description="User", args=users) -def get_apply_permissions_form(identifier=0, read_permission=True, write_permission=False, modify_permission=False, userid=None): +def get_apply_permissions_form(identifier=0, read_permission="TRUE", write_permission="FALSE", modify_permission="FALSE", userid=None): user_permissions = form.Form( form.Button("remove_user", type="submit", description="User to remove", value=userid, html="X"), form.Hidden("user_"+str(identifier), description="User to apply for project", value=userid), - form.Checkbox("read_permission_" + str(identifier), description="Read Permission", checked=read_permission, value=True), - form.Checkbox("write_permission_" + str(identifier), description="Write Permission", checked=write_permission, value=True), - form.Checkbox("modify_permission_" + str(identifier), description="Modify Permission", checked=modify_permission, value=True) + form.Checkbox("read_permission_" + str(identifier), description="Read Permission", checked=(read_permission=="TRUE"), value=True), + form.Checkbox("write_permission_" + str(identifier), description="Write Permission", checked=(write_permission=="TRUE"), value=True), + form.Checkbox("modify_permission_" + str(identifier), description="Modify Permission", checked=(modify_permission=="TRUE"), value=True) ) return user_permissions diff --git a/src/app/views/new_project.py b/src/app/views/new_project.py index 9c74c30..6bf177b 100644 --- a/src/app/views/new_project.py +++ b/src/app/views/new_project.py @@ -107,11 +107,9 @@ class New_project: data["modify_permission_"+str(i)] modify = "TRUE" except Exception as e: - # This error will be raised if no permission is set modify = "FALSE" - + pass models.project.set_projects_user(str(projectid), str(userid), read, write, modify) - raise web.seeother('/?projects=my') def compose_form(self, data, operation): @@ -144,7 +142,7 @@ class New_project: # Recreate user form fields user_form_elements = () for i in range(0, user_count): - read, write, modify = "FALSE", "FALSE", "FALSE" + read, write, modify = False, False, False try: data["read_permission_"+str(i)] read = True @@ -161,7 +159,6 @@ class New_project: data["modify_permission_"+str(i)] modify = True except Exception as e: - # This error will be raised if no permission is set modify = False pass old_user_form_element = get_user_form_elements(i, data["user_name_"+str(i)], read, write, modify)