class EditProfileForm(FlaskForm): username = StringField(_1('Username'),validators=[DataRequired()]) about_me = TextAreaField(_1('About me'),validators=[Length(min=0,max=140)]) submit = SubmitField(_1('Submit')) def __init__(self,original_username,*args,**kwargs): super(EditProfileForm,self).__init__(*args,**kwargs) self.original_username = original_username def validate_username(self,username): if username.data != self.original_username: user = User.query.filter_by(username=self.username.data).first() if user is not None: raise ValidationError(_('Please use a different username.'))
class RegisterForm(FlaskForm): username=StringField(_1('Username'), validators=[DataRequired()]) email=StringField(_1('Email'), validators=[DataRequired(), Email()]) password=PasswordField(_1('Password'), validators=[DataRequired()]) confirm=PasswordField(_1('Confirm Password'), validators=[DataRequired(), EqualTo('password')]) submit=SubmitField(_1('Register')) def validate_username(self, username): user=User.query.filter_by(username=username.data).first() if user is not None: raise ValidationError(_('Please pick a different username.')) def validate_email(self, email): user=User.query.filter_by(email=email.data).first() if user is not None: raise ValidationError(_('Please pick a different email address.'))
class SearchForm(FlaskForm): q = StringField(_1('Search'), validators=[DataRequired()]) def __init__(self, *args, **kwargs): if 'formdata' not in kwargs: kwargs['formdata'] = request.args if 'csrf_enabled' not in kwargs: kwargs['csrf_enabled'] = False super(SearchForm, self).__init__(*args, **kwargs)
class RegistrationForm(FlaskForm): username = StringField(_1('Username'), validators=[DataRequired()]) email = StringField(_1('Email'), validators=[DataRequired(), Email()]) password = PasswordField(_1('Password'), validators=[DataRequired()]) password2 = PasswordField( _1('Repeat Password'), validators=[DataRequired(), EqualTo('password')]) submit = SubmitField(_1('Register')) def validate_username(self, username): user = User.query.filter_by(username=username.data).first() if user is not None: raise ValidationError(_1('Please use a different username.')) def validate_email(self, email): user = User.query.filter_by(email=email.data).first() if user is not None: raise ValidationError(_1('Please use a different email address.')) def validate_image(form, field): if field.data: field.data = re.sub(r'[^a-z0-9_.-]', '_', field.data)
class PostForm(FlaskForm): post = TextAreaField(_1('Post something'), validators=[DataRequired(), Length(min=1, max=140)]) submit = SubmitField(_1('Post'))
from flask_moment import Moment from flask_babel import Babel from flask import request from flask_babel import lazy_gettext as _1 from elasticsearch import Elasticsearch from flask import current_app # DB and Migration extensions db = SQLAlchemy() migrate = Migrate() # Login extension login = LoginManager() login.login_view = 'auth.login' login.login_message = _1('Please log in to access this page.') # Mail extension mail = Mail() # Bootstrap extension bootstrap = Bootstrap() # Flask Moment extension moment = Moment() # Flask Bable extenstion for Translation babel = Babel() def create_app(config_class=Config): app = Flask(__name__)
mail = Mail(app) bootstrap = Bootstrap(app) moment = Moment(app) db = SQLAlchemy(app) babel = Babel(app) app.config.from_object(Config) #User's followers table followers = db.Table('followers', db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), db.Column('followed_id', db.Integer, db.ForeignKey('user.id')) ) migrate = Migrate(app, db) login = LoginManager(app) login.login_view = 'login' login.login_message = _1('You need to login to access this page.') if not app.debug: # ... if not os.path.exists('logs'): os.mkdir('logs') file_handler = RotatingFileHandler('logs/microblog.log', maxBytes=10240, backupCount=10) file_handler.setFormatter(logging.Formatter( '%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]')) file_handler.setLevel(logging.INFO) app.logger.addHandler(file_handler) app.logger.setLevel(logging.INFO) app.logger.info('Microblog startup')
class LoginForm(FlaskForm): username = StringField(_1('Username'), validators=[DataRequired()]) password = PasswordField(_1('Password'), validators=[DataRequired()]) remember_me = BooleanField(_1('Remember Me')) submit = SubmitField(_1('Sign In'))
class ResetPasswordForm(FlaskForm): password = PasswordField(_1('Password'), validators=[DataRequired()]) password2 = PasswordField( _1('Repeat Password'), validators=[DataRequired(), EqualTo('password')]) submit = SubmitField(_1('Request Password Reset'))
class ResetPasswordRequestForm(FlaskForm): email = StringField(_1('Email'), validators=[DataRequired(), Email()]) submit = SubmitField(_1('Request Password Reset'))
class MessageForm(FlaskForm): message = TextAreaField( _1('Message'), validators=[DataRequired(), Length(min=0, max=140)]) submit = SubmitField(_1('Submit'))
class PostForm(FlaskForm): post = TextAreaField(_1('Say Something'), validators=[DataRequired()]) submit = SubmitField(_1('Submit'))
def validate_email(self, email): user = User.query.filter_by(email=email.data).first() if user is not None: raise ValidationError(_1('Please use a different email address.'))
def validate_username(self, username): user = User.query.filter_by(username=username.data).first() if user is not None: raise ValidationError(_1('Please use a different username.'))
class ResetPasswordForm(FlaskForm): password=StringField(_1('Password'), validators=[DataRequired()]) password2=StringField(_1('Confirm password'), validators=[DataRequired(), EqualTo('password')]) submit=SubmitField(_1('Reset Password'))