user_grid.py 1.01 KB
import logging
from sqlalchemy import (
    func,
    cast,
    Text,
    )
from pyramid.view import view_config
from pyramid.i18n import TranslationStringFactory
from datatables import (
    ColumnDT,
    DataTables,
    )
from ..models import DBSession
from ..models.ziggurat import User


log = logging.getLogger(__name__)


_ = TranslationStringFactory('user')


columns = [
        ColumnDT(User.id),
        ColumnDT(User.user_name),
        ColumnDT(User.email),
        ColumnDT(User.status),
        ColumnDT(cast(User.last_login_date, Text))]


@view_config(
    route_name='user-grid', renderer='templates/user/grid.pt',
    permission='user-edit')
def view_list(request):
    return dict(title=_('Users'))


@view_config(route_name='user-act', renderer='json', permission='user-edit')
def view_act(request):
    if request.matchdict['act'] == 'grid':
        log.debug(f'{request.path}')
        q = DBSession.query().select_from(User)
        dt = DataTables(request.GET, q, columns)
        return dt.output_result()