class UserInvitation(db.Model): __tablename__ = 'user_invite' id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(255), nullable=False) # save the user of the invitee invited_by_user_id = db.Column(db.Integer, db.ForeignKey('user.id')) # token used for registration page to identify user registering token = db.Column(db.String(100), nullable=False, server_default='') def password_validator(form, field): if len(field.data) < 8: raise wtforms.validators.ValidationError('Password must have at least 8 characters') # Setup Flask-User. Creating the UserManager will register all kinds of stuff, # such as routes for login, register, etc. db_adapter = flask_user.SQLAlchemyAdapter(database.sqla, User, UserInvitationClass=UserInvitation) user_manager = flask_user.UserManager( app=app, db_adapter=db_adapter, password_validator=password_validator, ) @app.cli.command('invite') @click.argument('email') def initdb_command(email): """Invite a user to this project.""" user_invite = db_adapter.add_object( db_adapter.UserInvitationClass, email = email, invited_by_user_id = -1, )
from ntg_common import db_tools from ntg_common.exceptions import EditException import login import main import info import static import textflow import comparison import editor import set_cover import checks dba = flask_sqlalchemy.SQLAlchemy() user, _role, _roles_users = login.declare_user_model_on(dba) db_adapter = flask_user.SQLAlchemyAdapter(dba, user) login_manager = flask_login.LoginManager() login_manager.anonymous_user = login.AnonymousUserMixin user_manager = flask_user.UserManager(db_adapter) mail = flask_mail.Mail() class Config(): """ Default configuration object. """ APPLICATION_HOST = 'localhost' APPLICATION_PORT = 5000 APPLICATION_DESCRIPTION = '' CONFIG_FILE = '_global.conf' # default = ./instance/_global.conf STATIC_FOLDER = 'static' STATIC_URL_PATH = 'static'
# because heroku will capture and log that output app.logger.addHandler(logging.StreamHandler()) app.logger.setLevel(logging.INFO) # We have to import these after defining app, api and db as these # imports will be looking for those variables. import backend.common.auth as auth import backend.common.response as response import backend.missions.views as mission_views import backend.organizations.views as organization_views import backend.quests.views as quest_views import backend.questions.views as question_views import backend.users.models as user_models import backend.users.views as user_views db_adapter = flask_user.SQLAlchemyAdapter(db, user_models.User) flask_user.UserManager(db_adapter, app) @app.route('/') def index(): """Return the index page.""" return app.send_static_file('index.html') @app.route('/app') @flask_user.login_required @response.no_cache def app_page(): """Return the javascript for the app.""" return app.send_static_file('app.html')
import flask_migrate import sqlalchemy import wtforms # flask app setup app = flask.Flask(__name__) app.config.from_object(config) migrate = flask_migrate.Migrate(app, models.db) manager = flask_migrate.Manager(app) manager.add_command('db', flask_migrate.MigrateCommand) models.db.init_app(app) # ??? # flask user mail = flask_mail.Mail(app) db_adapter = flask_user.SQLAlchemyAdapter(models.db, models.User) user_manager = flask_user.UserManager(db_adapter, app) class AddUrlForm(wtforms.Form): """Validation and fields for the form/page which allows a user to save/add a URL/link. """ url = wtforms.StringField( 'url', [ wtforms.validators.URL(require_tld=True), ], render_kw={