def db_setup(**settings): engine = create_db_engine(**settings) db_session.registry.clear() db_session.configure(bind=engine) metadata.bind = engine metadata.create_all(engine) # create custom index for hashed uid from sqlalchemy import func, Index Index('ix_talk_preferences_uid_sha256', func.encode(func.digest(metadata.tables['talk_preferences'].c.uid, 'sha256')))
def hashed_uid_factory(request): if request.matchdict is not None and 'hash' in request.matchdict: context = models.TalkPreference.query.filter( func.encode( func.digest(func.text(models.TalkPreference.uid), 'sha256'), 'hex') == request.matchdict['hash']).first() if context is None: raise NotFound() return context return object()
def login(): form = LoginForm() if form.validate_on_submit(): user = User.query.filter(email=form.email, password=func.digest(form.password, 'sha256')).first() if user: return redirect('/') else: flash('Wrong username or password.', 'error') elif request.method == 'POST': flash('Please input both username and password!', 'error') return render_template('users/login.html', stock_exchanges=app.config.stock_exchanges, form=SearchForm(), login_form=form)
def test_get_talk_by_hashed_uid(models, talk_preference): from sqlalchemy import func assert models.TalkPreference.query.filter( func.encode(func.digest(func.text(models.TalkPreference.uid), 'sha256'), 'hex') == talk_preference.hashed_uid).one() == talk_preference
def test_get_talk_by_hashed_uid(models, talk_preference): from sqlalchemy import func assert models.TalkPreference.query.filter(func.encode(func.digest(func.text(models.TalkPreference.uid), 'sha256'), 'hex') == talk_preference.hashed_uid).one() == talk_preference