Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
aa.gusti
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit d4ba51db
authored
Mar 14, 2025
by
Hamsyah
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
pembaruan base tombol impor dan csv
1 parent
1d523b8b
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
99 additions
and
13 deletions
opensipkd/apps/docs/master_import/basejabatandb.csv
opensipkd/apps/docs/master_import/basekecamatandb.csv
opensipkd/apps/docs/master_import/baseparameterdb.csv
opensipkd/apps/docs/master_import/basepartnerdepartemendb.csv
opensipkd/apps/docs/master_import/baseuserdepdb.csv
opensipkd/base/scripts/data/routes.csv
opensipkd/base/views/__init__.py
opensipkd/base/views/jabatan.py
opensipkd/base/views/kecamatan.py
opensipkd/base/views/parameter.py
opensipkd/base/views/posisi.py
opensipkd/base/views/user_dep.py
opensipkd/apps/docs/master_import/basejabatandb.csv
0 → 100644
View file @
d4ba51d
jenis,nama_lain,nama_pendek,eselon_id/public.eselon.id,nama,kode,status,created
123,fredy,mercury,8,Bendahara Pengeluaran,421,1,2025-03-14
321,brian,may,7,Staf,542,1,2025-03-16
412,paul,mccartney,6,PPTK,643,1,2025-03-15
opensipkd/apps/docs/master_import/basekecamatandb.csv
0 → 100644
View file @
d4ba51d
kode,nama,kategori,dati2_id/res_dati2.kode
32.07.01,Ciamis,kecamatan,ID-JB.05
32.07.02,Cikoneng,kecamatan,ID-JB.05
32.07.03,Cijeungjing,kecamatan,ID-JB.05
32.07.04,Sadananya,kecamatan,ID-JB.05
32.07.05,Cidolog,kecamatan,ID-JB.05
32.07.06,Cihaurbeuti,kecamatan,ID-JB.05
32.07.07,Panumbangan,kecamatan,ID-JB.05
32.07.08,Panjalu,kecamatan,ID-JB.05
32.07.09,Kawali,kecamatan,ID-JB.05
32.07.10,Panawangan,kecamatan,ID-JB.05
32.07.11,Cipaku,kecamatan,ID-JB.05
32.07.12,Jatinagara,kecamatan,ID-JB.05
32.07.13,Rajadesa,kecamatan,ID-JB.05
32.07.14,Sukadana,kecamatan,ID-JB.05
32.07.15,Rancah,kecamatan,ID-JB.05
32.07.16,Tambaksari,kecamatan,ID-JB.05
32.07.17,Lakbok,kecamatan,ID-JB.05
32.07.18,Banjarsari,kecamatan,ID-JB.05
32.07.19,Pamarican,kecamatan,ID-JB.05
32.07.29,Cimaragas,kecamatan,ID-JB.05
32.07.30,Cisaga,kecamatan,ID-JB.05
32.07.31,Sindangkasih,kecamatan,ID-JB.05
32.07.32,Baregbeg,kecamatan,ID-JB.05
32.07.33,Sukamantri,kecamatan,ID-JB.05
32.07.34,Lumbung,kecamatan,ID-JB.05
32.07.35,Purwadadi,kecamatan,ID-JB.05
32.07.37,Banjaranyar,kecamatan,ID-JB.05
opensipkd/apps/docs/master_import/baseparameterdb.csv
0 → 100644
View file @
d4ba51d
value,nama,kode,status,created
123,ndxaka,12345,1,2025-03-14
231,jonojoni,54321,1,2025-03-15
321,ploncowati,32145,1,2025-03-16
\ No newline at end of file
\ No newline at end of file
opensipkd/apps/docs/master_import/basepartnerdepartemendb.csv
0 → 100644
View file @
d4ba51d
partner_id/public.partner.id,departemen_id/public.departemen.id,jabatan_id/public.jabatan.id,mulai,selesai
1,1,1,2025-02-01,2025-03-12
\ No newline at end of file
\ No newline at end of file
opensipkd/apps/docs/master_import/baseuserdepdb.csv
0 → 100644
View file @
d4ba51d
user_id/public.users.id,departemen_id/public.departemen.id,id
1,1,8
2,2,2
\ No newline at end of file
\ No newline at end of file
opensipkd/base/scripts/data/routes.csv
View file @
d4ba51d
...
@@ -66,6 +66,7 @@ parameter-add,/parameter/add,Tambah paramater,
...
@@ -66,6 +66,7 @@ parameter-add,/parameter/add,Tambah paramater,
parameter-edit,/parameter/{id}/edit,Edit parameter,
parameter-edit,/parameter/{id}/edit,Edit parameter,
parameter-view,/parameter/{id}/view,View parameter,
parameter-view,/parameter/{id}/view,View parameter,
parameter-delete,/parameter/{id}/delete,Hapus parameter,
parameter-delete,/parameter/{id}/delete,Hapus parameter,
parameter-upload,/parameter/upload,Parameter Upload,1,0,
parameter-act,/parameter/{act}/act,Act parameter,
parameter-act,/parameter/{act}/act,Act parameter,
upload-logo,/upload/logo,Unggah Logo,
upload-logo,/upload/logo,Unggah Logo,
upload-background,/upload/background,Unggah Background,
upload-background,/upload/background,Unggah Background,
...
@@ -94,6 +95,7 @@ departemen-user-edt,/departemen/user/{id}/edt,User Organisasi Edit,1,0,
...
@@ -94,6 +95,7 @@ departemen-user-edt,/departemen/user/{id}/edt,User Organisasi Edit,1,0,
departemen-user-view,/departemen/user/{id}/view,User Organisasi view,1,0,
departemen-user-view,/departemen/user/{id}/view,User Organisasi view,1,0,
departemen-user-del,/departemen/user/{id}/del,User Organisasi Hapus,1,0,
departemen-user-del,/departemen/user/{id}/del,User Organisasi Hapus,1,0,
departemen-user-rpt,/departemen/user/{rpt}/rpt,User Organisasi Report,1,0,
departemen-user-rpt,/departemen/user/{rpt}/rpt,User Organisasi Report,1,0,
departemen-user-upload,/departemen/user/{id}/upload,User Departemen Upload,1,0,
rpc-user,/rpc/user,WebService User Management,1,1,
rpc-user,/rpc/user,WebService User Management,1,1,
googleOauth2,/googleOauth2,'Google OAuth2',1
googleOauth2,/googleOauth2,'Google OAuth2',1
googlesignin,/googlesignin, "Google SignIn",1
googlesignin,/googlesignin, "Google SignIn",1
...
@@ -114,6 +116,7 @@ jabatan-add,/jabatan/add,Tambah Jabatan,
...
@@ -114,6 +116,7 @@ jabatan-add,/jabatan/add,Tambah Jabatan,
jabatan-edit,/jabatan/{id}/edit,Edit Jabatan,
jabatan-edit,/jabatan/{id}/edit,Edit Jabatan,
jabatan-view,/jabatan/{id}/view,View Jabatan,
jabatan-view,/jabatan/{id}/view,View Jabatan,
jabatan-delete,/jabatan/{id}/delete,Hapus Jabatan,
jabatan-delete,/jabatan/{id}/delete,Hapus Jabatan,
jabatan-upload,/jabatan/upload,Upload Jabatan,1,0,
jabatan-act,/jabatan/{act}/act,Act Jabatan,
jabatan-act,/jabatan/{act}/act,Act Jabatan,
jabatan-rpt,/jabatan/{rpt}/rpt,Rpt Jabatan,
jabatan-rpt,/jabatan/{rpt}/rpt,Rpt Jabatan,
partner-departemen,/partner/departemen,Partner Departemen,
partner-departemen,/partner/departemen,Partner Departemen,
...
@@ -121,6 +124,7 @@ partner-departemen-add,/partner/departemen/add,Partner Departemen Add,
...
@@ -121,6 +124,7 @@ partner-departemen-add,/partner/departemen/add,Partner Departemen Add,
partner-departemen-edit,/partner/departemen/{id}/edit,Partner Departemen Edit,
partner-departemen-edit,/partner/departemen/{id}/edit,Partner Departemen Edit,
partner-departemen-view,/partner/departemen/{id}/view,Partner Departemen View,
partner-departemen-view,/partner/departemen/{id}/view,Partner Departemen View,
partner-departemen-delete,/partner/departemen/{id}/delete,Partner Departemen Hapus,
partner-departemen-delete,/partner/departemen/{id}/delete,Partner Departemen Hapus,
partner-departemen-upload,/partner/departemen/upload,Pertner Departemen Upload,1,0,
partner-departemen-act,/partner/departemen/{act}/act,Partner Departemen Act,
partner-departemen-act,/partner/departemen/{act}/act,Partner Departemen Act,
partner-departemen-rpt,/partner/departemen/{rpt}/rpt,Partner Departemen Report,
partner-departemen-rpt,/partner/departemen/{rpt}/rpt,Partner Departemen Report,
log,/log,Log Aplikasi,
log,/log,Log Aplikasi,
...
...
opensipkd/base/views/__init__.py
View file @
d4ba51d
...
@@ -10,6 +10,7 @@ from pyramid.i18n import TranslationStringFactory
...
@@ -10,6 +10,7 @@ from pyramid.i18n import TranslationStringFactory
from
pyramid.interfaces
import
IRoutesMapper
from
pyramid.interfaces
import
IRoutesMapper
from
pyramid.renderers
import
render_to_response
from
pyramid.renderers
import
render_to_response
from
pyramid.view
import
view_config
from
pyramid.view
import
view_config
from
deform.form
import
Button
from
opensipkd.base
import
get_params
,
get_urls
from
opensipkd.base
import
get_params
,
get_urls
from
opensipkd.models
import
(
from
opensipkd.models
import
(
...
@@ -22,6 +23,8 @@ log = logging.getLogger(__name__)
...
@@ -22,6 +23,8 @@ log = logging.getLogger(__name__)
from
datatables
import
ColumnDT
from
datatables
import
ColumnDT
# , DataTables, get_urls)
# , DataTables, get_urls)
btn_upload
=
Button
(
'upload'
,
title
=
_
(
'import'
),
css_class
=
"btn-info"
)
def
no_action
():
def
no_action
():
test
=
ColumnDT
test
=
ColumnDT
...
...
opensipkd/base/views/jabatan.py
View file @
d4ba51d
...
@@ -11,6 +11,7 @@ from opensipkd.tools.report import csv_response, open_rml_pdf, open_rml_row, \
...
@@ -11,6 +11,7 @@ from opensipkd.tools.report import csv_response, open_rml_pdf, open_rml_row, \
pdf_response
pdf_response
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
view_config
,
)
from
pyramid.view
import
(
view_config
,
)
from
.
import
BaseView
,
btn_upload
from
..views
import
BaseView
from
..views
import
BaseView
...
@@ -107,6 +108,7 @@ class ViewJabatan(BaseView):
...
@@ -107,6 +108,7 @@ class ViewJabatan(BaseView):
self
.
edit_schema
=
EditSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Jabatan
self
.
table
=
Jabatan
self
.
list_schema
=
ListSchema
self
.
list_schema
=
ListSchema
self
.
list_buttons
=
self
.
list_buttons
+
(
btn_upload
,)
# self.list_buttons = (btn_view, btn_add, btn_edit, btn_delete, btn_close)
# self.list_buttons = (btn_view, btn_add, btn_edit, btn_delete, btn_close)
def
get_bindings
(
self
,
row
=
None
):
def
get_bindings
(
self
,
row
=
None
):
...
@@ -249,6 +251,12 @@ class ViewJabatan(BaseView):
...
@@ -249,6 +251,12 @@ class ViewJabatan(BaseView):
permission
=
'jabatan'
)
permission
=
'jabatan'
)
def
view_delete
(
self
):
def
view_delete
(
self
):
return
super
()
.
view_delete
()
return
super
()
.
view_delete
()
@view_config
(
route_name
=
'jabatan-upload'
,
renderer
=
'templates/form.pt'
,
permission
=
'jabatan'
)
def
view_upload
(
self
):
self
.
upload_keys
=
[
"nama_lain"
]
return
super
()
.
view_upload
(
exts
=
(
".csv"
,
".tsv"
))
def
form_validator
(
self
,
form
,
value
):
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
def
err_kode
():
...
...
opensipkd/base/views/kecamatan.py
View file @
d4ba51d
...
@@ -2,11 +2,11 @@ import colander
...
@@ -2,11 +2,11 @@ import colander
from
deform
import
(
widget
,
)
from
deform
import
(
widget
,
)
from
opensipkd.base.views.provinsi
import
provinsi_widget
from
opensipkd.base.views.provinsi
import
provinsi_widget
from
opensipkd.models
import
DBSession
,
ResKecamatan
,
ResDati2
,
ResProvinsi
from
opensipkd.models
import
DBSession
,
ResKecamatan
,
ResDati2
,
ResProvinsi
from
opensipkd.tools.buttons
import
btn_
upload
,
btn_
close
,
btn_add
from
opensipkd.tools.buttons
import
btn_close
,
btn_add
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.i18n
import
TranslationStringFactory
from
pyramid.view
import
(
view_config
,
)
from
pyramid.view
import
(
view_config
,
)
from
.
import
widget_os
from
.
import
widget_os
,
btn_upload
from
.dati2
import
dati2_widget
from
.dati2
import
dati2_widget
from
..views
import
BaseView
from
..views
import
BaseView
...
@@ -174,4 +174,4 @@ class Views(BaseView):
...
@@ -174,4 +174,4 @@ class Views(BaseView):
@view_config
(
route_name
=
'kecamatan-upload'
,
@view_config
(
route_name
=
'kecamatan-upload'
,
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
renderer
=
'templates/form.pt'
,
permission
=
'wilayah'
)
def
view_upload
(
self
):
def
view_upload
(
self
):
return
super
(
Views
,
self
)
.
view_upload
(
exts
=
(
".csv"
,
".tsv"
))
return
super
(
Views
,
self
)
.
view_upload
(
exts
=
(
".csv"
,
".tsv"
))
\ No newline at end of file
\ No newline at end of file
opensipkd/base/views/parameter.py
View file @
d4ba51d
...
@@ -2,6 +2,7 @@ from colander import Length
...
@@ -2,6 +2,7 @@ from colander import Length
import
colander
import
colander
from
deform
import
(
widget
,
)
from
deform
import
(
widget
,
)
from
pyramid.view
import
(
view_config
,
)
from
pyramid.view
import
(
view_config
,
)
from
.
import
BaseView
,
btn_upload
from
opensipkd.models
import
(
from
opensipkd.models
import
(
DBSession
,
DBSession
,
...
@@ -76,6 +77,7 @@ class Views(BaseView):
...
@@ -76,6 +77,7 @@ class Views(BaseView):
self
.
edit_schema
=
EditSchema
self
.
edit_schema
=
EditSchema
self
.
table
=
Parameter
self
.
table
=
Parameter
self
.
list_schema
=
ListSchema
self
.
list_schema
=
ListSchema
self
.
list_buttons
=
self
.
list_buttons
+
(
btn_upload
,)
@view_config
(
route_name
=
'parameter'
,
renderer
=
'templates/table.pt'
,
@view_config
(
route_name
=
'parameter'
,
renderer
=
'templates/table.pt'
,
permission
=
'user-edit'
)
permission
=
'user-edit'
)
...
@@ -117,3 +119,9 @@ class Views(BaseView):
...
@@ -117,3 +119,9 @@ class Views(BaseView):
permission
=
'user-edit'
)
permission
=
'user-edit'
)
def
view_delete
(
self
):
def
view_delete
(
self
):
return
super
()
.
view_delete
()
return
super
()
.
view_delete
()
@view_config
(
route_name
=
'parameter-upload'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-upload'
)
def
view_upload
(
self
):
self
.
upload_keys
=
[
"value"
]
return
super
(
Views
,
self
)
.
view_upload
(
exts
=
(
".csv"
,
".tsv"
))
\ No newline at end of file
\ No newline at end of file
opensipkd/base/views/posisi.py
View file @
d4ba51d
...
@@ -9,7 +9,7 @@ from opensipkd.models import DBSession as PartnerDBSession, DBSession, \
...
@@ -9,7 +9,7 @@ from opensipkd.models import DBSession as PartnerDBSession, DBSession, \
from
opensipkd.models
import
Departemen
,
Jabatan
from
opensipkd.models
import
Departemen
,
Jabatan
from
opensipkd.models
import
Partner
,
PartnerDepartemen
from
opensipkd.models
import
Partner
,
PartnerDepartemen
from
opensipkd.tools
import
dmy
,
date_from_str
from
opensipkd.tools
import
dmy
,
date_from_str
from
.
import
widget_os
from
.
import
widget_os
,
btn_upload
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
..views
import
ColumnDT
,
DataTables
,
BaseView
SESS_ADD_FAILED
=
'Tambah posisi partner gagal'
SESS_ADD_FAILED
=
'Tambah posisi partner gagal'
...
@@ -38,8 +38,7 @@ class AddSchema(colander.Schema):
...
@@ -38,8 +38,7 @@ class AddSchema(colander.Schema):
colander
.
Integer
(),
colander
.
Integer
(),
oid
=
"partner_id"
,
oid
=
"partner_id"
,
widget
=
widget
.
HiddenWidget
(),
widget
=
widget
.
HiddenWidget
(),
missing
=
colander
.
null
,
# Tetap izinkan kosong
title
=
"Partner ID"
)
# Field wajib, tanpa missing=colander.null
title
=
"Partner ID"
)
nama
=
colander
.
SchemaNode
(
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
widget
=
nama_widget
,
widget
=
nama_widget
,
...
@@ -100,6 +99,7 @@ class ViewPartner(BaseView):
...
@@ -100,6 +99,7 @@ class ViewPartner(BaseView):
self
.
add_schema
=
AddSchema
self
.
add_schema
=
AddSchema
self
.
edit_schema
=
EditSchema
self
.
edit_schema
=
EditSchema
self
.
list_route
=
'partner-departemen'
self
.
list_route
=
'partner-departemen'
self
.
list_buttons
=
self
.
list_buttons
+
(
btn_upload
,)
def
form_validator
(
self
,
form
,
value
):
def
form_validator
(
self
,
form
,
value
):
print
(
f
"Validating form with values: {value}"
)
# Debugging
print
(
f
"Validating form with values: {value}"
)
# Debugging
...
@@ -109,15 +109,23 @@ class ViewPartner(BaseView):
...
@@ -109,15 +109,23 @@ class ViewPartner(BaseView):
def
err_jabatan
():
def
err_jabatan
():
raise
colander
.
Invalid
(
form
,
'Jabatan Belum Dipilih'
)
raise
colander
.
Invalid
(
form
,
'Jabatan Belum Dipilih'
)
def
err_partner
():
raise
colander
.
Invalid
(
form
,
'Partner Belum Dipilih'
)
# Validasi partner_id
if
not
value
[
'partner_id'
]
or
value
[
'partner_id'
]
is
colander
.
null
:
print
(
"Validation failed: Partner ID kosong"
)
err_partner
()
# Validasi jabatan
# Validasi jabatan
if
not
value
[
'jabatan'
]
or
value
[
'jabatan'
]
==
''
:
if
not
value
[
'jabatan'
]
or
value
[
'jabatan'
]
==
''
:
print
(
"Validation failed: Jabatan kosong"
)
print
(
"Validation failed: Jabatan kosong"
)
err_jabatan
()
err_jabatan
()
# Validasi departemen
# Validasi departemen
if
not
value
[
'departemen'
]
or
value
[
'departemen'
]
==
set
():
if
not
value
[
'departemen'
]
or
value
[
'departemen'
]
==
set
():
print
(
"Validation failed: Departemen kosong"
)
print
(
"Validation failed: Departemen kosong"
)
err_departemen
()
err_departemen
()
# Tidak memvalidasi partner_id agar opsional
def
save_request
(
self
,
values
,
row
=
None
):
def
save_request
(
self
,
values
,
row
=
None
):
print
(
f
"Saving with values: {values}"
)
# Debugging
print
(
f
"Saving with values: {values}"
)
# Debugging
...
@@ -144,10 +152,11 @@ class ViewPartner(BaseView):
...
@@ -144,10 +152,11 @@ class ViewPartner(BaseView):
else
:
else
:
values
[
'jabatan_id'
]
=
None
values
[
'jabatan_id'
]
=
None
#
Konversi colander.null ke Python None untuk partner_
id
#
Pastikan partner_id ada dan val
id
partner_id
=
values
.
get
(
'partner_id'
)
partner_id
=
values
.
get
(
'partner_id'
)
if
partner_id
is
colander
.
null
:
if
not
partner_id
:
partner_id
=
None
request
.
session
.
flash
(
'Partner ID wajib diisi.'
,
'error'
)
return
None
# Simpan setiap departemen yang dipilih sebagai baris baru
# Simpan setiap departemen yang dipilih sebagai baris baru
if
'departemen'
in
values
and
values
[
'departemen'
]:
if
'departemen'
in
values
and
values
[
'departemen'
]:
...
@@ -159,7 +168,7 @@ class ViewPartner(BaseView):
...
@@ -159,7 +168,7 @@ class ViewPartner(BaseView):
)
.
first
()
)
.
first
()
if
not
exists
:
if
not
exists
:
new_row
=
PartnerDepartemen
(
new_row
=
PartnerDepartemen
(
partner_id
=
partner_id
,
#
Sekarang pasti None atau integer
partner_id
=
partner_id
,
#
Tidak lagi opsional
departemen_id
=
int
(
dept_id
),
departemen_id
=
int
(
dept_id
),
jabatan_id
=
values
[
'jabatan_id'
],
jabatan_id
=
values
[
'jabatan_id'
],
mulai
=
values
[
'mulai'
],
mulai
=
values
[
'mulai'
],
...
@@ -348,4 +357,10 @@ class ViewPartner(BaseView):
...
@@ -348,4 +357,10 @@ class ViewPartner(BaseView):
renderer
=
'templates/form.pt'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
permission
=
'partner-departemen'
)
def
view_del
(
self
):
def
view_del
(
self
):
return
super
()
.
view_delete
()
\ No newline at end of file
\ No newline at end of file
return
super
()
.
view_delete
()
@view_config
(
route_name
=
'partner-departemen-upload'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_upload
(
self
):
self
.
upload_keys
=
[
"mulai"
]
return
super
()
.
view_upload
(
exts
=
(
".csv"
,
".tsv"
))
\ No newline at end of file
\ No newline at end of file
opensipkd/base/views/user_dep.py
View file @
d4ba51d
import
colander
import
colander
from
deform
import
widget
from
deform
import
widget
from
pyramid.view
import
view_config
from
pyramid.view
import
view_config
from
.
import
BaseView
from
.
import
BaseView
,
btn_upload
from
...models
import
User
,
DepartemenUser
,
Departemen
,
DBSession
from
...models
import
User
,
DepartemenUser
,
Departemen
,
DBSession
from
.departemen
import
departemen_widget
,
get_departemen_list
from
.departemen
import
departemen_widget
,
get_departemen_list
from
.user
import
user_widget
,
user_select
,
user_list
from
.user
import
user_widget
,
user_select
,
user_list
...
@@ -65,6 +65,7 @@ class Views(BaseView):
...
@@ -65,6 +65,7 @@ class Views(BaseView):
self
.
edit_schema
=
EditSchema
self
.
edit_schema
=
EditSchema
self
.
list_route
=
'user-departemen'
self
.
list_route
=
'user-departemen'
self
.
table
=
DepartemenUser
self
.
table
=
DepartemenUser
self
.
list_buttons
=
self
.
list_buttons
+
(
btn_upload
,)
def
list_join
(
self
,
query
,
**
kwargs
):
def
list_join
(
self
,
query
,
**
kwargs
):
return
query
.
outerjoin
(
Departemen
,
Departemen
.
id
==
self
.
table
.
departemen_id
)
\
return
query
.
outerjoin
(
Departemen
,
Departemen
.
id
==
self
.
table
.
departemen_id
)
\
...
@@ -105,6 +106,12 @@ class Views(BaseView):
...
@@ -105,6 +106,12 @@ class Views(BaseView):
permission
=
'user-edit'
)
permission
=
'user-edit'
)
def
view_edit
(
self
):
def
view_edit
(
self
):
return
super
()
.
view_edit
()
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'user-departemen-upload'
,
renderer
=
'templates/form.pt'
,
permission
=
'user-upload'
)
def
view_upload
(
self
):
self
.
upload_keys
=
[
"user_id"
]
return
super
(
Views
,
self
)
.
view_upload
(
exts
=
(
".csv"
,
".tsv"
))
def
save_request
(
self
,
values
,
row
=
None
):
def
save_request
(
self
,
values
,
row
=
None
):
# Ambil user_id dari values
# Ambil user_id dari values
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment