class Signup(Form): email = TextField('Email address', [ validators.Required( 'It’s okay, we won’t email you unless you want us to.' ), validators.Email('Um, that doesn’t look like an email address.'), ]) password = PasswordField('Password', [ validators.Required('How else will we know it’s really you?'), validators.EqualTo( 'retype', message= 'If you can’t type it twice now, you’ll never be able to log in with it.' ) ]) retype = PasswordField('Password (again)') consent = BooleanField('Accept the Terms', [ validators.Required('Is there something you don’t agree with?') ]) def validate_email(form, field): if models.User.query.filter_by(email=field.data).count(): raise validators.ValidationError( 'Looks like you’ve already registered. Try logging in instead.' )
class RegistrationForm(Form): email = TextField('Email Address', [validators.Length(min=6, max=35)]) password = PasswordField('New Password', [ validators.Required(), validators.EqualTo('confirm', message='Passwords must match') ]) confirm = PasswordField('Repeat Password')
class Password(Form): password = PasswordField('Password', [ validators.Required('How else will we know it’s really you?'), ]) retype = PasswordField('Password (again)', [ validators.EqualTo('password', message='If you can’t type it twice now, you’ll never be able to log in with it.') ])
class ResetPasswordForm(Form): password = f.PasswordField('New password', [ v.Required(), v.Length(min=8, message="It's probably best if your password is longer than 8 characters."), v.EqualTo('confirm', message="Passwords must match.") ]) confirm = f.PasswordField('Confirm password')
class ChangePassForm(Form): old_password = PasswordField('Password', [validators.Required()]) password = PasswordField('Password', [ validators.Length(min=6, max=35), validators.Required(), validators.EqualTo('confirm', message='Passwords must match') ]) confirm = PasswordField('Repeat Password')
class RegistrationForm(UserForm): LANGUAGES = [get_locale().language] password = PasswordField(lazy_gettext('login.placeholder.password'), [ validators.Required(), validators.EqualTo( 'confirm', message=lazy_gettext('signup.error.passwordsmatch')) ]) confirm = PasswordField( lazy_gettext('signup.placeholder.confirmpassword'))
class RegistrationForm(Form): username = TextField('Username', [validators.Length(min=4, max=25)]) email = TextField('Email Address', [validators.Length(min=6, max=35)]) zipcode = TextField('Zipcode', [validators.Length(min=5, max=35)]) password = PasswordField('New Password', [ validators.Required(), validators.EqualTo('confirm', message='Passwords must match') ]) confirm = PasswordField('Repeat Password') accept_tos = BooleanField('I accept the TOS', [validators.Required()])
class RegisterForm(Form): w = TextField('Username', [validators.Length(min=3, max=25), existscheck]) n = TextField('Email Address', [ validators.Length(min=3, max=35), validators.Email(message='Must be a valid email address') ]) s = PasswordField('Password', [ validators.Required(), validators.EqualTo('c', message='Passwords must match') ]) c = PasswordField('Repeat Password')
class SetUser(wtforms.form.Form): email = TextField('Email address', [ validators.Required("It's okay, we won't email you unless you want us to."), validators.Email("Um, that doesn't look like an email address."), ]) password = PasswordField('Password', [ validators.Required("How else will we know it's really you?"), ]) retype = PasswordField('Password (again)', [ validators.EqualTo('password', message="If you can't type it twice now, you'll never be able to log in with it."), ])
class ProfileForm(TranslatedForm): #language = SelectField(_(u'Language'), choices=[("fr","Francais"), ("en","English")]) language = SelectField( _(u'Language'), choices=[ (lang_code, lang_name) for lang_code, lang_name in app.config['LANGUAGES'].iteritems() ]) password = PasswordField( _('New Password'), [validators.EqualTo('confirm', message=_('Passwords must match'))]) confirm = PasswordField(_('Repeat Password'))
class RegistrationForm(Form): username = TextField(u'Nazwa użytkownika', [validators.Length(min=4, max=25)], id="username") email = TextField(u'Adres email', [validators.Length(min=6, max=35)], id="email") password = PasswordField(u'Nowe hasło', [ validators.Required(), validators.EqualTo('confirm', message='Hasła muszą być takie same') ], id="password") confirm = PasswordField(u'Powtórz hasło', id="confirm")
class RegistrationForm(Form): email = fields.TextField('Email Address', validators=[Required(), Email(), Regexp('[^@]+@[^@]+[fsu]+\.[edu]+')]) consent = fields.BooleanField(validators=[Required()]) password = fields.PasswordField('New Password', [ validators.Required(), validators.Length(min=8, max=20), validators.EqualTo('confirm', message='Passwords must match') ]) confirm = fields.PasswordField(validators=[Required()]) def validate_email(self, field): if db.session.query(User).filter_by(email=self.email.data).count() > 0: raise validators.ValidationError('Duplicate email')
class UserProfileForm(UserRegisterForm): password = PasswordField('password', [ validators.Optional(), validators.Length(min=6, max=64), validators.EqualTo('confirm', message='Passwords must match') ], filters=[strip_filter]) per_page = SelectField('per_page', coerce=int, choices=[(n, n) for n in range(10, 21)]) suggestion = BooleanField('suggestion', default=True) recently = SelectField('recently', coerce=int, choices=[(n, n) for n in range(5)])
class UserRegisterForm(Form): username = TextField('username', [validators.Length(min=4, max=32)], filters=[strip_filter]) email = TextField('email', [ validators.Length(min=4, max=320), validators.Email(message='Not a valid email address') ], filters=[strip_filter]) password = PasswordField('password', [ validators.Length(min=6, max=64), validators.EqualTo('confirm', message='Passwords must match') ], filters=[strip_filter]) confirm = PasswordField('confirm', filters=[strip_filter])
class PasswordForm(Form): old_password = PasswordField('Old Password', validators=[validators.Length(min=8, max=50)]) password = PasswordField('Password', validators=[ validators.LengthOrEmpty(min=8, max=50), validators.CrackLib() ]) pw_confirm = PasswordField('Confirm Password', validators=[ validators.LengthOrEmpty(min=8, max=50), validators.EqualTo( 'password', message='Passwords do not match.') ])
class ResetForm(Form): password = PasswordField('Password', validators=[ validators.Required(), validators.Length(min=8, max=50), validators.CrackLib() ]) pw_confirm = PasswordField('Confirm Password', validators=[ validators.Required(), validators.Length(min=8, max=50), validators.EqualTo( 'password', message='Passwords do not match.') ])
class UserProfileForm(UserRegisterForm): password = PasswordField('Password', [validators.Optional(), validators.Length(min=6, max=64), validators.EqualTo('confirm', message=pmm)], filters=[strip_filter]) per_page = SelectField('Items per page', coerce=int, choices=[(n, n) for n in range(10, 21)]) suggestion = SelectField('Show suggestions', coerce=int, choices=[(n, n) for n in range(5)]) recently = SelectField('Recently added', coerce=int, choices=[(n, n) for n in range(5)])
class SignupForm(Form): username = f.TextField('Username', [ v.Length(min=3, max=128), v.Regexp(r'^[^@:]*$', message="Username shouldn't contain '@' or ':'") ]) email = html5.EmailField('Email address', [ v.Length(min=3, max=128), v.Email(message="This should be a valid email address.") ]) password = f.PasswordField('Password', [ v.Required(), v.Length(min=8, message="It's probably best if your password is longer than 8 characters."), v.EqualTo('confirm', message="Passwords must match.") ]) confirm = f.PasswordField('Confirm password') # Will only work if set up in config (see http://packages.python.org/Flask-WTF/) captcha = f.RecaptchaField('Captcha')
class AddUserForm(Form): user = TextField( 'user', validators=[validators.Required(), validators.Length(min=3, max=64)]) email = TextField('email', validators=[validators.Required(), validators.Email()]) password = PasswordField('password', validators=[ validators.Required(), validators.Length(min=3, max=64), validators.EqualTo( 'confirm', 'Both passwords must be equal.') ]) confirm = PasswordField('confirm') roles = MultiCheckboxField('roles', validators=[validators.Required()], coerce=int)
class UpdateProfileFormFull(Form): updatedProfileImage = FileField( "Photo Upload", validators=[ file_allowed( images, message= "The file you selected does not appear to be an image, please try again or contact support" ) ]) location = TextField() slogan = TextField(validators=[ validators.Length( min=0, max=140, message= "Please keep your slogan short, 140 characters or less, please.") ]) description = TextField(validators=[ validators.Length( min=0, max=400, message="Please limit your description to 400 characters") ]) current_password = TextField(validators=[ validators.Length(min=0, max=app.config['PASSWORD_MAX_LENGTH']) ]) user_password = TextField(validators=[ validators.Length(min=0, max=app.config['PASSWORD_MAX_LENGTH']) ]) user_password_confirmation = TextField(validators=[ validators.Length(min=0, max=app.config['PASSWORD_MAX_LENGTH']), validators.EqualTo( 'user_password', message='The passwords you have entered do not match') ]) @property def hasImage(self): return self.updatedProfileImage.data != None def validate(self): self.rv = False rv = Form.validate(self) self.rv = rv if not rv: return False if len(self.user_password.data) or len( self.user_password_confirmation.data) or len( self.current_password.data): #user has entered a new pw if not self.user_password.data == self.user_password_confirmation.data: #not the password flash("The passwords you have entered do not match", "error") self.rv = False if len(self.user_password.data ) < app.config['PASSWORD_MIN_LENGTH'] and len( self.user_password.data): flash( "The new password you have entered is simply too short, please enter a longer password", "error") self.rv = False if self.rv: #password length sufficient and passwords match if current_user.validatePassword(self.current_password.data): current_user.updatePassword(self.user_password) flash("Your password has been updated", "message") else: flash("It seems you have entered an incorrect password", "error") self.rv = False if not self.rv: #if we failed to change password, do not process the rest of the form return False #TODO: this code is repeated, inheritance seemed to break the cleaner version though if len(self.slogan.data) and self.slogan.data != current_user.slogan: current_user.slogan = self.slogan.data flash("Your slogan has been updated", "message") if len(self.description.data ) and self.description.data != current_user.description: current_user.description = self.description.data flash("Your description has been updated", "message") if len(self.location.data ) and self.location.data != current_user.location: current_user.location = self.location.data flash("Your location has been updated", "message") db.session.commit() return True
def edit_user(uid=-1): if uid == -1: return redirect(url_for('edit_user', uid=g.user.uid)) user = User.query.filter(User._uid == uid).all() if len(user) == 0: flash('User not found!') return redirect(url_for("index")) user = user[0] self_editing = False sponsor_editing = False labstaff_editing = g.user_is_labstaff admin_editing = g.user_is_admin if not (g.user_is_admin or g.user_is_labstaff): # If a user isn't an admin or a sponsor, they can only see their own page if 'sponsor' not in g.user.get_domains(): if g.user.uid != user.uid: flash("You have wandered somewhere you do not belong.") return redirect(url_for('index')) else: self_editing = True else: # If they're not an admin but are a sponsor, they need to be this user's sponsor if g.user.username != user.sponsor: flash("You have wandered somewhere you do not belong.") return redirect(url_for('index')) else: sponsor_editing = True enabled_fields = [] class EditForm(Form): username = TextField( 'Username', validators=[validators.LengthOrEmpty(min=3, max=8)]) first_name = TextField('First Name') last_name = TextField('Last Name') dob = TextField( 'Date of Birth (MM/DD/YYYY)', validators=[ validators.Date( format='%m/%d/%Y', message='Invalid format. Please use mm/dd/yyyy.') ]) email = TextField('E-mail Address', validators=[validators.Email()]) sponsor = SelectField('Sponsor', choices=[(s.username, ''.join( (s.last_name, ', ', s.first_name))) for s in database.get_sponsors(True)]) grad_date = TextField( 'Graduation Date (MM/YYYY)', validators=[ validators.Date(format='%m/%Y', message='Invalid format. Please use mm/yyyy') ]) acct_type = RadioField( choices=[('acad', 'Academic'), ('research', 'Research & Academic')]) comments = TextAreaField('Comments') status = TextField('Status') # First Name and Last Name # if labstaff_editing or admin_editing: if user.status in ('pending_sponsor', 'pending_labstaff') and g.user_is_admin: enabled_fields.extend(['admin_approval', 'acct_type']) EditForm.admin_approval = RadioField( choices=[('approve', 'Approve'), ('deny', 'Deny'), ('postpone', 'Postpone')]) elif user.status == 'pending_sponsor' and 'sponsor' in g.user.get_domains( ): enabled_fields.append('sponsor_approval') EditForm.sponsor_approval = RadioField( choices=[('approve', 'Approve'), ('deny', 'Deny'), ('postpone', 'Postpone')]) else: pass if g.user_is_admin or g.user_is_labstaff: enabled_fields.extend( ['comments', 'sponsor', 'email', 'dob', 'first_name', 'last_name']) if g.user_is_admin or g.user_is_labstaff or self_editing: enabled_fields.extend(['password', 'pw_confirm']) EditForm.password = PasswordField('Password', validators=[ validators.LengthOrEmpty(min=8, max=50), validators.CrackLib() ]) EditForm.pw_confirm = PasswordField( 'Confirm Password', validators=[ validators.LengthOrEmpty(min=8, max=50), validators.EqualTo('password', message='Passwords do not match.') ]) if self_editing: EditForm.current_password = PasswordField( 'Current Password', validators=[ validators.LengthOrEmpty(max=50), validators.Required() ]) form = EditForm() if form.is_submitted(): if form.validate_on_submit(): if form.username.data != '': user.username = form.username.data if form.password.data != '': user.password = form.password.data if form.first_name.data != '': user.first_name = form.first_name.data if form.last_name.data != '': user.last_name = form.last_name.data if form.dob.data != '': user.dob = form.dob.data # TODO: Extra validation on birth date? if form.email.data != '': user.email = form.email.data # TODO: More validation on email # Auto-fill udel id field. # Make sure email isn't used if form.sponsor.data != '': user.sponsor = form.sponsor.data if form.grad_date.data != '': user.grad_date = form.grad_date.data # if form.description.data != '': #not implemented in the user object yet. # user.comments = form.description.data if user.is_active() and form.disable.data: user.status = 'pending_disable' if user.is_disabled() and not form.disable.data: user.status = 'reactivate' if form.acct_type.data == 'acad': user.add_domain('acad') else: user.add_domains('acad', 'research') db.session.add(user) db.session.commit() flash("User updated.") else: return render_template( "edit_user.html", form=form, error="There was an error with your submission", edit_user=user) form = EditForm(ImmutableMultiDict()) form.username.data = user.username form.first_name.data = user.first_name form.last_name.data = user.last_name form.dob.data = user.dob form.email.data = user.email form.sponsor.data = user.sponsor form.grad_date.data = user.grad_date if 'acad' in user.get_domains() and not 'research' in user.get_domains(): form.acct_type.data = 'acad' if 'acad' in user.get_domains() and 'research' in user.get_domains(): form.acct_type.data = 'research' if 'other' in user.get_domains(): form.acct_type.data = 'other' ajax_fields = [] # Let's build the display form sections = ['Account Details'] display = {'Account Details': []} d = display['Account Details'] # The tuple will go label, field, errors (list) d.append(('Username', Markup('<label>%s</label>' % user.username), 'username', None)) d.append(('UID', Markup('<label>%s</label>' % user.uid), 'uid', None)) # First Name and Last Name if labstaff_editing or admin_editing: d.append(('First Name', form.first_name(), 'first_name', form.first_name.errors)) ajax_fields.append('first_name') d.append(('Last Name', form.last_name(), 'last_name', form.last_name.errors)) ajax_fields.append('last_name') else: d.append(('First Name', Markup('<label>%s</label>' % user.first_name), 'first_name', None)) d.append(('Last Name', Markup('<label>%s</label>' % user.last_name), 'last_name', None)) # Date of Birth if self_editing or labstaff_editing or admin_editing: d.append( ('Date of Birth (MM/DD/YYYY)', form.dob(), 'dob', form.dob.errors)) ajax_fields.append('dob') else: d.append(('Date of Birth (MM/DD/YYYY)', user.dob, 'dob', None)) # Change Password if self_editing or labstaff_editing or admin_editing: sections.append('Change Password') pw_block = [] display['Change Password'] = pw_block if self_editing: pw_block.append(('Current Password', form.current_password(), 'current_password', form.current_password.errors)) ajax_fields.append('current_password') pw_block.append(('New Password', form.password(), 'password', form.password.errors)) pw_block.append(('Confirm New Password', form.password(), 'pw_confirm', form.pw_confirm.errors)) ajax_fields.append('password') ajax_fields.append('pw_confirm') if self_editing: d.append(('Current Password:'******'current_password', form.current_password.errors)) d.append(('Test', Markup('<a href="test">Test</a>'), 'test', None)) # form.description.data = user.comments # if user.is_disabled(): # form.disable.data = True # else: # form.disable.data = False return render_template("edit_user.html", form=form, edit_user=user, enabled_fields=enabled_fields, display=display, sections=sections)
class RegisterForm(Form): username = TextField('Username', validators=[ validators.Required(), validators.Length(min=3, max=8), validators.UniqueColumn( database.User, database.User.username, message='This username is taken.') ]) password = PasswordField('Password', validators=[ validators.Required(), validators.Length(min=8, max=50), validators.CrackLib() ]) first_name = TextField('First Name', validators=[validators.Required()]) last_name = TextField('Last Name', validators=[validators.Required()]) pw_confirm = PasswordField('Confirm Password', validators=[ validators.Required(), validators.Length(min=8, max=50), validators.EqualTo( 'password', message='Passwords do not match.') ]) dob = TextField('Date of Birth (MM/DD/YYYY)', validators=[ validators.Required(), validators.Date( format='%m/%d/%Y', message='Invalid format. Please use mm/dd/yyyy.') ]) email = TextField( 'E-mail Address', validators=[ validators.Email(), validators.Required(), validators.UniqueColumn( database.User, database.User.email, message='This e-mail is in use by another account.') ]) sponsor = SelectField('Sponsor', choices=[(s.username, ''.join( (s.last_name, ', ', s.first_name))) for s in database.get_sponsors()], validators=[validators.Required()]) grad_date = TextField('Graduation Date (MM/YYYY)', validators=[ validators.Required(), validators.Date( format='%m/%Y', message='Invalid format. Please use mm/yyyy') ]) description = TextAreaField('Description of Usage') acct_type = RadioField(choices=[('acad', 'Academic'), ('research', 'Research & Academic')], validators=[validators.Required()]) captcha = RecaptchaField( public_key='6LdeFcwSAAAAAJF1ccPQ4j5Y0Q0iVULdXpRArpcp', private_key='6LdeFcwSAAAAAFv_xLOVLCPAyUQ_abubmG8oUdOw', secure=True)
class ChangePasswordForm(LoginForm): username = TextField('Username', [validators.Required()]) password = PasswordField('Old Password', [validators.Required()]) new_password = PasswordField('New Password', [validators.Length(6)]) confirm_password = PasswordField('Confirm Password', [validators.EqualTo('new_password')])
class NewPass(Form): password = fields.PasswordField('New Password', [ validators.Required(), validators.Length(min=8, max=20), validators.EqualTo('confirm', message='Passwords must match') ]) confirm = fields.PasswordField(validators=[Required()])