forms.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. from flask_wtf import FlaskForm
  2. from wtforms.fields import StringField, PasswordField, SelectMultipleField, SelectField, FileField
  3. from wtforms.widgets import TextArea, ListWidget, CheckboxInput
  4. from wtforms.validators import ValidationError, DataRequired, EqualTo
  5. from app.models import User
  6. from app import utils
  7. #
  8. # authantication forms
  9. #
  10. class LoginForm(FlaskForm):
  11. username = StringField('Username', validators=[DataRequired()])
  12. password = PasswordField('Password', validators=[DataRequired()])
  13. def validate_username(self, username):
  14. if User.query.filter_by(username=username.data).count() == 0:
  15. raise ValidationError('Wrong username')
  16. def validate_password(self, password):
  17. user = User.query.filter_by(username=self.username.data).first()
  18. if user and not user.verify_password(password.data):
  19. raise ValidationError('Wrong password')
  20. class SingupForm(FlaskForm):
  21. username = StringField('Username', validators=[DataRequired()])
  22. password = PasswordField('Password', validators=[DataRequired()])
  23. password2 = PasswordField('Password again', validators=[DataRequired(), EqualTo('password')])
  24. def validate_username(self, username):
  25. if User.query.filter_by(username=username.data).count() > 0:
  26. raise ValidationError('This username is in use. Please try another username.')
  27. #
  28. # testrun items forms
  29. #
  30. class TestrunImportForm(FlaskForm):
  31. file = FileField('Source', validators=[DataRequired()])
  32. class TestrunCreateForm(FlaskForm):
  33. name = StringField('Name', validators=[DataRequired()])
  34. description = StringField('Description', validators=[DataRequired()], widget=TextArea())
  35. testcase_sequences = SelectMultipleField('Test Case Sequences')
  36. @classmethod
  37. def new(cls):
  38. # update choices
  39. form = cls()
  40. form.testcase_sequences.choices = utils.getTestCaseSequences()
  41. return form
  42. class TestCaseSequenceCreateForm(FlaskForm):
  43. name = StringField('Name', validators=[DataRequired()])
  44. description = StringField('Description', validators=[DataRequired()], widget=TextArea())
  45. classname = SelectField('Class Name')
  46. datafiles = SelectMultipleField('Data Files')
  47. testcases = SelectMultipleField('Test Cases')
  48. @classmethod
  49. def new(cls):
  50. # update choices
  51. form = cls()
  52. form.classname.choices = utils.getClassNames()
  53. form.datafiles.choices = utils.getDataFiles()
  54. form.testcases.choices = utils.getTestCases()
  55. return form
  56. class TestCaseCreateForm(FlaskForm):
  57. name = StringField('Name', validators=[DataRequired()])
  58. description = StringField('Description', validators=[DataRequired()], widget=TextArea())
  59. classname = SelectField('Class Name')
  60. browser_type = SelectField('Browser Type')
  61. testcase_type = SelectField('Test Case Type')
  62. testcase_stepsequences = SelectMultipleField('Step Sequences')
  63. @classmethod
  64. def new(cls):
  65. # update choices
  66. form = cls()
  67. form.classname.choices = utils.getClassNames()
  68. form.browser_type.choices = utils.getBrowserTypes()
  69. form.testcase_type.choices = utils.getTestCaseTypes()
  70. form.testcase_stepsequences.choices = utils.getTestStepSequences()
  71. return form
  72. class TestStepSequenceCreateForm(FlaskForm):
  73. name = StringField('Name', validators=[DataRequired()])
  74. description = StringField('Description', validators=[DataRequired()], widget=TextArea())
  75. classname = SelectField('Class Name')
  76. teststeps = SelectMultipleField('Test Steps')
  77. @classmethod
  78. def new(cls):
  79. # update choices
  80. form = cls()
  81. form.classname.choices = utils.getClassNames()
  82. form.teststeps.choices = utils.getTestSteps()
  83. return form
  84. class TestStepCreateForm(FlaskForm):
  85. name = StringField('Name', validators=[DataRequired()])
  86. description = StringField('Description', validators=[DataRequired()], widget=TextArea())
  87. activity_type = SelectField('Activity Type')
  88. locator_type = SelectField('Locator Type')
  89. # model extension
  90. locator = StringField('Locator')
  91. value = StringField('Value')
  92. value2 = StringField('Value 2')
  93. comparision = SelectField('Comparision')
  94. optional = SelectField('Optional', choices=(('1', 'False'), ('2', 'True')))
  95. timeout = StringField('Timeout')
  96. release = StringField('Release')
  97. @classmethod
  98. def new(cls):
  99. # update choices
  100. form = cls()
  101. form.activity_type.choices = utils.getActivityTypes()
  102. form.locator_type.choices = utils.getLocatorTypes()
  103. form.comparision.choices = utils.getComparisionChoices()
  104. return form