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