Exemple #1
0
class RegistrationForm(FlaskForm):
    name = StringField(
        'Name',
        validators=[
            DataRequired(),
            AlphaNumeric(message="Special characters not allowed")
        ])
    salary = StringField('Salary',
                         validators=[
                             DataRequired(),
                             Integer(message=' Should be numeric only')
                         ])
    location = StringField('Location',
                           validators=[
                               Length(
                                   max=6,
                                   message='Should not exceed 6 characters'),
                               Integer(message='Should be numeric only')
                           ])
    dob = DateField('Date of Birth')
    # format='%Y-%m-%d'
    submit = SubmitField('Submit')
class LoginForm(FlaskForm):
    username = StringField(
        'username',
        validators=[
            AlphaSpace(message="Name should contain only alphabets and space")
        ])
    mobile = StringField('mobile',
                         validators=[
                             Integer(),
                             validators.Length(
                                 min=10,
                                 max=10,
                                 message="Enter Valid Contact Number")
                         ])
    email = StringField('email')
    subject = StringField('subject')
    message = StringField('message')
Exemple #3
0
class PaymentForm(FlaskForm):
    cardNumber = StringField(
        "<strong>Card Number</strong>",
        validators=[
            InputRequired(),
            Regexp(cardNumberRegex,
                   message="Must only contain numbers and dashes.")
        ])
    cardType = SelectField("<strong>Card Type</strong>",
                           choices=creditCardTypes)
    expirationMonth = SelectField("<strong>Expiration Month</strong>",
                                  choices=expirationMonths)
    expirationYear = SelectField("<strong>Expiration Year</strong>",
                                 choices=expirationYears)
    cvv = StringField("<strong>CVV</strong>",
                      validators=[
                          InputRequired(),
                          Length(min=3,
                                 max=3,
                                 message="Field must be 3 digits long."),
                          Integer()
                      ])
    name = StringField(
        "<strong>Name on the Card</strong>",
        validators=[InputRequired(),
                    Length(min=4, max=100),
                    AlphaSpace()])
    submit = SubmitField("Pay")

    # Convert card number to numbers only
    def validate(self):
        if not FlaskForm.validate(self):
            return False
        else:
            self.cardNumber.data = self.cardNumber.data.replace("-", "")
            return True
Exemple #4
0
class CreateAccountForm(FlaskForm):
    ws_cust_id       = StringField("Customer Id", validators=[DataRequired(),Integer(),Length(min=9,max=9) ],render_kw={"placeholder": "Enter customer Id"})
    ws_acct_type     = SelectField("Account Type", choices=[('s','Savings Account'),('c','Current Account')],validators=[DataRequired(), Length(min=5,max=16)])
    ws_amt           = StringField("Deposite Amount", validators=[DataRequired(),Integer(),Length(min=1,max=15) ],render_kw={"placeholder": "Enter amount"})
    submit           = SubmitField("Create")
Exemple #5
0
class AddBowler(FlaskForm):

    PlayerName = StringField('Player Name',
                             validators=[DataRequired(),
                                         AlphaSpace()])
    country = SelectField('Country',
                          choices=[
                              ('Bowlers Dataset (Australia).csv', 'Australia'),
                              ('Bowlers Dataset (India).csv', 'India'),
                              ('Bowlers Dataset (England).csv', 'England')
                          ],
                          validators=[DataRequired()])

    m1_run = IntegerField('M1(Run)', validators=[DataRequired(), Integer()])
    m1_bowl = IntegerField('M1(Bowl)', validators=[DataRequired(), Integer()])
    m1_op = StringField('M1(OP)', validators=[DataRequired(), AlphaSpace()])
    m1_vnu = StringField('M1(VNU)', validators=[DataRequired(), AlphaSpace()])

    m2_run = IntegerField('M2(Run)', validators=[DataRequired(), Integer()])
    m2_bowl = IntegerField('M2(Bowl)', validators=[DataRequired(), Integer()])
    m2_op = StringField('M2(OP)', validators=[DataRequired(), AlphaSpace()])
    m2_vnu = StringField('M2(VNU)', validators=[DataRequired(), AlphaSpace()])

    m3_run = IntegerField('M3(Run)', validators=[DataRequired(), Integer()])
    m3_bowl = IntegerField('M3(Bowl)', validators=[DataRequired(), Integer()])
    m3_op = StringField('M3(OP)', validators=[DataRequired(), AlphaSpace()])
    m3_vnu = StringField('M3(VNU)', validators=[DataRequired(), AlphaSpace()])

    m4_run = IntegerField('M4(Run)', validators=[DataRequired(), Integer()])
    m4_bowl = IntegerField('M4(Bowl)', validators=[DataRequired(), Integer()])
    m4_op = StringField('M4(OP)', validators=[DataRequired(), AlphaSpace()])
    m4_vnu = StringField('M4(VNU)', validators=[DataRequired(), AlphaSpace()])

    m5_run = IntegerField('M5(Run)', validators=[DataRequired(), Integer()])
    m5_bowl = IntegerField('M5(Bowl)', validators=[DataRequired(), Integer()])
    m5_op = StringField('M5(OP)', validators=[DataRequired(), AlphaSpace()])
    m5_vnu = StringField('M5(VNU)', validators=[DataRequired(), AlphaSpace()])

    m6_run = IntegerField('M6(Run)', validators=[DataRequired(), Integer()])
    m6_bowl = IntegerField('M6(Bowl)', validators=[DataRequired(), Integer()])
    m6_op = StringField('M6(OP)', validators=[DataRequired(), AlphaSpace()])
    m6_vnu = StringField('M6(VNU)', validators=[DataRequired(), AlphaSpace()])

    m7_run = IntegerField('M7(Run)', validators=[DataRequired(), Integer()])
    m7_bowl = IntegerField('M7(Bowl)', validators=[DataRequired(), Integer()])
    m7_op = StringField('M7(OP)', validators=[DataRequired(), AlphaSpace()])
    m7_vnu = StringField('M7(VNU)', validators=[DataRequired(), AlphaSpace()])

    m8_run = IntegerField('M8(Run)', validators=[DataRequired(), Integer()])
    m8_bowl = IntegerField('M8(Bowl)', validators=[DataRequired(), Integer()])
    m8_op = StringField('M8(OP)', validators=[DataRequired(), AlphaSpace()])
    m8_vnu = StringField('M8(VNU)', validators=[DataRequired(), AlphaSpace()])

    m9_run = IntegerField('M9(Run)', validators=[DataRequired(), Integer()])
    m9_bowl = IntegerField('M9(Bowl)', validators=[DataRequired(), Integer()])
    m9_op = StringField('M9(OP)', validators=[DataRequired(), AlphaSpace()])
    m9_vnu = StringField('M9(VNU)', validators=[DataRequired(), AlphaSpace()])

    m10_run = IntegerField('M10(Run)', validators=[DataRequired(), Integer()])
    m10_bowl = IntegerField('M10(Bowl)',
                            validators=[DataRequired(),
                                        Integer()])
    m10_op = StringField('M10(OP)', validators=[DataRequired(), AlphaSpace()])
    m10_vnu = StringField('M10(VNU)',
                          validators=[DataRequired(),
                                      AlphaSpace()])

    t50 = IntegerField('T(50)', validators=[DataRequired(), Integer()])
    t100 = IntegerField('T(100)', validators=[DataRequired(), Integer()])
    truns = IntegerField('TRuns', validators=[DataRequired(), Integer()])
    tbf = IntegerField('TBF', validators=[DataRequired(), Integer()])
    avgrun = FloatField('Agv.Run', validators=[DataRequired()])
    avgsr = FloatField('Agv.SR', validators=[DataRequired()])
    rf50 = FloatField('RF(50)', validators=[DataRequired()])
    rf100 = FloatField('RF(100)', validators=[DataRequired()])
    wickets = IntegerField('Wickets', validators=[DataRequired(), Integer()])
    truns_percentage = FloatField('TRuns(%)', validators=[DataRequired()])
    tbf_percentage = FloatField('TBF(%)', validators=[DataRequired()])

    submit = SubmitField('Submit')
Exemple #6
0
class AddBatsman(FlaskForm):

    PlayerName = StringField('Player Name',
                             validators=[DataRequired(),
                                         AlphaSpace()])
    country = SelectField('Country',
                          choices=[
                              ('Batsman Dataset (Australia).csv', 'Australia'),
                              ('Batsman Dataset (India).csv', 'India'),
                              ('Batsman Dataset (England).csv', 'England')
                          ],
                          validators=[DataRequired()])

    m1_run = IntegerField('M1(Run)', validators=[DataRequired(), Integer()])
    m1_bowl = IntegerField('M1(Bowl)', validators=[DataRequired(), Integer()])
    m1_sr = FloatField('M1(SR)', validators=[DataRequired(), Integer()])
    average = FloatField('Average', validators=[DataRequired(), Integer()])
    m1_6 = IntegerField('M1(6)', validators=[DataRequired(), Integer()])
    m1_op = StringField('M1(OP)', validators=[DataRequired(), AlphaSpace()])
    m1_vnu = StringField('M1(VNU)', validators=[DataRequired(), AlphaSpace()])

    m2_run = IntegerField('M2(Run)', validators=[DataRequired(), Integer()])
    m2_bowl = IntegerField('M2(Bowl)', validators=[DataRequired(), Integer()])
    m2_sr = FloatField('M2(SR)', validators=[DataRequired(), Integer()])
    m2_6 = IntegerField('M2(6)', validators=[DataRequired(), Integer()])
    m2_4 = IntegerField('M2(4)', validators=[DataRequired(), Integer()])
    m2_op = StringField('M2(OP)', validators=[DataRequired(), AlphaSpace()])
    m2_vnu = StringField('M2(VNU)', validators=[DataRequired(), AlphaSpace()])

    m3_run = IntegerField('M3(Run)', validators=[DataRequired(), Integer()])
    m3_bowl = IntegerField('M3(Bowl)', validators=[DataRequired(), Integer()])
    m3_sr = FloatField('M3(SR)', validators=[DataRequired(), Integer()])
    m3_6 = IntegerField('M3(6)', validators=[DataRequired(), Integer()])
    m3_4 = IntegerField('M3(4)', validators=[DataRequired(), Integer()])
    m3_op = StringField('M3(OP)', validators=[DataRequired(), AlphaSpace()])
    m3_vnu = StringField('M3(VNU)', validators=[DataRequired(), AlphaSpace()])

    m4_run = IntegerField('M4(Run)', validators=[DataRequired(), Integer()])
    m4_bowl = IntegerField('M4(Bowl)', validators=[DataRequired(), Integer()])
    m4_sr = FloatField('M4(SR)', validators=[DataRequired(), Integer()])
    m4_6 = IntegerField('M4(6)', validators=[DataRequired(), Integer()])
    m4_4 = IntegerField('M4(4)', validators=[DataRequired(), Integer()])
    m4_op = StringField('M4(OP)', validators=[DataRequired(), AlphaSpace()])
    m4_vnu = StringField('M4(VNU)', validators=[DataRequired(), AlphaSpace()])

    m5_run = IntegerField('M5(Run)', validators=[DataRequired(), Integer()])
    m5_bowl = IntegerField('M5(Bowl)', validators=[DataRequired(), Integer()])
    m5_sr = FloatField('M5(SR)', validators=[DataRequired(), Integer()])
    m5_6 = IntegerField('M5(6)', validators=[DataRequired(), Integer()])
    m5_4 = IntegerField('M5(4)', validators=[DataRequired(), Integer()])
    m5_op = StringField('M5(OP)', validators=[DataRequired(), AlphaSpace()])
    m5_vnu = StringField('M5(VNU)', validators=[DataRequired(), AlphaSpace()])

    m6_run = IntegerField('M6(Run)', validators=[DataRequired(), Integer()])
    m6_bowl = IntegerField('M6(Bowl)', validators=[DataRequired(), Integer()])
    m6_sr = FloatField('M6(SR)', validators=[DataRequired(), Integer()])
    m6_6 = IntegerField('M6(6)', validators=[DataRequired(), Integer()])
    m6_4 = IntegerField('M6(4)', validators=[DataRequired(), Integer()])
    m6_op = StringField('M6(OP)', validators=[DataRequired(), AlphaSpace()])
    m6_vnu = StringField('M6(VNU)', validators=[DataRequired(), AlphaSpace()])

    m7_run = IntegerField('M7(Run)', validators=[DataRequired(), Integer()])
    m7_bowl = IntegerField('M7(Bowl)', validators=[DataRequired(), Integer()])
    m7_sr = FloatField('M7(SR)', validators=[DataRequired(), Integer()])
    m7_6 = IntegerField('M7(6)', validators=[DataRequired(), Integer()])
    m7_4 = IntegerField('M7(4)', validators=[DataRequired(), Integer()])
    m7_op = StringField('M7(OP)', validators=[DataRequired(), AlphaSpace()])
    m7_vnu = StringField('M7(VNU)', validators=[DataRequired(), AlphaSpace()])

    m8_run = IntegerField('M8(Run)', validators=[DataRequired(), Integer()])
    m8_bowl = IntegerField('M8(Bowl)', validators=[DataRequired(), Integer()])
    m8_sr = FloatField('M8(SR)', validators=[DataRequired(), Integer()])
    m8_6 = IntegerField('M8(6)', validators=[DataRequired(), Integer()])
    m8_4 = IntegerField('M8(4)', validators=[DataRequired(), Integer()])
    m8_op = StringField('M8(OP)', validators=[DataRequired(), AlphaSpace()])
    m8_vnu = StringField('M8(VNU)', validators=[DataRequired(), AlphaSpace()])

    m9_run = IntegerField('M9(Run)', validators=[DataRequired(), Integer()])
    m9_bowl = IntegerField('M9(Bowl)', validators=[DataRequired(), Integer()])
    m9_sr = FloatField('M9(SR)', validators=[DataRequired(), Integer()])
    m9_6 = IntegerField('M9(6)', validators=[DataRequired(), Integer()])
    m9_4 = IntegerField('M9(4)', validators=[DataRequired(), Integer()])
    m9_op = StringField('M9(OP)', validators=[DataRequired(), AlphaSpace()])
    m9_vnu = StringField('M9(VNU)', validators=[DataRequired(), AlphaSpace()])

    m10_run = IntegerField('M10(Run)', validators=[DataRequired(), Integer()])
    m10_bowl = IntegerField('M10(Bowl)',
                            validators=[DataRequired(),
                                        Integer()])
    m10_sr = FloatField('M10(SR)', validators=[DataRequired(), Integer()])
    m10_6 = IntegerField('M10(6)', validators=[DataRequired(), Integer()])
    m10_4 = IntegerField('M10(4)', validators=[DataRequired(), Integer()])
    m10_op = StringField('M10(OP)', validators=[DataRequired(), AlphaSpace()])
    m10_vnu = StringField('M10(VNU)',
                          validators=[DataRequired(),
                                      AlphaSpace()])

    t50 = IntegerField('T(50)', validators=[DataRequired(), Integer()])
    t100 = IntegerField('T(100)', validators=[DataRequired(), Integer()])
    t4 = IntegerField('T(4)', validators=[DataRequired(), Integer()])
    t6 = IntegerField('T(6)', validators=[DataRequired(), Integer()])
    truns = IntegerField('TRuns', validators=[DataRequired(), Integer()])
    tbf = IntegerField('TBF', validators=[DataRequired(), Integer()])
    avgrun = FloatField('Avg.Run', validators=[DataRequired(), Integer()])
    avgsr = FloatField('Avg.SR', validators=[DataRequired(), Integer()])
    rf50 = FloatField('RF(50)', validators=[DataRequired(), Integer()])
    rf100 = FloatField('RF100', validators=[DataRequired(), Integer()])
    drb = FloatField('DRB', validators=[DataRequired(), Integer()])
    truns_percentage = FloatField('TRuns(%)',
                                  validators=[DataRequired(),
                                              Integer()])
    tbf_percentage = FloatField('TBF(%)',
                                validators=[DataRequired(),
                                            Integer()])

    submit = SubmitField('Submit')
Exemple #7
0
class TransferForm(FlaskForm):
    src_acc_id       = StringField("Source Account Id", validators=[DataRequired(),Integer(),Length(min=1,max=9) ],render_kw={"placeholder": "Enter source account id"})
    tar_acc_id       = StringField("Target Account Id", validators=[DataRequired(),Integer(),Length(min=1,max=9) ],render_kw={"placeholder": "Enter target account id"})
    amount           = StringField("Amount", validators=[DataRequired(),Integer(),Length(min=1,max=9) ],render_kw={"placeholder": "Enter amount"})
    submit           = SubmitField("Transfer")
Exemple #8
0
class GetStatementFrom(FlaskForm):
    ws_acc_id        = StringField("Account Id", validators=[DataRequired(),Integer(),Length(min=1,max=9) ],render_kw={"placeholder": "Enter account Id"})
    last_n_tran      = SelectField("Last N Transactions", choices=[('1','1'),('2','2'), ('3','3'),('4','4'),('5','5'),('6','6'),('7','7'),('8','8'),('9','9'),('10','10')],validators=[Optional()])
    start_date       = DateField("Start Date",validators=[DataRequired()], format = '%d/%m/%Y')
    end_date         = DateField("End Date")
    submit           = SubmitField("Submit")
Exemple #9
0
class GetAccount(FlaskForm):
    input_type       = SelectField("Input Type", choices=[('ssn','SSN Id'),('cust_id','Customer Id'), ('acc_id','Account Id')],validators=[DataRequired()])
    input            = StringField("Input", validators=[DataRequired(),Integer(),Length(min=1,max=9) ])
    submit           = SubmitField("Search")
Exemple #10
0
class WithdrawForm(FlaskForm):
    amt              = StringField("Withdraw Amount", validators=[DataRequired(),Integer(),Length(min=1,max=9) ],render_kw={"placeholder": "Enter amount"})
    submit           = SubmitField("Withdraw")
Exemple #11
0
class RegisterForm(FlaskForm):
    title = SelectField("<strong>Title</strong>", choices=titles)
    firstName = StringField(
        "<strong>First Name *</strong>",
        validators=[InputRequired(),
                    Length(min=4, max=45),
                    Alpha()])
    middleName = StringField(
        "<strong>Middle Name</strong>",
        validators=[Optional(), Length(min=4, max=45),
                    Alpha()])
    lastName = StringField(
        "<strong>Last Name *</strong>",
        validators=[InputRequired(),
                    Length(min=4, max=45),
                    Alpha()])
    preferredName = StringField(
        "<strong>Preferred Name</strong>",
        validators=[Optional(), Length(min=1, max=45),
                    Alpha()])
    sex = SelectField("<strong>Sex *</strong>", choices=sexes)
    dateOfBirth = DateField("<strong>Date of Birth *</strong>",
                            format="%Y-%m-%d",
                            validators=[InputRequired()],
                            render_kw={
                                "min": "1990-01-01",
                                "max": datetime.date.today()
                            })
    street = StringField(
        "<strong>Street *</strong>",
        validators=[
            InputRequired(),
            Length(min=4, max=100),
            Regexp(
                streetRegex,
                message=
                "Must only contain alpha characters, numbers, spaces and periods."
            )
        ])
    city = StringField(
        "<strong>City *</strong>",
        validators=[InputRequired(),
                    Length(min=4, max=45),
                    AlphaSpace()])
    zipCode = StringField(
        "<strong>Zip Code *</strong>",
        validators=[InputRequired(),
                    Length(min=4, max=10),
                    Integer()])
    state = StringField(
        "<strong>State</strong>",
        validators=[Optional(),
                    Length(min=2, max=45),
                    AlphaSpace()])
    country = StringField(
        "<strong>Country *</strong>",
        validators=[InputRequired(),
                    Length(min=4, max=45),
                    AlphaSpace()])
    phone = StringField(
        "<strong>Phone *</strong>",
        validators=[
            InputRequired(),
            Length(min=4, max=200),
            Regexp(streetRegex,
                   message=
                   "Must only contain numbers, and some special characters.")
        ])
    email = StringField(
        "<strong>Email *</strong>",
        validators=[InputRequired(),
                    Length(min=4, max=100),
                    Email()])
    username = StringField(
        "<strong>Username *</strong>",
        validators=[InputRequired(),
                    Length(min=4, max=45),
                    AlphaNumeric()])
    password = PasswordField("<strong>Password *</strong>",
                             validators=[
                                 InputRequired(),
                                 Length(min=4, max=64),
                                 AlphaNumeric(),
                                 EqualTo("repeatPassword",
                                         "Passwords must match.")
                             ])
    repeatPassword = PasswordField(
        "<strong>Repeat Password *</strong>",
        validators=[InputRequired(),
                    Length(min=4, max=64),
                    AlphaNumeric()])
    securityQuestion = SelectField("<strong>Security Question *</strong>",
                                   choices=securityQuestions)
    securityAnswer = StringField(
        "<strong>Answer *</strong>",
        validators=[InputRequired(),
                    Length(min=4, max=45),
                    AlphaNumeric()])
    submit = SubmitField("Register")

    # Check if email already exist in database
    def validate_email(self, email):
        with app.app_context():
            cursor = mysql.connection.cursor()
            cursor.execute("SELECT * FROM users WHERE Email = \'%s\'" %
                           self.email.data)
            alreadyExists = cursor.fetchone()
            cursor.close()
        if alreadyExists:
            raise ValidationError(
                "This email is taken. Please choose a different one.")

    # Check if username already exist in database
    def validate_username(self, username):
        with app.app_context():
            cursor = mysql.connection.cursor()
            cursor.execute("SELECT * FROM users WHERE Username = \'%s\'" %
                           self.username.data)
            alreadyExists = cursor.fetchone()
            cursor.close()
        if alreadyExists:
            raise ValidationError(
                "This username is taken. Please choose a different one.")
Exemple #12
0
class FindAccount(FlaskForm):
    ws_ssn           = StringField("SSN Id", validators=[Optional(),Integer(),Length(min=9,max=9) ] ,render_kw={"placeholder": "Enter SSN Id"})
    ws_cust_id       = StringField("Customer Id", validators=[Optional(), Integer() ,Length(min=1,max=9)],render_kw={"placeholder": "Enter customer Id"})
    submit           = SubmitField("Search")
Exemple #13
0
class UpdateCustomer(FlaskForm):
    ws_ssn           = StringField("SSN Id", validators=[DataRequired(),Integer(),Length(min=9,max=9) ])
    ws_name          = StringField("Customer Name", validators=[DataRequired(), Length(min=2,max=55), AlphaSpace() ])
    ws_adrs          = TextAreaField("Address", validators=[DataRequired(), Length(min=5,max=160), AlphaNumeric() ])
    ws_age           = StringField("Age", validators=[DataRequired(),Integer() ])
    submit           = SubmitField("Create")
Exemple #14
0
class CreateCustomerForm(FlaskForm):
    ws_ssn           = StringField("SSN Id", validators=[DataRequired(),Integer(),Length(min=9,max=9) ],render_kw={"placeholder": "Enter SSN Id"})
    ws_name          = StringField("Customer Name", validators=[DataRequired(), Length(min=2,max=55), AlphaSpace() ],render_kw={"placeholder": "Enter customer name"})
    ws_adrs          = TextAreaField("Address", validators=[DataRequired(), Length(min=5,max=160) ],render_kw={"placeholder": "Enter address"})#AlphaNumeric()
    ws_age           = StringField("Age", validators=[DataRequired(),Integer() ],render_kw={"placeholder": "Enter age"})
    submit           = SubmitField("Create")
Exemple #15
0
def test_integer_raises(test_v, dummy_form, dummy_field):
    validator = Integer()
    dummy_field.data = test_v
    with pytest.raises(ValidationError):
        validator(dummy_form, dummy_field)
Exemple #16
0
def test_integer(test_v, dummy_form, dummy_field):
    validator = Integer()
    dummy_field.data = test_v
    validator(dummy_form, dummy_field)
class PsychRegistrationForm(FlaskForm):  # Creates a new child class, inheriting from parent 'FlaskForm'.

    email = StringField('Email Address', [
        Length(min=2, max=100, message='Please enter a valid email address.'),
        Email(message='Invalid email address.'),
        DataRequired(message='Please enter an email address.')])

    password = PasswordField('New Password', [
        Length(min=8, max=35, message='Please enter a password between 8 and 35 characters long.'),
        EqualTo('confirm_password', message='Both passwords must match'),
        DataRequired(message='Please enter a password.')])

    confirm_password = PasswordField('Confirm Password', [
        DataRequired(message='Please confirm your password.')])

    first_name = StringField('First Name', [
        Length(min=2, max=40, message='Please enter a first name between 2 and 40 characters.'),
        DataRequired(message='Please enter a first name.')])

    last_name = StringField('Last Name', [
        Length(min=2, max=80, message='Please enter a last name between 2 and 80 characters.'),
        DataRequired(message='Please enter a last name.')])

    bacp_number = StringField('16 Digit BACP Number', [
        Length(min=16, max=16, message='Please enter a valid 16 Digit BACP Number.'),
        DataRequired(message='You must be a certified BACP psychiatrist to register with our service.'),
        Integer(message='The BACP Number can only consist of numbers!')])

    phone_number = StringField('Phone Number', [
        Length(min=11, max=13, message='Please enter a valid phone number.'),
        DataRequired(message='Please enter a phone number.')])

    postcode = StringField('Postcode', [
        Length(min=4, max=8, message='Please enter a valid UK postcode.'),
        DataRequired(message='Please enter a postcode.')])

    psychiatrist_bio = TextAreaField('Psychiatrist Bio', [
        Length(max=500, message='Please keep your psychiatrist bio under 500 characters.'),
        DataRequired(message='Please write a short bio. This will help your patients to connect.')])

    # recaptcha = RecaptchaField()

    submit = SubmitField('Register Now!')

    # Custom Validators ---------------------------------------------------------------------

    # Search for any psychiatrists within the database that have an identical BACP number or email.

    def validate_bacp_number(self, bacp_number):
        psychiatrist_bacp = db.session.query(Psychiatrist).\
            filter(Psychiatrist.bacp_number == bacp_number.data).first()

        if psychiatrist_bacp:
            raise ValidationError('A psychiatrist has already registered with this BACP number.')

    def validate_email(self, email):

        psych_email = db.session.query(Psychiatrist).filter(Psychiatrist.email == email.data).first()
        patient_email = db.session.query(Patient.email).filter_by(Patient.email == email.data).first()

        if psych_email or patient_email:
            raise ValidationError('An account already exists with the current email address.')