diff --git a/src/app/aids.txt b/src/app/aids.txt new file mode 100644 index 0000000..c8b301f --- /dev/null +++ b/src/app/aids.txt @@ -0,0 +1 @@ +aids diff --git a/src/app/models/login.py b/src/app/models/login.py index 7b372b0..687c8f6 100644 --- a/src/app/models/login.py +++ b/src/app/models/login.py @@ -20,6 +20,13 @@ def get_user_id_by_name(username): cursor.close() return userid +def get_user_name_by_id(userid): + cursor = db.cursor() + query = ("SELECT username from users WHERE userid =\"" + userid + "\"") + cursor.execute(query) + username = cursor.fetchall()[0][0] + cursor.close() + return username def match_user(username, password): """ diff --git a/src/app/templates/apply.html b/src/app/templates/apply.html new file mode 100644 index 0000000..f6ef115 --- /dev/null +++ b/src/app/templates/apply.html @@ -0,0 +1,30 @@ +$def with (nav, apply_form, project, applicants) + + + Beelance2 + + + + + + + + $:nav + +

Apply for this project

+ + $if project[5] == "open" and session.userid != project[2]: +

Title: $project[3]

+

Description: $project[4]

+

Status: $project[5]

+ + +
+

Users to apply:

+ $for i, user in enumerate(applicants): +
$user[1]
+ + $:apply_form.render() +
+ + \ No newline at end of file diff --git a/src/app/views/apply.py b/src/app/views/apply.py new file mode 100644 index 0000000..ebf32ae --- /dev/null +++ b/src/app/views/apply.py @@ -0,0 +1,88 @@ +import web +import models.project +from models.login import get_user_name_by_id +from views.utils import get_nav_bar +from views.forms import get_apply_form, get_user_dropdown +from views.new_project import get_user_count + +# Get html templates +render = web.template.render('templates/') + +class Apply: + + def GET(self): + print("GET") + # Get session + session = web.ctx.session + # Get navbar + nav = get_nav_bar(session) + + data = web.input(projectid=0) + if data.projectid: + project = models.project.get_project_by_id(data.projectid) + #tasks = models.project.get_tasks_by_project_id(data.projectid) + else: + project = [[]] + tasks = [[]] + #render = web.template.render('templates/', globals={'get_task_files':models.project.get_task_files, 'session':session}) + #render_project = render.project(nav, project[0], tasks) + user_dropdown = get_user_dropdown() + apply_form = get_apply_form(user_dropdown) + applicants = [[session.userid, session.username]] + return render.apply(nav, apply_form, project, applicants) + + def POST(self): + data = web.input(projectid=0) + session = web.ctx.session + nav = get_nav_bar(session) + applicants = [session.username] + user_dropdown = get_user_dropdown() + apply_form = get_apply_form(user_dropdown) + print("POST") + print(data) + if data.projectid: + project = models.project.get_project_by_id(data.projectid) + try: + if data["Add User"]: + #project_form = self.compose_form(data, "add_user") + applicants = self.compose_form(data, "add_user") + return render.apply(nav, apply_form, project, applicants) + except Exception as e: + raise + try: + if data["Remove User"]: + #project_form = self.compose_form(data, "remove_user") + return render.apply(nav, apply_form, project, applicants) + except Exception as e: + try: + if data["Apply"]: + models.project.set_projects_user(str(projectid), str(session.userid), read, write, modify) + raise web.seeother(('/project?projectid=' + data.projectid)) + except Exception as e: + raise + + def compose_form(self, data, operation): + print(operation) + print(data) + if operation == "remove_user": + pass + if operation == "add_user": + user_count = get_user_count(data) + print("count", user_count) + applicants = [] + for i in range (0, user_count): + print("Raw applicant", data["user_name_"+str(i)]) + applicant = data["user_name_"+str(i)][1:][:-1].split(",") + print(applicant) + applicants.append([ int(applicant[0]), applicant[1][2:][:-1] ]) + + user_id_to_add = data.user_id_0 + 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) + print(applicants) + + return applicants + + diff --git a/src/app/views/forms.py b/src/app/views/forms.py index 3c1fe0c..cdfb64d 100644 --- a/src/app/views/forms.py +++ b/src/app/views/forms.py @@ -98,14 +98,13 @@ 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"), - form.Button("Remove User", type="submit", description="Remove User", value="remove_user"), form.Button("Apply", type="submit", description="Apply", value="apply") ) return apply_form def get_user_dropdown(identifier=0): users = get_users() - return form.Dropdown("user_name_" + str(identifier), description="User", args=users) + return form.Dropdown("user_id_" + str(identifier), description="User", args=users) # Define the guestbook form guestbook_form = form.Form(