Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

167 rindas
7.9KB

  1. from web import form
  2. from models.project import get_categories
  3. from models.user import get_users, get_user_id_by_name
  4. # Regex for input validation
  5. vemail = form.regexp(r".*@.*", "- Must be a valid email address")
  6. vpass = form.regexp(r".{6,100}$", '- Must be atleast 6 characters long')
  7. number = form.regexp(r"^[0-9]+$", "- Must be a number")
  8. not_empty = form.regexp(r".+", "- This field is required")
  9. # Define the login form
  10. login_form = form.Form(
  11. form.Textbox("username", description="Username"),
  12. form.Password("password", description="Password"),
  13. form.Textbox("authenticator_secret", description="Authenticator code"),
  14. form.Checkbox("remember", description= "Remember me", checked=True, value=False),
  15. form.Button("Log In", type="submit", description="Login"),
  16. )
  17. # Define the register form
  18. register_form = form.Form(
  19. form.Textbox("username", not_empty, description="Username"),
  20. form.Textbox("full_name", not_empty, description="Full name"),
  21. form.Textbox("company", description="Company"),
  22. form.Textbox("email", vemail, description="Email Address"),
  23. form.Textbox("street_address", description="Street address"),
  24. form.Textbox("city", description="City"),
  25. form.Textbox("state", description="State"),
  26. form.Textbox("postal_code", number, description="Postal code"),
  27. form.Textbox("country", description="Country"),
  28. form.Password("password", vpass, description="Password"),
  29. form.Button("Register", type="submit", description="Register")
  30. )
  31. # Define the reset forms
  32. request_reset_form = form.Form(
  33. form.Textbox("username", description="Username"),
  34. form.Textbox("email", description="Email address"),
  35. form.Button("Submit", type="submit", description="Submit"),
  36. )
  37. reset_form = form.Form(
  38. form.Password("temporary", description="Temporary password"),
  39. form.Password("password", description="New password"),
  40. form.Password("repeat", description="Repeat new password"),
  41. form.Button("Change password", type="submit", description="Change password"),
  42. )
  43. # Define the project view form
  44. project_form = form.Form(
  45. form.Input("myfile", type="file"),
  46. form.Hidden("taskid"),
  47. form.Button("submit", type="submit", html="Upload"),
  48. form.Button("deliver", type="submit", value=True, html="Deliver"),
  49. form.Button("accepted", type="submit", value=True, html="Accept Delivery"),
  50. form.Button("declined", type="submit", value=True, html="Decline Delivery")
  51. )
  52. def get_task_form_elements(identifier=0, task_title="", task_description="", budget=""):
  53. """
  54. Generate a set of task form elements
  55. :param identifier: The id of the task
  56. :param task_title: Task title
  57. :param task_description: Task description
  58. :param budget: Task budget
  59. :type identifier: int, str
  60. :type task_title: str
  61. :type task_description: str
  62. :type budget: int, str
  63. :return: A set of task form elements
  64. """
  65. task_form_elements = (
  66. form.Textbox("task_title_" + str(identifier), not_empty, description="Task title", value=task_title),
  67. form.Textarea("task_description_" + str(identifier), not_empty,description="Task description", value=task_description),
  68. form.Textbox("budget_" + str(identifier), number, description="Task budget", value=str(budget))
  69. )
  70. return task_form_elements
  71. def get_project_form_elements(project_title="", project_description="", category_name=""):
  72. """
  73. Generate a set of project form elements
  74. :param project_title: Project title
  75. :param project_description: Project description
  76. :param category_name: Name of the belonging category
  77. :type project_title: str
  78. :type project_description: str
  79. :type category_name: str
  80. :return: A set of project form elements
  81. """
  82. categories = get_categories()
  83. project_form_elements = (
  84. form.Textbox("project_title", not_empty, description="Title", value=project_title),
  85. form.Textarea("project_description", not_empty, description="Description", value=project_description),
  86. form.Dropdown("category_name", description="Category", args=categories)
  87. )
  88. return project_form_elements
  89. def get_user_form_elements(identifier=0, user_name="", read_permission=True, write_permission=False, modify_permission=False):
  90. """
  91. Get the user form elements used to set users in project upon creation
  92. :param identifier: The id of this element
  93. :param user_name: The current user
  94. :param read_permission: Permit user to read
  95. :param write_permission: Permit user to write
  96. :param modify_permission: Permit user to modify
  97. :type identifier: int
  98. :type user_name: str
  99. :type read_permission: bool
  100. :type write_permission: bool
  101. :type modify_permission: bool
  102. :return: The form elements to add users to a project
  103. """
  104. user_form_elements = (
  105. form.Textbox("user_name_" + str(identifier), description="User", value=user_name, placeholder="Leave blank for open project"),
  106. form.Checkbox("read_permission_" + str(identifier), description="Read Permission", checked=read_permission, value=True),
  107. form.Checkbox("write_permission_" + str(identifier), description="Write Permission", checked=write_permission, value=True),
  108. form.Checkbox("modify_permission_" + str(identifier), description="Modify Permission", checked=modify_permission, value=True)
  109. )
  110. return user_form_elements
  111. # Define buttons to modify the project form or create a project
  112. project_buttons = form.Form(
  113. form.Button("add_user", type="submit", description="Add User", value="add_user", html="Add User"),
  114. form.Button("remove_user", type="submit", description="Remove User", value="remove_user", html="Remove User"),
  115. form.Button("add_task", type="submit", description="Add Task", value="add_task", html="Add Task"),
  116. form.Button("remove_task", type="submit", description="Remove Task ", value="remove_task", html="Remove Task"),
  117. form.Button("create_project", type="submit", description="Create Project", value="create_project", html="Create Project")
  118. )
  119. def get_apply_form():
  120. """
  121. Get the form used to add users to an application and apply
  122. :return: A form object
  123. """
  124. users = get_users()
  125. apply_form = form.Form(
  126. form.Dropdown("user_to_add", description="User", args=users),
  127. form.Button("add_user", type="submit", description="Add User", value="add_user", html="Add User"),
  128. form.Button("apply", type="submit", description="Apply", value="apply", html="Apply")
  129. )
  130. return apply_form
  131. def get_apply_permissions_form(identifier=0, read_permission="TRUE", write_permission="FALSE", modify_permission="FALSE", userid=None):
  132. """
  133. Get the form used to set permissions for each applicant
  134. :param identifier: The id of this element
  135. :param user_name: The current user
  136. :param read_permission: Permit user to read
  137. :param write_permission: Permit user to write
  138. :param modify_permission: Permit user to modify
  139. :type identifier: int
  140. :type user_name: str
  141. :type read_permission: bool
  142. :type write_permission: bool
  143. :type modify_permission: bool
  144. :return: A form object
  145. """
  146. user_permissions = form.Form(
  147. form.Button("remove_user", type="submit", description="User to remove", value=userid, html="X"),
  148. form.Hidden("user_"+str(identifier), description="User to apply for project", value=userid),
  149. form.Checkbox("read_permission_" + str(identifier), description="Read Permission", checked=(read_permission=="TRUE"), value=True),
  150. form.Checkbox("write_permission_" + str(identifier), description="Write Permission", checked=(write_permission=="TRUE"), value=True),
  151. form.Checkbox("modify_permission_" + str(identifier), description="Modify Permission", checked=(modify_permission=="TRUE"), value=True)
  152. )
  153. return user_permissions