user.py
1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import colander
from sqlalchemy import (
cast,
Text,
)
from pyramid.i18n import TranslationStringFactory
from pyramid.view import view_config
from datatables import (
ColumnDT,
DataTables,
)
from detable import DeTable
from opensipkd.tools.buttons import (
btn_view,
btn_add,
btn_edit,
btn_delete,
btn_close,
)
from ...models import DBSession
from ...models.ziggurat import User
_ = TranslationStringFactory('user')
columns = [
ColumnDT(User.id, mData='id'),
ColumnDT(User.user_name, mData='user_name'),
ColumnDT(User.email, mData='email'),
ColumnDT(User.status, mData='status'),
ColumnDT(cast(User.last_login_date, Text), mData='last_login_date')]
@view_config(
route_name='theme2-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 ListSchema(colander.Schema):
id = colander.SchemaNode(colander.Integer())
user_name = colander.SchemaNode(colander.String(), width='100pt')
email = colander.SchemaNode(colander.String())
status = colander.SchemaNode(colander.String())
last_login_date = colander.SchemaNode(colander.String())
@view_config(
route_name='theme2-user', renderer='templates/user/list.pt',
permission='user-edit')
def view_list(request):
url = request.route_url('home') + 'theme2/user'
table = DeTable(
ListSchema(), action=url,
buttons=(btn_view, btn_add, btn_edit, btn_delete, btn_close))
return dict(table=table.render(), title=_('Users'))