user.py
1.87 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import os
from sqlalchemy import (
cast,
Text,
)
from pyramid.view import view_config
from pyramid.i18n import TranslationStringFactory
from deform import (
Form,
ZPTRendererFactory,
)
from datatables import (
ColumnDT,
DataTables,
)
from ...models import DBSession
from ...models.ziggurat import User
from ..user import (
deform_templates,
BaseView,
)
from .renderer import render
_ = 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')
search_path = [my_templates, deform_templates]
my_renderer = ZPTRendererFactory(search_path)
@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):
def render(self, form): # Override
form.my_widgets = render(form, 'templates/user/edit.yml')
return form.render()
def get_form(self, schema, user=None): # Override
return super().get_form(schema, user, my_renderer)
@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()