25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

95 satır
3.8KB

  1. import web
  2. import models.project
  3. from models.login import get_user_name_by_id
  4. from views.utils import get_nav_bar, get_element_count
  5. from views.forms import get_apply_form, get_user_dropdown, get_apply_permissions_form
  6. # Get html templates
  7. render = web.template.render('templates/')
  8. class Apply:
  9. def GET(self):
  10. print("GET")
  11. # Get session
  12. session = web.ctx.session
  13. # Get navbar
  14. nav = get_nav_bar(session)
  15. data = web.input(projectid=0)
  16. if data.projectid:
  17. project = models.project.get_project_by_id(data.projectid)
  18. else:
  19. project = [[]]
  20. tasks = [[]]
  21. user_dropdown = get_user_dropdown()
  22. apply_form = get_apply_form(user_dropdown)
  23. apply_permissions_form = get_apply_permissions_form()
  24. applicants = [[session.userid, session.username]]
  25. render = web.template.render('templates/', globals={"get_apply_permissions_form":get_apply_permissions_form, 'session':session})
  26. return render.apply(nav, apply_form, get_apply_permissions_form, project, applicants)
  27. def POST(self):
  28. data = web.input(projectid=0, add_user=None, remove_user=None, apply=None)
  29. session = web.ctx.session
  30. nav = get_nav_bar(session)
  31. applicants = [session.username]
  32. user_dropdown = get_user_dropdown()
  33. apply_form = get_apply_form(user_dropdown)
  34. apply_permission_form = get_apply_permissions_form()
  35. print("POST")
  36. print(data)
  37. render = web.template.render('templates/', globals={"get_apply_permissions_form":get_apply_permissions_form, 'session':session})
  38. if data.projectid:
  39. project = models.project.get_project_by_id(data.projectid)
  40. if data.add_user:
  41. applicants = self.get_applicants(data, "add_user")
  42. return render.apply(nav, apply_form, get_apply_permissions_form, project, applicants)
  43. elif data.remove_user:
  44. applicants = self.get_applicants(data, "remove_user")
  45. return render.apply(nav, apply_form, get_apply_permissions_form, project, applicants)
  46. elif data.apply:
  47. applicants = self.get_applicants(data, "")
  48. for applicant in applicants:
  49. models.project.set_projects_user(data.projectid, str(applicant[0]), "TRUE", "TRUE", "FALSE")
  50. models.project.update_project_status(data.projectid, "in progress")
  51. raise web.seeother(('/project?projectid=' + str(data.projectid)))
  52. def get_applicants(self, data, operation):
  53. print(operation)
  54. print(data)
  55. user_count = get_element_count(data, "user_")
  56. print("count", user_count)
  57. applicants = []
  58. for i in range (0, user_count):
  59. print("Raw applicant", data["user_"+str(i)])
  60. applicant = data["user_"+str(i)][1:][:-1].split(",")
  61. applicants.append([ int(applicant[0]), applicant[1][2:][:-1] ])
  62. if operation == "remove_user":
  63. print("remove")
  64. user_to_remove = data.remove_user[1:][:-1].split(",")
  65. user_to_remove = [int(user_to_remove[0]), user_to_remove[1][2:][:-1]]
  66. for i in range (0, user_count):
  67. print(user_to_remove, applicants[i])
  68. if user_to_remove == applicants[i]:
  69. applicants.pop(i)
  70. break
  71. elif operation == "add_user":
  72. user_id_to_add = data.user_to_add
  73. user_name_to_add = get_user_name_by_id(user_id_to_add)
  74. new_applicant = [ int(user_id_to_add), user_name_to_add ]
  75. if new_applicant not in applicants:
  76. applicants.append(new_applicant)
  77. print(applicants)
  78. return applicants