You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

122 lines
6.0KB

  1. from web import form
  2. from models.project import get_categories
  3. from models.login 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"^[1-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.Checkbox("remember", description= "Remember me", checked=True, value=False),
  14. form.Button("Log In", type="submit", description="Login"),
  15. )
  16. # Define the register form
  17. register_form = form.Form(
  18. form.Textbox("username", not_empty, description="Username"),
  19. form.Textbox("full_name", not_empty, description="Full name"),
  20. form.Textbox("company", description="Company"),
  21. form.Textbox("email", vemail, description="Email Address"),
  22. form.Textbox("street_address", description="Street address"),
  23. form.Textbox("city", description="City"),
  24. form.Textbox("state", description="State"),
  25. form.Textbox("postal_code", number, description="Postal code"),
  26. form.Textbox("country", description="Country"),
  27. form.Password("password", vpass, description="Password"),
  28. form.Button("Register", type="submit", description="Register")
  29. )
  30. # Define the project view form
  31. project_form = form.Form(
  32. form.Input("myfile", type="file"),
  33. form.Hidden("taskid"),
  34. form.Button("submit", type="submit", html="Upload"),
  35. form.Button("deliver", type="submit", value=True, html="Deliver"),
  36. form.Button("accepted", type="submit", value=True, html="Accept Delivery"),
  37. form.Button("declined", type="submit", value=True, html="Decline Delivery")
  38. )
  39. def get_task_form_elements(identifier=0, task_title="", task_description="", budget=""):
  40. """
  41. Generate a set of task form elements
  42. :param identifier: The id of the task
  43. :param task_title: Task title
  44. :param task_description: Task description
  45. :param budget: Task budget
  46. :type identifier: int, str
  47. :type task_title: str
  48. :type task_description: str
  49. :type budget: int, str
  50. :return: A set of task form elements
  51. """
  52. task_form_elements = (
  53. form.Textbox("task_title_" + str(identifier), not_empty, description="Task title", value=task_title),
  54. form.Textarea("task_description_" + str(identifier), not_empty,description="Task description", value=task_description),
  55. form.Textbox("budget_" + str(identifier), number, description="Task budget", value=str(budget))
  56. )
  57. return task_form_elements
  58. def get_project_form_elements(project_title="", project_description="", category_name=""):
  59. """
  60. Generate a set of project form elements
  61. :param project_title: Project title
  62. :param project_description: Project description
  63. :param category_name: Name of the belonging category
  64. :type project_title: str
  65. :type project_description: str
  66. :type category_name: str
  67. :return: A set of project form elements
  68. """
  69. categories = get_categories()
  70. project_form_elements = (
  71. form.Textbox("project_title", not_empty, description="Title", value=project_title),
  72. form.Textarea("project_description", not_empty, description="Description", value=project_description),
  73. form.Dropdown("category_name", description="Category", args=categories)
  74. )
  75. return project_form_elements
  76. def get_user_form_elements(identifier=0, user_name="", read_permission=True, write_permission=False, modify_permission=False):
  77. user_form_elements = (
  78. form.Textbox("user_name_" + str(identifier), description="User", value=user_name),
  79. form.Checkbox("read_permission_" + str(identifier), description="Read Permission", checked=read_permission, value=True),
  80. form.Checkbox("write_permission_" + str(identifier), description="Write Permission", checked=write_permission, value=True),
  81. form.Checkbox("modify_permission_" + str(identifier), description="Modify Permission", checked=modify_permission, value=True)
  82. )
  83. return user_form_elements
  84. # Define buttons to modify the project form or create a project
  85. project_buttons = form.Form(
  86. form.Button("add_user", type="submit", description="Add User", value="add_user", html="Add User"),
  87. form.Button("remove_user", type="submit", description="Remove User", value="remove_user", html="Remove User"),
  88. form.Button("add_task", type="submit", description="Add Task", value="add_task", html="Add Task"),
  89. form.Button("remove_task", type="submit", description="Remove Task ", value="remove_task", html="Remove Task"),
  90. form.Button("create_project", type="submit", description="Create Project", value="create_project", html="Create Project")
  91. )
  92. def get_apply_form(elements):
  93. try:
  94. apply_form = form.Form(*elements,
  95. form.Button("add_user", type="submit", description="Add User", value="add_user", html="Add User"),
  96. form.Button("apply", type="submit", description="Apply", value="apply", html="apply")
  97. )
  98. # Exception will occur if the form only contains one element
  99. except TypeError as e:
  100. apply_form = form.Form(elements,
  101. form.Button("add_user", type="submit", description="Add User", value="add_user", html="Add User"),
  102. form.Button("apply", type="submit", description="Apply", value="apply", html="apply")
  103. )
  104. return apply_form
  105. def get_user_dropdown(identifier=0):
  106. users = get_users()
  107. #form.Checkbox("read_permission_" + str(identifier), description="Read Permission", checked=read_permission, value=True),
  108. #form.Checkbox("write_permission_" + str(identifier), description="Write Permission", checked=write_permission, value=True),
  109. #form.Checkbox("modify_permission_" + str(identifier), description="Modify Permission", checked=modify_permission, value=True)
  110. return form.Dropdown("user_id_" + str(identifier), description="User", args=users)