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 to_base64_sql(text_to_encode): encoding = "base64" return func.encode(cast(text_to_encode, BYTEA()), cast(encoding, sqlalchemy.Text()))
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
def bind_expression(self, bindvalue): encrypt_function = func.encrypt(bindvalue, db_crypt_key, settings.DB_CRYPT.ALGORITHM) return func.encode(encrypt_function, settings.DB_CRYPT.ENCODE_ALGORITHM)