user_ext.py
3.01 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
75
76
77
78
79
80
81
82
83
84
85
86
87
import colander
from datatables import (ColumnDT, DataTables, )
from deform import (widget, )
from opensipkd.tools.buttons import btn_close, btn_delete, btn_view
from pyramid.i18n import TranslationStringFactory
from pyramid.view import view_config
from . import BaseView, button_import # Tombol import
from opensipkd.models import (DBSession, User, ExternalIdentity)
_ = TranslationStringFactory('user')
class AddSchema(colander.Schema):
external_user_name = colander.SchemaNode(
colander.String(), title=_('User Name'))
provider_name = (colander.SchemaNode(colander.String(), title=_('Provider')))
local_user_id = (colander.SchemaNode(colander.String(), title=_('User ID')))
class EditSchema(AddSchema):
external_id = colander.SchemaNode(colander.String(),
widget=widget.TextInputWidget(readonly=True),
missing=colander.drop)
class ListSchema(colander.Schema):
id = colander.SchemaNode(colander.String(), field="external_id", title="Action")
external_user_name = colander.SchemaNode(
colander.String(), title=_('User Name'))
provider_name = (colander.SchemaNode(colander.String(), title=_('Provider')))
local_user_id = (colander.SchemaNode(colander.String(), title=_('User ID')))
class UserExt(BaseView):
def __init__(self, request):
super(UserExt, self).__init__(request)
self.edit_schema = EditSchema
self.list_schema = ListSchema
self.list_route = "user-ext"
self.list_buttons = (btn_close,) + self.list_report + (button_import,)
self.table = ExternalIdentity
@view_config(
route_name='user-ext',
renderer='templates/table.pt',
permission='user-view')
def view_list(self):
form = super(UserExt, self).view_list(allow_edit=False, allow_delete=False)
return form
@view_config(
route_name='user-ext-view',
renderer='templates/form.pt',
permission='user-view')
def view_view(self):
return super(UserExt, self).view_view()
# Fungsi delete
@view_config(
route_name='user-ext-delete',
renderer='templates/form.pt',
permission='user-edit')
def view_delete(self):
return super(UserExt, self).view_delete()
@view_config(
route_name='user-ext-act',
renderer='json', permission='user-view')
def view_act(self):
return super(UserExt, self).view_act()
def delete_msg(self, row):
return f'Data ID {row.external_id} sudah dihapus.'
def query_id(self):
return DBSession.query(ExternalIdentity).filter_by(external_id=self.req.matchdict["id"])
# Fungsi upload
@view_config(
route_name='user-ext-upload',
renderer='templates/form.pt',
permission='user-upload'
)
def view_upload(self):
self.upload_keys=["local_user_id"]
return super().view_upload(exts=(".csv", ".tsv"))