Name Last Update
pyramid_user_log Loading commit data...
CHANGES.txt Loading commit data...
README.rst Loading commit data...
setup.py Loading commit data...

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.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)

Untuk memuat modul ini maka perlu disertakan di konfigurasi:

pyramid.includes =
    ...
    pyramid_user_log

Contoh penggunaan dalam views:

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

Selamat mencoba