README.rst 1.75 KB

Pencatatan Kegiatan User pada Pyramid

Ini merupakan modul Pyramid untuk mencatat kegiatan user. Silakan buat tabelnya terlebih dahulu:

~/env/bin/initialize_user_log_db test.ini

Sebelum menggunakannya pastikan variabel request memiliki dbsession. Perhatikan contoh file models/__init__.py berikut ini:

from sqlalchemy import engine_from_config
from sqlalchemy.orm import sessionmaker
from zope.sqlalchemy import register


def get_tm_session(session_factory, transaction_manager):
    dbsession = session_factory()
    register(dbsession, transaction_manager=transaction_manager)
    return dbsession


def includeme(config):
    settings = config.get_settings()
    settings['tm.manager_hook'] = 'pyramid_tm.explicit_manager'
    config.include('pyramid_tm')
    config.include('pyramid_retry')
    engine = engine_from_config(settings, 'sqlalchemy.')
    factory = sessionmaker(bind=engine)
    config.registry['dbsession_factory'] = factory
    config.add_request_method(
        lambda r: get_tm_session(factory, r.tm),
        reify=True)

Pastikan juga variabel request memiliki row object user seperti pada contoh file security.py berikut ini:

from .models.ziggurat import User


def get_user(request):
    uid = request.authenticated_userid
    if uid:
        q = request.dbsession.query(User).filter_by(id=uid)
        return q.first()


def includeme(config):
    config.add_request_method(get_user, 'user', reify=True)

Contoh penggunaan dalam views:

def view_add(request):
    ...
    ...
    data = ...
    request.log(f'tambah {data}')
    return ...

Selamat mencoba