46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
from flask.ext.wtf import Form
|
|
from flask.ext.babel import gettext
|
|
from wtforms import StringField, BooleanField, TextAreaField
|
|
from wtforms.validators import DataRequired, Length
|
|
from .models import User
|
|
|
|
|
|
class LoginForm(Form):
|
|
openid = StringField('openid', validators=[DataRequired()])
|
|
remember_me = BooleanField('remember_me', default=False)
|
|
|
|
|
|
class EditForm(Form):
|
|
nickname = StringField('nickname', validators=[DataRequired()])
|
|
about_me = TextAreaField('about_me', validators=[Length(min=0, max=140)])
|
|
|
|
def __init__(self, original_nickname, *args, **kwargs):
|
|
Form.__init__(self, *args, **kwargs)
|
|
self.original_nickname = original_nickname
|
|
|
|
def validate(self):
|
|
if not Form.validate(self):
|
|
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 is not None:
|
|
self.nickname.errors.append(gettext(
|
|
'This nickname is already in use. '
|
|
'Please choose another one.'))
|
|
return False
|
|
return True
|
|
|
|
|
|
class PostForm(Form):
|
|
post = StringField('post', validators=[DataRequired()])
|
|
|
|
|
|
class SearchForm(Form):
|
|
search = StringField('search', validators=[DataRequired()])
|