user.py 1.66 KB
import os
from sqlalchemy import (
    cast,
    Text,
    )
from pyramid.i18n import TranslationStringFactory
from pyramid.view import view_config
from datatables import (
    ColumnDT,
    DataTables,
    )
from yaform import Form
from ...models import DBSession
from ...models.ziggurat import User
from ..user import BaseView


_ = TranslationStringFactory('user')

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

here = os.path.abspath(os.path.dirname(__file__))
my_templates = os.path.join(here, 'templates', 'user')

# Ini untuk memberitahu di mana file *.yml berada
Form.default_renderer.loader.search_path.insert(0, my_templates)


@view_config(
    route_name='theme1-user', renderer='templates/user/list.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':
        q = DBSession.query().select_from(User)
        dt = DataTables(request.GET, q, columns)
        return dt.output_result()


class View(BaseView):
    form_class = Form

    def render(self, form):  # Override
        return form.render(yml_template='edit')

    @view_config(
        route_name='theme1-user-add', renderer='templates/user/add.pt',
        permission='user-edit')
    def add(self):
        return super().add()

    @view_config(
        route_name='theme1-user-edit', renderer='templates/user/edit.pt',
        permission='user-edit')
    def edit(self):
        return super().edit()