Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
irul
/
opensipkd-base
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 93f94fd7
authored
Mar 26, 2025
by
Hamsyah
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
pembaruan by hmzh
1 parent
6f40132e
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
89 additions
and
235 deletions
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/base/views/jabatan.py
View file @
93f94fd
...
...
@@ -113,7 +113,6 @@ class ViewJabatan(BaseView):
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'jabatan.jrxml'
)
def
get_bindings
(
self
,
row
=
None
):
...
...
@@ -131,16 +130,17 @@ class ViewJabatan(BaseView):
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
path
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
path
,
'static'
,
'img'
,
'logo.png'
)
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'jabatan.jrxml'
)
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
"logo"
:
logo
}
print
(
parameters
)
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
filename
=
jasper_export
(
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
...
...
opensipkd/base/views/kecamatan.py
View file @
93f94fd
...
...
@@ -85,7 +85,6 @@ class Views(BaseView):
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'kecamatan.jrxml'
)
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
...
...
@@ -138,16 +137,16 @@ class Views(BaseView):
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
path
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
path
,
'static'
,
'img'
,
'logo.png'
)
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'kecamatan.jrxml'
)
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"logo"
:
logo
}
print
(
parameters
)
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
filename
=
jasper_export
(
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
...
...
opensipkd/base/views/parameter.py
View file @
93f94fd
...
...
@@ -85,7 +85,6 @@ class Views(BaseView):
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'parameter.jrxml'
)
@view_config
(
route_name
=
'parameter'
,
renderer
=
'templates/table.pt'
,
permission
=
'user-edit'
)
...
...
@@ -98,16 +97,17 @@ class Views(BaseView):
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
path
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
path
,
'static'
,
'img'
,
'logo.png'
)
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'parameter.jrxml'
)
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
"logo"
:
logo
}
print
(
parameters
)
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
filename
=
jasper_export
(
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
...
...
opensipkd/base/views/posisi.py
View file @
93f94fd
...
...
@@ -5,13 +5,8 @@ from deform import widget
from
pyramid.view
import
view_config
from
sqlalchemy
import
or_
from
sqlalchemy.orm
import
aliased
from
opensipkd.tools
import
get_random_string
from
opensipkd.models
import
DBSession
as
PartnerDBSession
,
DBSession
,
\
ResCompany
from
opensipkd.models
import
Departemen
,
Jabatan
from
opensipkd.models
import
Partner
,
PartnerDepartemen
from
opensipkd.tools
import
dmy
,
date_from_str
from
opensipkd.tools
import
get_random_string
,
date_from_str
,
dmy
from
opensipkd.models
import
DBSession
as
PartnerDBSession
,
DBSession
,
ResCompany
,
Departemen
,
Jabatan
,
Partner
,
PartnerDepartemen
from
.
import
widget_os
,
button_import
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
pyramid.path
import
AssetResolver
...
...
@@ -20,18 +15,22 @@ from . import BaseView, button_import, get_params
SESS_ADD_FAILED
=
'Tambah posisi partner gagal'
SESS_EDIT_FAILED
=
'Edit posisi partner gagal'
def
get_partner_list
():
"""Fungsi untuk mengambil daftar partner"""
partners
=
DBSession
.
query
(
Partner
)
.
order_by
(
Partner
.
nama
)
.
all
()
return
[(
str
(
partner
.
id
),
partner
.
nama
)
for
partner
in
partners
]
class
AddSchema
(
colander
.
Schema
):
nama_widget
=
widget
.
AutocompleteInputWidget
(
size
=
60
,
values
=
'/partner/hon/act'
,
min_length
=
2
,
style
=
"z-index: 100000 !important;"
)
@colander.deferred
def
nama_widget
(
node
,
kw
):
values
=
kw
.
get
(
'partner_list'
,
[])
return
widget
.
SelectWidget
(
values
=
values
,
placeholder
=
"Pilih Partner"
)
@colander.deferred
def
departemen_widget
(
node
,
kw
):
departemen_list
=
DBSession
.
query
(
Departemen
.
id
,
Departemen
.
nama
)
.
all
()
choices
=
[(
str
(
departemen
.
id
),
departemen
.
nama
)
for
departemen
in
departemen_list
]
return
widget
.
CheckboxChoiceWidget
(
values
=
choices
,
multiple
=
True
)
# Enable multiple selection
return
widget
.
CheckboxChoiceWidget
(
values
=
choices
,
multiple
=
True
)
@colander.deferred
def
jabatan_widget
(
node
,
kw
):
...
...
@@ -55,7 +54,7 @@ class AddSchema(colander.Schema):
widget
=
widget
.
HiddenWidget
(),
missing
=
colander
.
drop
)
departemen
=
colander
.
SchemaNode
(
colander
.
Set
(),
# Menggunakan Set untuk multiple values
colander
.
Set
(),
widget
=
departemen_widget
,
oid
=
"departemen_nm"
,
title
=
"Departemen *"
)
...
...
@@ -73,8 +72,7 @@ class AddSchema(colander.Schema):
selesai
=
colander
.
SchemaNode
(
colander
.
String
(),
oid
=
"selesai"
,
widget
=
widget_os
.
DateInputWidget
(
css_class
=
"date"
,
format
=
"dd-mm-yyyy"
,
style
=
"z-index: 9999 !important;"
),
widget
=
widget_os
.
DateInputWidget
(
css_class
=
"date"
,
format
=
"dd-mm-yyyy"
,
style
=
"z-index: 9999 !important;"
),
title
=
"Selesai"
)
class
EditSchema
(
AddSchema
):
...
...
@@ -85,12 +83,9 @@ class EditSchema(AddSchema):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
"Action"
)
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
Partner
.
nama
)
mulai
=
colander
.
SchemaNode
(
colander
.
String
())
selesai
=
colander
.
SchemaNode
(
colander
.
String
())
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
Partner
.
nama
)
mulai
=
colander
.
SchemaNode
(
colander
.
String
())
selesai
=
colander
.
SchemaNode
(
colander
.
String
())
class
ViewPartner
(
BaseView
):
def
__init__
(
self
,
request
):
...
...
@@ -103,10 +98,25 @@ class ViewPartner(BaseView):
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'partnerdep1.jrxml'
)
def
get_bindings
(
self
,
row
=
None
):
bindings
=
{
"partner_list"
:
get_partner_list
(),
"departemen_list"
:
[(
str
(
d
.
id
),
d
.
nama
)
for
d
in
DBSession
.
query
(
Departemen
)
.
all
()],
"jabatan_list"
:
[(
str
(
j
.
id
),
j
.
nama
)
for
j
in
DBSession
.
query
(
Jabatan
)
.
all
()]
}
if
row
:
bindings
[
"default_values"
]
=
{
"partner_id"
:
row
.
partner_id
,
"nama"
:
str
(
row
.
partner_id
)
if
row
.
partner_id
else
""
,
"departemen"
:
[
str
(
dept_id
[
0
])
for
dept_id
in
DBSession
.
query
(
PartnerDepartemen
.
departemen_id
)
.
filter_by
(
partner_id
=
row
.
partner_id
,
jabatan_id
=
row
.
jabatan_id
)
.
all
()],
"jabatan_id"
:
str
(
row
.
jabatan_id
)
if
row
.
jabatan_id
else
""
,
"mulai"
:
dmy
(
row
.
mulai
)
if
row
.
mulai
else
""
,
"selesai"
:
dmy
(
row
.
selesai
)
if
row
.
selesai
else
""
}
return
bindings
def
form_validator
(
self
,
form
,
value
):
print
(
f
"Validating form with values: {value}"
)
# Debugging
def
err_departemen
():
raise
colander
.
Invalid
(
form
,
'Departemen Kerja Belum Dipilih'
)
...
...
@@ -116,23 +126,14 @@ class ViewPartner(BaseView):
def
err_partner
():
raise
colander
.
Invalid
(
form
,
'Partner Belum Dipilih'
)
# Validasi partner_id
if
not
value
[
'partner_id'
]:
print
(
"Validation failed: Partner ID kosong"
)
err_partner
()
# Validasi jabatan_id
if
not
value
[
'jabatan_id'
]:
print
(
"Validation failed: Jabatan kosong"
)
err_jabatan
()
# Validasi departemen
if
not
value
[
'departemen'
]
or
value
[
'departemen'
]
==
set
():
print
(
"Validation failed: Departemen kosong"
)
err_departemen
()
def
save_request
(
self
,
values
,
row
=
None
):
print
(
f
"Saving with values: {values}"
)
# Debugging
request
=
self
.
req
if
'id'
in
request
.
matchdict
:
values
[
'id'
]
=
request
.
matchdict
[
'id'
]
...
...
@@ -141,28 +142,23 @@ class ViewPartner(BaseView):
if
'selesai'
in
values
:
values
[
'selesai'
]
=
date_from_str
(
values
[
'selesai'
])
if
values
[
'selesai'
]
else
None
# Ambil jabatan_id dari form
if
'jabatan_id'
in
values
and
values
[
'jabatan_id'
]:
values
[
'jabatan_id'
]
=
int
(
values
[
'jabatan_id'
])
# Konversi ke integer
values
[
'jabatan_id'
]
=
int
(
values
[
'jabatan_id'
])
else
:
values
[
'jabatan_id'
]
=
None
# Pastikan partner_id ada dan valid
partner_id
=
values
.
get
(
'partner_id'
)
if
not
partner_id
:
request
.
session
.
flash
(
'Partner ID wajib diisi.'
,
'error'
)
return
None
return
row
if
row
else
PartnerDepartemen
()
# Simpan setiap departemen yang dipilih sebagai baris baru
if
'departemen'
in
values
and
values
[
'departemen'
]:
# Jika sedang mengedit, hapus entri lama untuk partner_id dan jabatan_id ini
if
'id'
in
values
:
DBSession
.
query
(
PartnerDepartemen
)
.
filter_by
(
partner_id
=
partner_id
,
jabatan_id
=
values
[
'jabatan_id'
]
)
.
delete
()
# Tambahkan entri baru untuk setiap departemen yang dipilih
for
dept_id
in
values
[
'departemen'
]:
new_row
=
PartnerDepartemen
(
partner_id
=
partner_id
,
...
...
@@ -174,13 +170,12 @@ class ViewPartner(BaseView):
DBSession
.
add
(
new_row
)
DBSession
.
flush
()
request
.
session
.
flash
(
'Posisi Partner sudah disimpan.'
)
return
None
return
new_row
else
:
request
.
session
.
flash
(
'Tidak ada departemen yang dipilih.'
,
'error'
)
return
None
return
row
if
row
else
PartnerDepartemen
()
@view_config
(
route_name
=
'partner-departemen'
,
renderer
=
'templates/table.pt'
,
permission
=
'view'
)
@view_config
(
route_name
=
'partner-departemen'
,
renderer
=
'templates/table.pt'
,
permission
=
'view'
)
def
view_list
(
self
):
return
super
()
.
view_list
()
...
...
@@ -190,21 +185,22 @@ class ViewPartner(BaseView):
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
path
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
path
,
'static'
,
'img'
,
'logo.png'
)
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'partnerdep1.jrxml'
)
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
"logo"
:
logo
}
print
(
parameters
)
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
filename
=
jasper_export
(
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
def
query_register
():
return
DBSession
.
query
(
PartnerDepartemen
.
partner_id
,
PartnerDepartemen
.
departemen_id
,
PartnerDepartemen
.
departemen
,
PartnerDepartemen
.
jabatan_id
,
PartnerDepartemen
.
mulai
,
PartnerDepartemen
.
selesai
)
.
order_by
(
PartnerDepartemen
.
partner_id
)
return
DBSession
.
query
(
PartnerDepartemen
.
partner_id
,
PartnerDepartemen
.
departemen_id
,
PartnerDepartemen
.
jabatan_id
,
PartnerDepartemen
.
mulai
,
PartnerDepartemen
.
selesai
)
.
order_by
(
PartnerDepartemen
.
partner_id
)
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
...
...
@@ -212,145 +208,18 @@ class ViewPartner(BaseView):
header
=
row
.
_mapping
.
keys
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
filename
=
f
"{get_random_string(16)}.csv"
value
=
{
'header'
:
header
,
'rows'
:
rows
,
}
value
=
{
'header'
:
header
,
'rows'
:
rows
}
return
csv_response
(
self
.
req
,
value
,
filename
)
@view_config
(
route_name
=
'partner-departemen-act'
,
renderer
=
'json'
,
permission
=
'view'
)
@view_config
(
route_name
=
'partner-departemen-act'
,
renderer
=
'json'
,
permission
=
'view'
)
def
view_act
(
self
):
# request = self.req
# ses = request.session
# params = request.params
# url_dict = request.matchdict
# struktural = aliased(Jabatan)
# if url_dict['act'] == 'grid':
# columns = [
# ColumnDT(PartnerDepartemen.id, mData='id'),
# ColumnDT(Partner.kode, mData='nik'),
# ColumnDT(Partner.nama, mData='nama'),
# ColumnDT(Departemen.nama, mData='departemen'),
# ColumnDT(Jabatan.nama, mData='jabatan'),
# ColumnDT(ResCompany.nama, mData='jenis'),
# ColumnDT(struktural.nama, mData='struktural_nm'),
# ColumnDT(PartnerDepartemen.mulai, mData='mulai'),
# ColumnDT(PartnerDepartemen.selesai, mData='selesai'),
# ]
# q = PartnerDBSession.query().select_from(PartnerDepartemen) \
# .join(Departemen,
# PartnerDepartemen.departemen_id == Departemen.id) \
# .outerjoin(ResCompany, Departemen.company_id == ResCompany.id) \
# .outerjoin(Partner, Partner.id == PartnerDepartemen.partner_id) \
# .outerjoin(Jabatan,
# (PartnerDepartemen.jabatan_id == Jabatan.id)) \
# .outerjoin(struktural,
# (PartnerDepartemen.jabatan_id == struktural.id)) \
# .order_by(Partner.nama)
# if self.req.user.company_id:
# q = q.filter(Departemen.company_id == self.req.user.company_id)
# row_table = DataTables(request.GET, q, columns)
# return row_table.output_result()
# elif url_dict['act'] == 'hon_departemen':
# term = 'term' in params and params['term'] or ''
# prefix = 'prefix' in params and params['prefix'] or ''
# q = PartnerDBSession.query(Partner.id, Partner.nik, Partner.nama,
# PartnerDepartemen.jabatan_id,
# Jabatan.nama.label('jabatan_nm'),
# ).join(PartnerDepartemen) \
# .join(Jabatan, (PartnerDepartemen.jabatan_id == Jabatan.id)) \
# .filter(Partner.nama.ilike('%%%s%%' % term)) \
# .filter(PartnerDepartemen.departemen_id == ses['departemen_id']) \
# .filter(or_(Jabatan.kode == '101', Jabatan.kode == '102')) \
# .order_by(Partner.nama)
# if self.req.user.company_id:
# q = q.filter(Departemen.company_id == self.req.user.company_id)
# rows = q.all()
# r = []
# keys = ('id', 'value', 'nik', 'nama', 'jabatan_id', 'jabatan_nm')
# for k in rows:
# values = (k[0], k[2] + (" - ") + k[4], k[1], k[2], k[3], k[4])
# r.append(dict(zip(keys, values)))
# return r
# elif url_dict['act'] == 'hon_jabatan':
# term = 'term' in params and params['term'] or ''
# prefix = 'prefix' in params and params['prefix'] or ''
# partner_id = 'partner_id' in params and params['partner_id'] or 0
# q = PartnerDBSession.query(Partner.id, Partner.nik, Partner.nama,
# PartnerDepartemen.jabatan_id,
# Jabatan.nama.label('jabatan_nm'),
# ).join(PartnerDepartemen) \
# .join(Jabatan, (PartnerDepartemen.jabatan_id == Jabatan.id)) \
# .filter(Partner.nama.ilike('%%%s%%' % term)) \
# .filter(PartnerDepartemen.departemen_id == ses['departemen_id']) \
# .order_by(Partner.nama)
# if self.req.user.company_id:
# q = q.filter(Departemen.company_id == self.req.user.company_id)
# rows = q.all()
# r = []
# keys = ('id', 'value', 'nik', 'nama', 'jabatan_id', 'jabatan_nm')
# for k in rows:
# values = (k[0], k[2] + (" - ") + k[4], k[1], k[2], k[3], k[4])
# r.append(dict(zip(keys, values)))
# return r
# elif url_dict['act'] == 'hon_skpkd':
# term = 'term' in params and params['term'] or ''
# prefix = 'prefix' in params and params['prefix'] or ''
# q = PartnerDBSession.query(Partner.id, Partner.nik, Partner.nama,
# PartnerDepartemen.jabatan_id,
# Jabatan.nama.label('jabatan_nm'),
# ).join(PartnerDepartemen) \
# .join(Jabatan, (PartnerDepartemen.jabatan_id == Jabatan.id)) \
# .filter(Partner.nama.ilike('%%%s%%' % term)) \
# .filter(PartnerDepartemen.departemen_id == ses['departemen_id']) \
# .filter(or_(Jabatan.kode == '101', Jabatan.kode == '102',
# Jabatan.kode == '103', Jabatan.kode == '104')) \
# .order_by(Partner.nama)
# if self.req.user.company_id:
# q = q.filter(Departemen.company_id == self.req.user.company_id)
# rows = q.all()
# r = []
# keys = ('id', 'value', 'nik', 'nama', 'jabatan_id', 'jabatan_nm')
# for k in rows:
# values = (k[0], k[2] + (" - ") + k[4], k[1], k[2], k[3], k[4])
# r.append(dict(zip(keys, values)))
# return r
# elif url_dict['act'] == 'hon_jabatannm':
# term = 'term' in params and params['term'] or ''
# q = DBSession.query(Jabatan.id, Jabatan.kode, Jabatan.nama,
# Jabatan.jenis) \
# .filter(Jabatan.nama.ilike('%%%s%%' % term)) \
# .order_by(Jabatan.nama)
# if self.req.user.company_id:
# q = q.filter(Departemen.company_id == self.req.user.company_id)
# rows = q.all()
# r = []
# for k in rows:
# if k[3] == 1:
# nama_jenis = 'Struktural'
# elif k[3] == 2:
# nama_jenis = 'Fungsional'
# else:
# nama_jenis = 'Keuangan'
# d = {}
# d['id'] = k[0]
# d['value'] = k[2] + ' (' + nama_jenis + ')'
# d['kode'] = k[1]
# d['nama'] = k[2]
# r.append(d)
# return r
return
super
(
ViewPartner
,
self
)
.
view_act
()
# Kode asli view_act tetap sama, tidak diubah untuk pertanyaan ini
return
super
()
.
view_act
()
def
get_values
(
self
,
row
,
istime
=
False
):
values
=
super
()
.
get_values
(
row
,
istime
)
values
[
'nama'
]
=
row
.
partner
.
nama
if
row
.
partner
else
''
values
[
'jabatan_id'
]
=
str
(
row
.
jabatan_id
)
if
row
.
jabatan_id
else
''
# Ambil semua departemen yang terkait dengan partner_id dan jabatan_id ini
departemen_ids
=
DBSession
.
query
(
PartnerDepartemen
.
departemen_id
)
.
filter_by
(
partner_id
=
row
.
partner_id
,
jabatan_id
=
row
.
jabatan_id
...
...
@@ -360,38 +229,23 @@ class ViewPartner(BaseView):
values
[
'selesai'
]
=
dmy
(
row
.
selesai
)
if
row
.
selesai
else
''
return
values
@view_config
(
route_name
=
'partner-departemen-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
@view_config
(
route_name
=
'partner-departemen-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_view
(
self
):
return
super
()
.
view_view
()
def
before_add
(
self
):
values
=
{
'departemen_id'
:
self
.
ses
[
'departemen_id'
],
'departemen_nm'
:
self
.
ses
[
'departemen_nm'
],
'departemen_kd'
:
self
.
ses
[
'departemen_kd'
]}
return
values
@view_config
(
route_name
=
'partner-departemen-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
@view_config
(
route_name
=
'partner-departemen-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_add
(
self
):
print
(
f
"POST data: {self.req.POST}"
)
# Debugging data yang dikirim dari form
return
super
()
.
view_add
()
@view_config
(
route_name
=
'partner-departemen-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
@view_config
(
route_name
=
'partner-departemen-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_edt
(
self
):
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'partner-departemen-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
@view_config
(
route_name
=
'partner-departemen-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_del
(
self
):
return
super
()
.
view_delete
()
@view_config
(
route_name
=
'partner-departemen-upload'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
@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
opensipkd/base/views/user_dep.py
View file @
93f94fd
...
...
@@ -98,7 +98,6 @@ class Views(BaseView):
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'userdep1.jrxml'
)
def
list_join
(
self
,
query
,
**
kwargs
):
return
query
.
outerjoin
(
Departemen
,
Departemen
.
id
==
self
.
table
.
departemen_id
)
\
...
...
@@ -116,14 +115,16 @@ class Views(BaseView):
def
pdf_response
(
self
,
**
kwargs
):
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
path
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
path
,
'static'
,
'img'
,
'logo.png'
)
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'userdep1.jrxml'
)
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
"logo"
:
logo
}
print
(
parameters
)
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
filename
=
jasper_export
(
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
...
...
@@ -180,7 +181,7 @@ class Views(BaseView):
def
view_edit
(
self
):
response
=
super
()
.
view_edit
()
if
isinstance
(
response
,
dict
):
print
(
f
"Edit response: {response}"
)
#
print(f"Edit response: {response}")
if
self
.
request
.
method
==
'POST'
:
form
=
response
.
get
(
'form'
)
if
form
.
validate
():
...
...
@@ -201,14 +202,14 @@ class Views(BaseView):
return
super
(
Views
,
self
)
.
view_upload
(
exts
=
(
".csv"
,
".tsv"
))
def
save_request
(
self
,
values
,
row
=
None
):
print
(
f
"Values received in save_request: {values}"
)
print
(
f
"Row before save: {row}"
)
#
print(f"Values received in save_request: {values}")
#
print(f"Row before save: {row}")
# Saat edit, gunakan user_id dari row yang ada
user_id
=
row
.
user_id
if
row
else
values
.
get
(
"user_id"
)
if
not
user_id
:
print
(
"No user_id found, returning None"
)
return
None
#
if not user_id:
#
print("No user_id found, returning None")
#
return None
if
"departemen_id"
in
values
:
selected_departemen
=
set
(
...
...
@@ -243,7 +244,7 @@ class Views(BaseView):
if
selected_list
:
existing_row
.
departemen_id
=
dept1
existing_row
.
sub_departemen
=
dept2
print
(
f
"Updated existing row: {existing_row}"
)
#
print(f"Updated existing row: {existing_row}")
row
=
existing_row
else
:
# Buat entri baru jika belum ada
...
...
@@ -254,19 +255,19 @@ class Views(BaseView):
sub_departemen
=
dept2
)
DBSession
.
add
(
new_row
)
print
(
f
"Created new row: {new_row}"
)
#
print(f"Created new row: {new_row}")
row
=
new_row
else
:
row
=
None
try
:
DBSession
.
flush
()
print
(
f
"Row after save: {row}"
)
#print(f"Row after save: {row}")raise exception
except
Exception
as
e
:
DBSession
.
rollback
()
print
(
f
"Error during flush: {str(e)}"
)
print
(
e
)
self
.
request
.
session
.
flash
(
f
"Gagal menyimpan: {str(e)}"
,
"error"
)
return
Non
e
return
e
return
row
...
...
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