class ProfileForm(Form):
    """
    Edit user own information.
    """
    name = TextField("Nickname",
                     [validators.Required("Please enter your nickname.")])
    email = EmailField("Email", [
        validators.Length(min=6, max=35),
        validators.Required("Please enter your email.")
    ])
    preferred_language = SelectField("Preferred language")
    password = PasswordField("Password")
    password_conf = PasswordField("Password Confirmation")
    submit = SubmitField("Save")

    def set_languages_choice(self):
        self.preferred_language.choices = [('en', 'en')]
        languages = [(language[0], language[0]) for language in \
                        db.session.query(distinct(Translation.language_code))]
        self.preferred_language.choices.extend(languages)

    def validate(self):
        validated = super(ProfileForm, self).validate()
        if self.password.data != self.password_conf.data:
            message = "Passwords aren't the same."
            self.password.errors.append(message)
            self.password_conf.errors.append(message)
            validated = False
        if self.name.data != User.make_valid_name(self.name.data):
            self.name.errors.append(
                'This nickname has '
                'invalid characters. Please use letters, numbers, dots and'
                ' underscores only.')
            validated = False
        return validated
Example #2
0
class ProfileForm(ProfileFormBase):
    multipart = True
    next = HiddenField()
    name = TextField(u'Name', [Required()])
    email = EmailField(u'Email', [Required(), Email()])
    #role_code = RadioField(_("Role")) #, [AnyOf([str(val) for val in USER_ROLE.keys()])], choices=[(str(val), label) for val, label in role_codes().items()])
    # Don't use the same name as model because we are going to use populate_obj().
    avatar_file = FileField(u"Avatar", [Optional()])
    gender_code = RadioField(u"Gender",
                             [AnyOf([str(val) for val in GENDER_TYPE.keys()])],
                             choices=[(str(val), label)
                                      for val, label in GENDER_TYPE.items()])
    age = IntegerField(u'Age', [Optional(), NumberRange(AGE_MIN, AGE_MAX)])
    phone = TelField(u'Phone', [Length(max=64)])
    url = URLField(u'URL', [Optional(), URL()])
    location = TextField(u'Location', [Length(max=64)])
    bio = TextAreaField(u'Bio', [Length(max=1024)])
    submit = SubmitField(u'Save')

    def get_role_codes(self, role_code):
        if role_code == 0:
            roles = USER_ROLE
        elif role_code == 3:
            roles = {k: v for k, v in USER_ROLE.items() if k in ('2', '3')}
        elif role_code == 1:
            roles = USER_ROLE[1:2]
        self.role_code = RadioField(
            _("Role"), [AnyOf([str(val) for val in roles.keys()])],
            choices=[(str(val), label) for val, label in roles.items()])

    def validate_avatar_file(form, field):
        if field.data and not allowed_file(field.data.filename):
            raise ValidationError("Please upload files with extensions: %s" %
                                  "/".join(ALLOWED_AVATAR_EXTENSIONS))
class LoginForm(Form):
    """The login form"""

    rememberMe = BooleanField('rememberMe')
    loginEmail = EmailField('loginEmail', [Email()])
    loginPassword = PasswordField('loginPassword', [Length(8, 20)])

    def __init__(self, *args, **kwargs):
        super(LoginForm, self).__init__(*args, **kwargs)

    def validate(self):
        if not super(LoginForm, self).validate():
            self.errors[0] = 'login.failed'
            return False
        if self.loginEmail.data.strip() == '':
            return False
        if self.loginPassword.data.strip() == '':
            return False
        self.user = users.first(email=self.loginEmail.data)
        if self.user is None:
            self.errors[0] = 'login.userNotFound'
            return False
        if not verify_password(self.loginPassword.data, self.user.password):
            self.errors[0] = 'login.passwordIncorrect'
            return False
        if not self.user.is_active():
            self.errors[0] = 'login.userDisabled'
            return False
        self.errors[0] = 'login.welcome'
        return True
Example #4
0
class ProfileForm(Form):
    name = StringField('Name', validators=[DataRequired()])
    email = EmailField('Email', validators=[DataRequired(), Email()])

    current_password = PasswordField('Current Password')
    password = PasswordField('New Password')
    retype_password = PasswordField('Retype Password')

    def __init__(self, user, *args, **kwargs):
        self.user = user
        super(ProfileForm, self).__init__(*args, **kwargs)

    def validate_current_password(self, field):
        if not field.data and self.password.data:
            raise ValidationError('Please input current password')

        if field.data and not bcrypt.check_password_hash(
                self.user.password, field.data):
            raise ValidationError('Wrong password')

    def validate_password(self, field):
        if self.current_password.data and not field.data:
            raise ValidationError('This field is required.')

        if field.data and field.data != self.retype_password.data:
            raise ValidationError('Passwords must match')
Example #5
0
class SignupForm(Form):
    next = HiddenField()
    email = EmailField(_('Email'), [Required(), Email()],
                       description=_("What's your email address?"))
    password = PasswordField(
        _('Password'),
        [Required(), Length(PASSWORD_LEN_MIN, PASSWORD_LEN_MAX)],
        description=_('%s characters or more' % PASSWORD_LEN_MIN))
    name = TextField(
        _('Choose your username'),
        [Required(), Length(USERNAME_LEN_MIN, USERNAME_LEN_MAX)],
        description=_("Don't worry. you can change it later."))
    agree = BooleanField(
        u'Agree to the ' +
        Markup('<a target="blank" href="/terms">Terms of Service</a>'),
        [Required()])
    submit = SubmitField(_('Sign up'))

    def validate_name(self, field):
        if User.query.filter_by(name=field.data).first() is not None:
            raise ValidationError(_('This username is already registered'))

    def validate_email(self, field):
        if User.query.filter_by(email=field.data).first() is not None:
            raise ValidationError(_('This email is already registered'))
Example #6
0
class UpdatePasswordForm(Form):
    """The update form"""

    email = EmailField('email')
    currentPassword = PasswordField('currentPassword', [Required()])
    newPassword = PasswordField(
        'newPassword',
        [Required(), Length(8, 20),
         EqualTo('newPasswordConfirm')])
    newPasswordConfirm = PasswordField('newPasswordConfirm')

    def __init__(self, *args, **kwargs):
        super(UpdatePasswordForm, self).__init__(*args, **kwargs)

    def validate(self):

        if not super(UpdatePasswordForm, self).validate():
            return False
        if self.currentPassword.data.strip() == '':
            return False
        if self.newPassword.data.strip() == '':
            return False
        if self.newPasswordConfirm.data.strip() == '':
            return False
        self.user = users.first(email=self.email.data)
        if self.user is None:
            return False
        if not verify_password(self.currentPassword.data, self.user.password):
            return False
        return True
class SignupForm(Form):
    next = HiddenField()
    email = EmailField(
        u'Email',
        [DataRequired(),
         Email(),
         Length(EMAIL_LEN_MIN, EMAIL_LEN_MAX)],
        description=EMAIL_TIP)
    password = PasswordField(
        'Password',
        [DataRequired(),
         Length(PASSWORD_LEN_MIN, PASSWORD_LEN_MAX)],
        description=PASSWORD_TIP)
    name = StringField(
        'Choose your username',
        [DataRequired(),
         Length(USERNAME_LEN_MIN, USERNAME_LEN_MAX)],
        description=USERNAME_TIP)
    agree = BooleanField(AGREE_TIP, [DataRequired()])
    submit = SubmitField('Sign up',
                         render_kw={"class": "btn btn-success btn-block"})

    def validate_name(self, field):
        if User.query.filter_by(name=field.data).first() is not None:
            raise ValidationError(u'This username is taken')

    def validate_email(self, field):
        if User.query.filter_by(email=field.data).first() is not None:
            raise ValidationError(u'This email is taken')
Example #8
0
class ProfileCreateForm(Form):
    multipart = True
    next = HiddenField()
    email = EmailField(u'Email', [Required(), Email()])
    name = TextField(u'Name', [Required(), Length(max=100)])
    password = PasswordField(u'Password', [Required(), Length(max=100)])
    password1 = PasswordField(u'Retype-password',
                              [Required(), Length(max=100)])
    # Don't use the same name as model because we are going to use populate_obj().
    avatar_file = FileField(u"Avatar", [Optional()])
    gender_code = RadioField(u"Gender",
                             [AnyOf([str(val) for val in GENDER_TYPE.keys()])],
                             choices=[(str(val), label)
                                      for val, label in GENDER_TYPE.items()])
    age = IntegerField(u'Age', [Optional(), NumberRange(AGE_MIN, AGE_MAX)])
    phone = TelField(u'Phone', [Length(max=64)])
    url = URLField(u'URL', [Optional(), URL()])
    location = TextField(u'Location', [Length(max=64)])
    bio = TextAreaField(u'Bio', [Length(max=1024)])
    submit = SubmitField(u'Save')

    def validate_avatar_file(form, field):
        if field.data and not allowed_file(field.data.filename):
            raise ValidationError("Please upload files with extensions: %s" %
                                  "/".join(ALLOWED_AVATAR_EXTENSIONS))

    def validate_password(self, field):
        if field.data != self.password1.data:
            raise ValidationError("The Passwords Don't Match")
Example #9
0
class ProfileForm(Form):
    multipart = True
    next = HiddenField()
    email = EmailField(_('Email'), [Required(), Email()])
    # Don't use the same name as model because we are going to use populate_obj().
    avatar_file = FileField(_("Avatar"), [Optional()])
    receive_station_notifications = BooleanField(
        _('Receive Program Notifications'))
    gender_code = RadioField(_("Gender"),
                             [AnyOf([str(val) for val in GENDER_TYPE.keys()])],
                             choices=[(str(val), label)
                                      for val, label in GENDER_TYPE.items()])
    age = IntegerField(_('Age'), [Optional(), NumberRange(AGE_MIN, AGE_MAX)])
    phone = TelField(_('Phone'), [Length(max=64)])
    url = URLField(_('URL'), [Optional(), URL()])
    location = TextField(_('Location'), [Length(max=64)])
    bio = TextAreaField(_('Bio'), [Length(max=1024)])
    submit = SubmitField(_('Save'))

    def validate_name(form, field):
        user = User.get_by_id(current_user.id)
        if not user.check_name(field.data):
            raise ValidationError(_("Please pick another name."))

    def validate_avatar_file(form, field):
        if field.data and not allowed_file(field.data.filename):
            raise ValidationError(
                _("Please upload files with extensions: %s" %
                  "/".join(ALLOWED_AVATAR_EXTENSIONS)))
Example #10
0
class CreateUserForm(Form):
    """
    Create a user (for the administrator).
    """
    name = TextField("Name", [validators.Required("Please enter your name.")])
    email = EmailField("Email", [
        validators.Length(min=6, max=35),
        validators.Required("Please enter an email.")
    ])
    is_admin = BooleanField("Admin")
    password = PasswordField("Password", [
        validators.Length(min=6, max=100),
        validators.Required("Please enter a password.")
    ])
    submit = SubmitField("Save")

    def validate(self):
        validated = super(CreateUserForm, self).validate()
        if self.name.data != User.make_valid_name(self.name.data):
            self.name.errors.append(
                'This name has invalid characters. '
                'Please use letters, numbers, dots and underscores only.')
            validated = False
        user = User.query.filter(User.email == self.email.data).first()
        if user:
            self.email.errors.append('This email is already used.')
            validated = False
        return validated
class RecoverPasswordForm(Form):
    email = EmailField(
        u'Your email',
        [DataRequired(),
         Email(),
         Length(EMAIL_LEN_MIN, EMAIL_LEN_MAX)])
    submit = SubmitField('Send instructions')
Example #12
0
class EditProfileForm(Form):
    multipart = True
    next = HiddenField()
    networks = QuerySelectMultipleField(
        query_factory=lambda: current_user.networks)
    email = EmailField(u'Email', [Required(), Email()])
    # Don't use the same name as model because we are going to use populate_obj().
    avatar_file = FileField(u"Avatar", [Optional()])
    gender_code = RadioField(u"Gender",
                             [AnyOf([str(val) for val in GENDER_TYPE.keys()])],
                             choices=[(str(val), label)
                                      for val, label in GENDER_TYPE.items()])
    age = IntegerField(u'Age', [Optional(), NumberRange(AGE_MIN, AGE_MAX)])
    phone = TelField(u'Phone', [Length(max=64)])
    url = URLField(u'URL', [Optional(), URL()])
    location = TextField(u'Location', [Length(max=64)])
    bio = TextAreaField(u'Bio', [Length(max=1024)])
    submit = SubmitField(u'Save')

    def set_networks(self, networks):
        #self.networks.choices = networks
        pass

    def validate_name(form, field):
        user = User.get_by_id(current_user.id)
        if not user.check_name(field.data):
            raise ValidationError("Please pick another name.")

    def validate_avatar_file(form, field):
        if field.data and not allowed_file(field.data.filename):
            raise ValidationError("Please upload files with extensions: %s" %
                                  "/".join(ALLOWED_AVATAR_EXTENSIONS))
Example #13
0
class RegisterForm(FlaskForm):

    name = StringField(
        label='Name',
        validators=[validators.DataRequired("Enter your first name")])

    family = StringField(
        label='Family',
        validators=[validators.DataRequired("Enter your family name")])

    email = EmailField(
        label='Email',
        validators=[
            validators.DataRequired("Enter your email address to sign up"),
            validators.Email(
                "Should be email address like: [email protected]")
        ])

    password = PasswordField(label='Password',
                             validators=[
                                 validators.DataRequired(),
                                 validators.Length(
                                     min=6,
                                     max=20,
                                     message='Should be more than 6 character')
                             ])

    confirm_password = PasswordField(
        label='Confirm password',
        validators=[
            validators.DataRequired(
                "Enter your password again to confirm that password")
        ])
Example #14
0
class RegisterFrom(Form):
    nickname = TextField('nickname', validators=[DataRequired()])
    email = EmailField('email', validators=[DataRequired()])
    password = PasswordField('password', validators=[DataRequired()])
    conform = PasswordField('conform', validators=[DataRequired()])

    def validate_nickname(self, field):
        nickname = field.data.strip()
        if len(nickname) < 3 or len(nickname) > 20:
            raise ValidationError('nickname must be 3 letter at least')
        elif not re.search(r'^\w+$', nickname):
            raise ValidationError(
                'User names can contain only alphanumeric characters and underscores.'
            )
        else:
            u = User.query.filter_by(nickname=nickname).first()
            if u:
                raise ValidationError('The nickname already exists')

    def validate_email(self, field):
        email = field.data.strip()
        email = User.query.filter_by(email=email).first()
        if email:
            raise ValidationError('The email already exists')

    def validate_password(self, field):
        password = field.data.strip()
        if len(password) < 6:
            raise ValidationError('password must be 3 letter at least')

    def validate_conform(self, field):
        conform = field.data.strip()
        if self.data['password'] != conform:
            raise ValidationError('the password and conform are different')
Example #15
0
class MessageForm(Form):
    digest = TextField(
        "Pyzor digest*",
        validators=[length(40, 40, "Invalid Digest"),
                    required()])
    message = FileField('Raw message*')
    name = TextField('Name')
    email = EmailField('Email')
    comment = TextAreaField('Other details')
    recaptcha = RecaptchaField()
    submit = SubmitField()

    def __init___(self, *args, **kwargs):
        super(MessageForm, self).__init__(*args, **kwargs)
        self.msg = None
        self.raw_message = None
        self.logger = app.logger

    def validate(self):
        if not Form.validate(self):
            return False
        self.raw_message = flask.request.files["message"].stream.read()
        try:
            digest = pyzor.digest.DataDigester(
                email.message_from_string(self.raw_message)).value
            if digest != self.digest.data:
                self.add_error("digest", "Digest does not match message.")
                return False
            client = pyzor.client.Client(timeout=20)
            try:
                response = client.check(digest)
            except pyzor.TimeoutError as e:
                self.add_error("message", "Temporary error please try again.")
                self.logger.warn("Timeout: %s", e)
                return False
            except pyzor.CommError as e:
                self.add_error("message", "Temporary error please try again.")
                self.logger.warn("Error: %s", e)
                return False
            if not response.is_ok():
                self.add_error("message", "Temporary error please try again.")
                self.logger.warn("Invalid response from server: %s", response)
                return False
            if int(response["Count"]) == 0:
                self.add_error("message", "Message not reported as spam.")
                return False
            if int(response["WL-Count"]) != 0:
                self.add_error("message", "Message is already whitelisted.")
                return False
        except AssertionError:
            self.add_error("message", "Invalid message.")
            return False
        return True

    def add_error(self, field, message):
        try:
            self.errors[field].append(message)
        except (KeyError, TypeError):
            self.errors[field] = [message]
Example #16
0
class RegisterForm(FlaskForm):
    email = EmailField('Почта', validators=[DataRequired()])
    password = PasswordField('Пароль', validators=[DataRequired()])
    password_again = PasswordField('Повторите пароль',
                                   validators=[DataRequired()])
    name = StringField('Имя пользователя', validators=[DataRequired()])
    about = TextAreaField("Немного о себе")
    submit = SubmitField('Войти')
Example #17
0
class CustomerForm(Form):
    first_name = StringField('firstName', validators=[DataRequired()])
    last_name = StringField('lastName', validators=[DataRequired()])
    company = StringField('company', validators=[DataRequired()])
    email = EmailField('email', validators=[DataRequired()])
    phone_number = StringField('phone_number', validators=[
        DataRequired()
    ])  # just making this a string field rather than using PhoneNumberField
Example #18
0
class UserForm(Form):
    next = HiddenField()
    email = EmailField(_('Email'), [Required(), Email()])
    name = TextField(
        _('Username'),
        [Required(), Length(USERNAME_LEN_MIN, USERNAME_LEN_MAX)])
    phone = PhoneNumberField(_('Phone Number'), description="Optional")
    submit = SubmitField(_('Save'))
Example #19
0
class RegisterForm(FlaskForm):
    email = EmailField('Почта', validators=[DataRequired()])
    password = PasswordField('Пароль', validators=[DataRequired()])
    password_again = PasswordField('Повторите пароль',
                                   validators=[DataRequired()])
    address = StringField('Адрес пользователя', validators=[DataRequired()])
    chatname = StringField('Имя в чате', validators=[DataRequired()])
    submit = SubmitField('Зарегистрироваться')
Example #20
0
class RegisterForm(FlaskForm):
    email = EmailField('Почта', validators=[DataRequired()])
    password = PasswordField('Пароль', validators=[DataRequired()])
    password_again = PasswordField('Повторите пароль',
                                   validators=[DataRequired()])
    name = StringField('Имя пользователя', validators=[DataRequired()])
    surname = StringField('Фамилия пользователя', validators=[DataRequired()])
    submit = SubmitField('Войти')
Example #21
0
class ContactForm(Form):
    name = StringField('Full Name', validators=[DataRequired()])
    subject = StringField('Subject', validators=[DataRequired()])
    email = EmailField('Email Address', validators=[DataRequired(), Email()])
    phone = StringField('Phone Number', validators=[DataRequired()])
    body = StringField('Message',
                       validators=[DataRequired()],
                       widget=widgets.TextArea())
    user_id = IntegerField('User', validators=[Optional()])
Example #22
0
class RegisterForm(Form):
    """
    The register form.
    """
    username = TextField('Username', [validators.Required(), validators.Length(min=1, max=80), username_check])
    password = PasswordField('Password', [validators.Required()])
    password_repeat = PasswordField('Repeat password', [validators.EqualTo('password', message='Passwords must match.')])
    email = EmailField('Email', [validators.Required(), email_check])
    recaptcha = RecaptchaField()
Example #23
0
class SignupForm(Form):
    full_name = StringField('Your Full Name', validators=[DataRequired()])
    email = EmailField('Email Address', validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    verify_password = PasswordField(
        'Verify Password', validators=[DataRequired(),
                                       EqualTo('password')])
    merchant_request = BooleanField('I also want to be a merchant',
                                    validators=[Optional()])
    terms = BooleanField('Terms and conditions', validators=[DataRequired()])
Example #24
0
class SignupForm(Form):
    email = EmailField('用户邮箱', validators=[InputRequired()])
    password = PasswordField('用户密码', validators=[InputRequired()])
    #用正则表达式确定“空格”、“数字”、“字母”、“汉字”,排除其他元素
    username = StringField('用户名',
                           validators=[
                               InputRequired(),
                               Regexp("[\s0-9a-zA-Z\u4e00-\u9fff]", 0,
                                      "Username Data Error")
                           ])
Example #25
0
class ContactForm(Form):
    '''
    Form class for WTForms usage.
    '''
    name = StringField('name', validators=[DataRequired(), Length(min=3)])
    phone = TelField('phone',
                     validators=[DataRequired(),
                                 Regexp("^[0-9]{10}$")])
    email = EmailField('email', validators=[DataRequired()])
    message = TextAreaField('message')
Example #26
0
class ComplaintForm(Form):
    name = StringField('Full Name', validators=[DataRequired()])
    email = EmailField('Email Address', validators=[DataRequired(), Email()])
    phone = StringField('Phone Number', validators=[Optional()])
    reason = StringField('Reason',
                         validators=[DataRequired()],
                         widget=widgets.TextArea())
    captcha = RecaptchaField(public_key=app.config.get("RECAPTCHA_PUB_KEY"),
                             private_key=app.config.get("RECAPTCHA_PRIV_KEY"),
                             secure=True)
Example #27
0
class MessageForm(Form):
    user_id = IntegerField('User', validators=[Optional()])
    product_id = IntegerField('Product', validators=[DataRequired()])
    name = StringField("Name", validators=[DataRequired()])
    email = EmailField("Email", validators=[DataRequired(), Email()])
    phone = StringField("Phone", validators=[DataRequired()])
    subject = StringField("Subject", validators=[Optional()])
    body = StringField("Body",
                       validators=[Optional()],
                       widget=widgets.TextArea())  # for plain text messages
Example #28
0
class SignupForm(Form):
    # phone = StringField('Phone', validators=[DataRequired()])
    email = EmailField('Email', validators=[DataRequired(), Email()])
    full_name = StringField('Full Name', validators=[DataRequired()])
    password = PasswordField('Password', validators=[DataRequired()])
    verify_password = PasswordField(
        'Verify Password',
        validators=[DataRequired(), EqualTo('password')],
        description="Verify your password")
    terms = BooleanField('Terms and conditions', validators=[DataRequired()])
Example #29
0
class CustomerForm(Form):
    company = StringField('company', validators=[DataRequired()])
    email = EmailField('email', validators=[DataRequired()])
    first_name = StringField('first_name', validators=[DataRequired()])
    last_name = StringField('last_name', validators=[DataRequired()])
    phone = StringField('phone', validators=[DataRequired()])
    country = StringField('country', validators=[DataRequired()])
    state = StringField('state', validators=[DataRequired()])
    city = StringField('city', validators=[DataRequired()])
    street_address = StringField('street_address', validators=[DataRequired()])
    zip_code = StringField('zip_code', validators=[DataRequired()])
Example #30
0
class User(Form):
    username = TextField("Nom d'utilisateur", [validators.Length(min=6, max=250)])
    email = EmailField("Adresse mail", [validators.DataRequired(), validators.Email(), validators.Length(max=250)])
    password = PasswordField('Mot de passe', [
        validators.Required(),
        validators.EqualTo('confirm', message='Les mots de passe doivent être identiques'),
        validators.Length(min=8)
    ])
    confirm = PasswordField('Mot de passe (à nouveau)')

    submit = SubmitField("Envoyer")