| @@ -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) | |||
| <head> | |||
| <title>Beelance2</title> | |||
| @@ -20,13 +20,14 @@ $def with (nav, apply_form, get_apply_permission_form, project, applicants) | |||
| <form method="POST"> | |||
| <p>Users to apply:</p> | |||
| $applicants | |||
| <h4>Add Users</h4> | |||
| $:apply_form.render() | |||
| $for i, user in enumerate(applicants): | |||
| <p>Users to apply:</p> | |||
| $for i in range(0, len(applicants)): | |||
| <div> | |||
| $ 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() | |||
| </div> | |||
| </form> | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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) | |||