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