class LoginForm(Form): """ 登录表单 """ login = TextField(_("Email address"), validators=[ required(message=_("You must provide an email")), email(message=_("A valid email address is required")) ]) password = PasswordField( _("Password"), validators=[required(message=_("You must provide an password"))]) recaptcha = TextField( _("Recaptcha"), validators=[]) # required(message=_("You must provide an captcha")) remember = BooleanField(_("Remember me")) next = HiddenField() def validate_recaptcha(self, field): if 'need_verify' not in session or not session['need_verify']: return if 'verify' not in session or session['verify'] != str( field.data).upper(): raise ValidationError, gettext("This captcha is not matching") submit = SubmitField(_("Login"))
class LoginForm(Form): openid = TextField('openid', validators=[Required()]) email = TextField('Email', validators=[Required()]) password = PasswordField('Password', validators=[Required()]) remember = BooleanField('Remember Me', default=False) next = HiddenField('next') submit = SubmitField('submit')
class QuestionForm(Form): """Form that receives questions from users to the "Answer" tool""" theme = SelectField( _('Theme'), [ validators.Required( message=_(u'You need to choose one of the options above')) ], ) title = TextField( _('Contribution title'), [ validators.Length(min=5, message=_( u'Your title is too short! It needs to have ' u'at least 5 chars')), validators.Length(max=256, message=_( u'Your title is too long! It needs to have ' u'at most 256 chars')) ], ) question = TextField( _('Content'), [ validators.Length( min=5, message=_(u'Your contribution is too short! It needs to have ' u'at least 50 chars')), ], )
class EditMachineForm(Form): name = TextField(_(u"机器名:"), validators=[required(_(u"请输入机器名")), is_legal_name]) description = TextAreaField(_(u"描述:")) status = RadioField(_(u"状态:"), default=Machine.OK, coerce=int, choices=((Machine.OK, _(u"正常")), (Machine.REALLY, _(u"停用")))) username = TextField(_(u"用户名:"), validators=[required(_(u"请输入用户名"))]) password = TextField(_(u"密码:"), validators=[required(message=_(u"请输入密码"))]) url_hudson = TextField(_(u"Hudson地址:"), validators=[required(_(u"请输入Hudson地址"))]) key = TextField(_(u"SSH Key:")) submit = SubmitField(_(u"保存")) def __init__(self, machine, *args, **kwargs): self.machine = machine kwargs['obj'] = self.machine super(EditMachineForm, self).__init__(*args, **kwargs) def validate_name(self, field): machine = Machine.query.filter( db.and_(Machine.name.like(field.data), db.not_(Machine.id == self.machine.id))).first() if machine: raise ValidationError(gettext(u"机器名已经存在"))
class SignupForm(Form): next = HiddenField() name = TextField(_('Username'), [required()]) password = PasswordField( _('Password'), [required(), length(min=PASSLEN_MIN, max=PASSLEN_MAX)]) password_again = PasswordField(_('Password again'), [ required(), length(min=PASSLEN_MIN, max=PASSLEN_MAX), equal_to('password') ]) email = TextField( _('Email address'), [required(), email(message=_('A valid email address is required'))]) invitation_code = TextField( _('Invitation Code'), [required(message=_('Please fill in the invitation code!'))]) submit = SubmitField(_('Signup')) def validate_name(self, field): if g.db.users.find_one({"_id": field.data}) is not None: raise ValidationError, _('This username is taken') def validate_email(self, field): if g.db.users.find_one({"email": field.data}) is not None: raise ValidationError, _('This email is taken') def validate_invitation_code(self, field): if g.db.invitates.find_one({ "code": field.data, "used": 'False' }) is None: raise ValidationError, _('Invalid code')
class NodeForm(BaseForm): title = TextField( _('Title'), validators=[DataRequired()], description=_('The screen title of the node') ) urlname = TextField( _('URL'), validators=[DataRequired()], description=_('The url name of the node') ) description = TextAreaField(_('Description')) role = SelectField( description=_('Required role'), choices=[ ('user', _('User')), ('staff', _('Staff')), ('admin', _('Admin')) ], default='user', ) def validate_urlname(self, field): if self._obj and self._obj.urlname == field.data: return if Node.query.filter_by(urlname=field.data).count(): raise ValueError(_('The node exists')) def save(self): node = Node(**self.data) node.save() return node
class RegisterForm(Form): """ Registration Form to fill out initial User object. """ name = TextField(u'Full Name', [Required()]) netid = TextField(u'NetID', [Required()]) email = TextField(u'Email address', [Required(), Email()]) standing = SelectField(u'Class Standing', [Required()], choices=[('freshman', 'Freshman'), ('soph', 'Sophomore'), ('junior', 'Junior'), ('senior', 'Senior'), ('alum', 'Alumni'), ('grad', 'Graduate Student'), ('faculty', 'Faculty')]) major = SelectField(u'Major', [Required()], choices=[('CS', 'CS (Computer Science)'), ('CE', 'CE (Computer Engineering)'), ('BI', 'BI (Business Informatics)'), ('Other', 'Other')]) shirt_size = SelectField(u'T-Shirt Size', [Required()], choices=[('S', 'Small'), ('M', 'Medium'), ('L', 'Large'), ('XL', 'X-Large'), ('XXL', '2X-Large')]) description = TextAreaField(u'Describe yourself! ' '(Github Flavored Markdown Allowed!)') reg_only = SubmitField(u'<i class="icon-group"></i> Register Only') reg_and_pay = SubmitField(u'<i class="icon-credit-card"></i> ' 'Register and Pay Membership')
class Signup_Form(Form): email = TextField("email", validators=[email(message='Is this a valid email?'), Required(message='Email address is required')]) username = TextField("username", validators=[Length(min=3, message='Username must be 3 characters or longer'), Length(max=20, message="Username cannot be longer than 20 characters"), Required(message='Username is required')]) password = TextField("password", validators=[Length(min=6, message="Password must be 6 characters or longer"), Length(max=50, message="Password cannot be longer than 50 characters"), Required(message='Password is required')]) submit = SubmitField("submit") def __init__(self, *args, **kwargs): Form.__init__(self, *args, **kwargs) def validate(self): rv = Form.validate(self) num_errors = 0 if not rv: num_errors = num_errors + 1 if not User.is_email_available(self.email.data): self.email.errors.append('This email has been registered. Try a different one') num_errors = num_errors + 1 if not User.is_username_available(self.username.data): self.username.errors.append('This username has been registered. Try a different one') num_errors = num_errors + 1 if num_errors > 0: return False return True
class SignupForm(Form): next = HiddenField() username = TextField( u"用户名", validators=[required(message=_("Username required")), is_username]) password = PasswordField( u"密码", validators=[required(message=_("Password required"))]) password_again = PasswordField(u"密码确认", validators=[ equal_to("password", message=\ _("Passwords don't match"))]) email = TextField(u"邮箱", validators=[ required(message=_("Email address required")), email(message=_("A valid email address is required")) ]) recaptcha = RecaptchaField(_("Copy the words appearing below")) submit = SubmitField(u"注册") def validate_username(self, field): user = User.query.filter(User.username.like(field.data)).first() if user: raise ValidationError, u"改用户名已存在" def validate_email(self, field): user = User.query.filter(User.email.like(field.data)).first() if user: raise ValidationError, gettext("This email is taken")
class CreateUserForm(Form): # TODO: NAME字段格式检查的中文支持 next_page = HiddenField() email = TextField(u'Email', description=u'Unique', validators=[Required(message=u'Email is required'), Email(message=u'Incorrect email format'), Unique(User, User.email, message=u'The current email is already in use')]) username = TextField(u'Username', description=u'Unique', validators=[Required(message=u'Username is required'), Regexp(u'^[a-zA-Z0-9\_\-\.]{5,20}$', message=u'Incorrect username format'), Unique(User, User.username, message=u'The current name is already in use')]) name = TextField(u'Name', description=u'Unique', validators=[Required(message=u'Name is required'), Regexp(u'^[a-zA-Z0-9\_\-\.\ ]{1,20}$', message=u'Incorrect name format'), Unique(User, User.name, message=u'The current name is already in use')]) weixin = TextField(u'Weixin OpenID', description=u'Unique, Using the command <code>openid</code> get in WeiXin', validators=[Optional(), Unique(User, User.weixin, message=u'The current weixin OpenID is already in use')]) groups = QuerySelectMultipleField(u'Group', description=u'Multiple Choice', query_factory=Group.query.all, get_label='desc', validators=[Required(message=u'Group is required')]) password = TextField(u'Password', description=u'At least five characters', validators=[Required(message=u'Password is required'), Regexp(u'^.{5,20}$', message=u'Password are at least five chars')]) status = BooleanField(u'Status', description=u'Check to enable this user') submit = SubmitField(u'Submit', id='submit')
class CommodityForm(Form): symbol = TextField('Ticker Symbol', description='Usually 3 or 4 letters', validators=univals) name = TextField('Name', description='Commodity name', validators=univals) type_id = SelectField('Type', description='Type of commodity', coerce=int) data_source_id = SelectField('Data Source', description='Data source', coerce=int) exchange_id = SelectField('Exchange', description='Stock exchange', coerce=int) @classmethod def new(self): form = self() helper = help() table = 'commodity_type' form.type_id.choices = helper.get_choices(table, 'id', 'name') form.type_id.validators = helper.get_validators(table, 'id') form.data_source_id.choices = helper.get_choices( 'data_source', 'id', 'name') form.data_source_id.validators = helper.get_validators( 'data_source', 'id') form.exchange_id.choices = helper.get_choices('exchange', 'id', 'symbol') form.exchange_id.validators = helper.get_validators('exchange', 'id') return form
class UserForm(Form): nickname = TextField('nickname') about_me = TextAreaField('about_me', validators = [Length(min = 0, max = 140)]) email = TextField('email', validators = [Required(), Length(min = 0, max = 120)]) roles = TextField('roles', validators = [Required()]) # FIXME: # roles = HiddenField('roles', validators = [Required()]) def __init__(self, user, *args, **kwargs): Form.__init__(self, *args, **kwargs) self.original_nickname = user.nickname def validate(self): if not Form.validate(self): print 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' return False if self.nickname.data == self.original_nickname: return True if self.nickname.data != User.make_valid_nickname(self.nickname.data): self.nickname.errors.append(gettext('This nickname has invalid characters. Please use letters, numbers, dots and underscores only.')) return False user = User.query.filter_by(nickname = self.nickname.data).first() if user != None: self.nickname.errors.append(gettext('This nickname is already in use. Please choose another one.')) return False return True
class RegisterForm(Form): first_name = TextField('First Name', validators=[Required()], description="Your first name") last_name = TextField('Last Name', validators=[Required()], description="Your last name") email = TextField('Email address', validators=[Required(), Email()], description="Your email address") phone = TextField('Phone number', validators=[Required()], description="Your phone number") password = PasswordField('Password', validators=[ Required(), EqualTo('confirm', message='Passwords must match') ], description="Your password") confirm = PasswordField('', validators=[Required()], description="Confirm your password") def validate_phone(form, field): if not is_us_phone_number(field.data): raise ValidationError('Use the phone number format XXX-XXX-XXXX')
class RoleForm(Form): name = TextField('name', validators=[Required()]) role_id = TextField('role_id', validators=[Required(), Length(min=3, max=8)]) def __init__(self, original_role, *args, **kwargs): Form.__init__(self, *args, **kwargs) self.the_original_id = "" print ' . . . . . . . . . . . . . . .' + str(original_role.id) if original_role.id is not None: self.the_original_id = original_role.id.upper() def validate(self): print 'A' if not self.role_id.data: self.role_id.data = self.the_original_id self.role_id.data = self.role_id.data.upper() if not Form.validate(self): print 'B' return False if self.role_id.data == self.the_original_id: print 'C1 ' + str(self.role_id.data) return True print 'D' role = Role.query.filter_by(name=self.name.data).first() print 'E' if role != None: print 'F' self.name.errors.append( gettext( 'This nickname is already in use. Please choose another one.' )) return False return True
class NewCustomFieldForm(Form): """Form for a new custom field""" field_name = TextField(u'Name', validators=[optional()]) field_value = TextField(u'Value', validators=[optional()]) def validate_field_name(form, field): if field.data and not form.field_value.data: raise ValidationError('Please specify a value') def validate_field_value(form, field): if field.data and not form.field_name.data: raise ValidationError('Please name this field') def save_if_data(self): if self.field_name.data and self.field_value.data: custom_field = CustomField() custom_field.user_id = current_user.id custom_field.name = self.field_name.data custom_field.value = self.field_value.data db.session.add(custom_field) db.session.commit() return custom_field else: return None
class SignupForm(Form): firstname = TextField( "First name", [validators.Required("Please enter your first name.")]) lastname = TextField("Last name", [validators.Required("Please enter your last name.")]) email = TextField("Email", [ validators.Required("Please enter your email address."), validators.Email("Please enter your email address.") ]) password = PasswordField('Password', [validators.Required("Please enter a password.")]) submit = SubmitField("Create account") def __init__(self, *args, **kwargs): Form.__init__(self, *args, **kwargs) def validate(self): if not Form.validate(self): return False user = User.query.filter_by(email=self.email.data.lower()).first() if user: self.email.errors.append("That email is already taken") return False else: return True
class PageForm(Form): """ This class extends the base Form class from the wtforms package, which takes care of validation and other details for us. """ title = TextField('Event title (e.g. Lowell GOTV Rally)', [validators.Required()]) date = TextField('Date (e.g. June 24, 2013)') time = TextField('Time (e.g. 2:30 pm)') address = TextAreaField('Address') description = TextAreaField('Description') entry = TextAreaField('Event info to be submitted to the Google Doc') filename = TextField( 'Short name for this signup page, to be used for the ' 'filename (e.g. lowell-rally)', [validators.Length(min=6, max=35)]) production = BooleanField('I have previewed by submitting once without ' 'checking this box, and am now ready to upload ' 'it as final (if left unchecked, the page will ' 'be uploaded to the staging bucket for preview)') password = PasswordField('Password')
class UserRegForm(Form): name = TextField( u"用户名", validators=[Required(), Length(min=3, max=32), Regexp(re_username)]) email = TextField(u'Email', validators=[Required(), Email()]) gender = RadioField(u'性别', coerce=int, choices=[(0, u'男'), (1, u'女')], default=0, widget=BSListWidget()) password = PasswordField(u'密码', validators=[ Required(), Length(min=5, max=60), EqualTo('confirm', message='Passwords must match') ]) confirm = PasswordField(u'确认密码', validators=[Required(), Length(min=5, max=60)]) def validate_name(form, field): name = field.data.lower() if name in reserved_words: raise ValidationError(u'用户名不能为系统保留字') user = User.query.filter(User.username == field.data).first() if user: raise ValidationError(u'该用户名已被注册') def validate_email(form, field): user = User.query.filter(User.email == field.data).first() if user: raise ValidationError(u'该email已被注册')
class EditForm(Form): """ Form used to edit user profile information. """ name = TextField(u'Name', [Required()]) netid = TextField(u'NetID', [Required()]) email = TextField(u'Email address', [Required()]) standing = SelectField(u'Class Standing', [Required()], choices=[('freshman', 'Freshman'), ('soph', 'Sophomore'), ('junior', 'Junior'), ('senior', 'Senior'), ('alum', 'Alumni'), ('grad', 'Graduate Student'), ('faculty', 'Faculty')]) major = SelectField(u'Major', [Required()], choices=[('CS', 'CS (Computer Science)'), ('CE', 'CE (Computer Engineering)'), ('BI', 'BI (Business Informatics)'), ('Other', 'Other')]) shirt_size = SelectField(u'T-Shirt Size', [Required()], choices=[('S', 'Small'), ('M', 'Medium'), ('L', 'Large'), ('XL', 'X-Large'), ('XXL', '2X-Large')]) description = TextAreaField(u'Describe yourself! ' '(Github Flavored Markdown Allowed!)')
class MainRegisterForm(Form): """A form that includes just the main info necessary for registration: username(optional), email, password, timezone. """ name = TextField('Username', [ Required(), ]) email = TextField('Email address', [Required(), Email()]) password = PasswordField('Password', [ Required(), ]) timezone = SelectField('Timezone', [ Required(), ], choices=([ (None, 'Choose your timezone...'), ] + [(timezone, timezone) for timezone in get_timezone_list()])) def validate(self): rv = Form.validate(self) if not rv: return False self.email.data = self.email.data.lower() return True
class UserForm(Form): first_name = TextField(u'First name', validators=[required()]) last_name = TextField(u'Last name', validators=[required()]) email_address = TextField(u'Email address', validators=[required(), Email()]) password = PasswordField( u'New password', validators=[Optional(), EqualTo('password_confirm')]) password_confirm = PasswordField(u'Password confirm', validators=[Optional()]) def __init__(self, formdata=None, obj=None, prefix='', **kwargs): super(UserForm, self).__init__(formdata, obj, prefix, **kwargs) if obj: self.user = obj else: self.user = None def validate_email_address(self, field): user = User.query.filter_by(email_address=field.data) \ .filter(User.id != self.user.id).first() if user: raise ValidationError('That email address is already in use') def save(self): self.user.first_name = self.first_name.data self.user.last_name = self.last_name.data self.user.email_address = self.email_address.data if len(self.password.data) > 1: self.user.password = self.password.data db.session.add(self.user) db.session.commit() return self.user
class ProfileSettingsForm(Form): # to do some check email = TextField(validators=[email(message='你的邮箱不合法')]) nickname = TextField() website = TextField() signature = TextField() introduction = TextField()
class CreateUserForm(RedirectForm): name = TextField('name', validators=[Required()]) email1 = TextField('email1', validators=[Required()]) email2 = TextField('email2', validators=[Required()]) pass1 = PasswordField('pass1', validators=[Required()]) pass2 = PasswordField('pass2', validators=[Required()]) def validate(self): if request.form['button'] == 'Cancel': return True rv = Form.validate(self) if not rv: return False if self.email1.data != self.email2.data: self.email2.errors.append("Email addresses do not match") return False user = User.query.filter_by(email=self.email1.data).first() if user is not None: self.email2.errors.append("Email address is already registered") return False if self.pass1.data != self.pass2.data: self.pass2.errors.append("Passwords do not match") return False self.user = user return True
class EditMyAccountForm(Form): username = TextField(_(u"用户名:"), validators=[ required(_(u"请输入用户名")), is_legal_name]) email = TextField(_(u"邮箱地址:"), validators=[ required(message=_(u"请输入邮箱地址")), email(message=_(u"请输入有效的邮箱地址"))]) email_alerts = BooleanField(_(u"开启邮件提醒")) status = BooleanField(_(u"账号状态")) submit = SubmitField(_(u"保存")) def __init__(self, user, *args, **kwargs): self.user = user kwargs['obj'] = self.user super(EditMyAccountForm, self).__init__(*args, **kwargs) def validate_username(self, field): user = User.query.filter(db.and_( User.username.like(field.data), db.not_(User.id == self.user.id))).first() if user: raise ValidationError(gettext(u"用户名已经存在")) def validate_email(self, field): user = User.query.filter(db.and_( User.email.like(field.data), db.not_(User.id == self.user.id))).first() if user: raise ValidationError(gettext(u"邮箱地址已经存在"))
class PostForm(Form): title = TextField('Title', [validators.Length(min=4, max=60)]) author = TextField('Author', [validators.Length(min=4, max=25)]) published = BooleanField('Publish') permalink = TextField('Permanent Link', [validators.Length(min=10, max=60)])
class SignupForm(Form): '''It is used for sign up, defines sign up form.''' next = HiddenField() username = TextField(_(u"用户名:"), validators=[ required(message=_(u"请输入用户名或者邮箱地址")), is_legal_name]) password = PasswordField(_(u"密码:"), validators=[ required(message=_(u"请输入密码"))]) password_again = PasswordField(_(u"确认密码:"), validators=[ equal_to(u"password", message= _(u"密码不一致"))]) email = TextField(_(u"邮箱地址:"), validators=[ required(message=_(u"请输入邮箱地址")), email(message=_(u"请输入有效的邮箱地址"))]) submit = SubmitField(_(u"注册")) def validate_username(self, field): user = User.query.filter(User.username.like(field.data)).first() if user: raise ValidationError(gettext(u"用户名已经存在")) def validate_email(self, field): user = User.query.filter(User.email.like(field.data)).first() if user: raise ValidationError(gettext(u"邮箱地址已经存在"))
class AddProductForm(Form): user_id = HiddenField('user_id') name = TextField('name', validators=[Required()]) asin = TextField('Amazon Id') category_id = TextField('Category') default_photo = TextField('Default Photo') custom_photo = TextField('Photo')
class CreateLogin(Form): fname = TextField('*First Name', validators=[Required()]) lname = TextField('Last Name', validators=[Optional(strip_whitespace=True)]) mobile = TextField( 'Mobile', validators= # sets optional entry and strips whitespace [ Optional(strip_whitespace=True), v.Length(max=15, message='Mobile exceeds length') ]) zipcode = IntegerField('Zipcode', validators=[Optional(strip_whitespace=True)]) # v.NumberRange(max=9, # message='Zipcode exceeds length')]) email = TextField('*Email', validators=[ Required(), v.Email(), v.EqualTo('confirm_email', message="Emails must match") ]) confirm_email = TextField('*Confirm Email') bio = TextAreaField('Bio', validators=[Length(min=0, max=140)]) password = PasswordField('*Password', validators=[ Required(), v.EqualTo('confirm_password', message='*Passwords must match') ]) confirm_password = PasswordField('Confirm Password') remember_me = BooleanField('Remember Me', default=False) recaptcha = RecaptchaField('*Person Test')
class RegistrationForm(Form): full_name = TextField(lazy_gettext('School name'), [validators.Required(), validators.Length(min=4)] + forms.SCHOOL_FULL_NAME_VALIDATORS, description=lazy_gettext('School name.')) short_name = TextField( lazy_gettext('Short name'), [validators.Required()] + forms.SCHOOL_SHORT_NAME_VALIDATORS, description=lazy_gettext( 'Short name (lower case, all letters, dots and numbers).')) url = TextField(lazy_gettext('School URL'), [ validators.Length(min=6, max=200), validators.URL(), validators.Required() ], description=lazy_gettext('Address of your school.')) user_full_name = TextField( lazy_gettext('User name'), [validators.Required(), validators.Length(min=4)] + forms.USER_FULL_NAME_VALIDATORS, description=lazy_gettext('Your name and last name.')) user_login = TextField(lazy_gettext('Login'), [validators.Required()] + forms.USER_LOGIN_DEFAULT_VALIDATORS, description=lazy_gettext( 'Your new login (you can create more later).')) user_password = PasswordField( lazy_gettext('Password'), [validators.Required()] + forms.USER_PASSWORD_DEFAULT_VALIDATORS, description=lazy_gettext('Your access password.'))
class PaymentForm(Form): """Form for a new custom field""" DATE_FORMAT = '%a %b %d %Y' invoice_id = HiddenField() amount = TextField('Amount', [required()]) description = TextField() date = TextField('Date', [required()]) def __init__(self, formdata=None, obj=None, prefix='', **kwargs): super(PaymentForm, self).__init__(formdata, obj, prefix, **kwargs) if obj is not None: self.payment = obj else: self.payment = None def save(self): """Save the payment model""" self.payment.amount = self.amount.data self.payment.date = datetime.strptime(self.date.data, self.DATE_FORMAT) self.payment.description = self.description.data db.session.add(self.payment) db.session.commit() self.payment.invoice.update_payment_status() return self.payment