Example #1
0
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')))
Example #2
0
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()
Example #3
0
def to_base64_sql(text_to_encode):
    encoding = "base64"
    return func.encode(cast(text_to_encode, BYTEA()),
                       cast(encoding, sqlalchemy.Text()))
Example #4
0
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
Example #5
0
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
Example #6
0
 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)