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
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
96 additions
and
242 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):
...
@@ -113,7 +113,6 @@ class ViewJabatan(BaseView):
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'jabatan.jrxml'
)
def
get_bindings
(
self
,
row
=
None
):
def
get_bindings
(
self
,
row
=
None
):
...
@@ -131,16 +130,17 @@ class ViewJabatan(BaseView):
...
@@ -131,16 +130,17 @@ class ViewJabatan(BaseView):
return
resolver
.
abspath
()
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
from
opensipkd.base.tools.report
import
jasper_export
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
path
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
logo
=
os
.
path
.
join
(
path
,
'static'
,
'img'
,
'logo.png'
)
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'jabatan.jrxml'
)
parameters
=
{
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
"logo"
:
logo
"logo"
:
logo
}
}
print
(
parameters
)
filename
=
jasper_export
(
report_file
,
parameters
=
parameters
)
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
@staticmethod
...
...
opensipkd/base/views/kecamatan.py
View file @
93f94fd
...
@@ -85,7 +85,6 @@ class Views(BaseView):
...
@@ -85,7 +85,6 @@ class Views(BaseView):
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'kecamatan.jrxml'
)
def
form_validator
(
self
,
form
,
value
):
def
form_validator
(
self
,
form
,
value
):
def
err_kode
():
def
err_kode
():
...
@@ -138,16 +137,16 @@ class Views(BaseView):
...
@@ -138,16 +137,16 @@ class Views(BaseView):
return
resolver
.
abspath
()
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
from
opensipkd.base.tools.report
import
jasper_export
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
path
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
logo
=
os
.
path
.
join
(
path
,
'static'
,
'img'
,
'logo.png'
)
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'kecamatan.jrxml'
)
parameters
=
{
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"logo"
:
logo
"logo"
:
logo
}
}
print
(
parameters
)
filename
=
jasper_export
(
report_file
,
parameters
=
parameters
)
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
@staticmethod
...
...
opensipkd/base/views/parameter.py
View file @
93f94fd
...
@@ -85,7 +85,6 @@ class Views(BaseView):
...
@@ -85,7 +85,6 @@ class Views(BaseView):
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'parameter.jrxml'
)
@view_config
(
route_name
=
'parameter'
,
renderer
=
'templates/table.pt'
,
@view_config
(
route_name
=
'parameter'
,
renderer
=
'templates/table.pt'
,
permission
=
'user-edit'
)
permission
=
'user-edit'
)
...
@@ -98,16 +97,17 @@ class Views(BaseView):
...
@@ -98,16 +97,17 @@ class Views(BaseView):
return
resolver
.
abspath
()
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
from
opensipkd.base.tools.report
import
jasper_export
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
path
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
logo
=
os
.
path
.
join
(
path
,
'static'
,
'img'
,
'logo.png'
)
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'parameter.jrxml'
)
parameters
=
{
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
"logo"
:
logo
"logo"
:
logo
}
}
print
(
parameters
)
filename
=
jasper_export
(
report_file
,
parameters
=
parameters
)
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
@staticmethod
...
...
opensipkd/base/views/posisi.py
View file @
93f94fd
...
@@ -5,13 +5,8 @@ from deform import widget
...
@@ -5,13 +5,8 @@ from deform import widget
from
pyramid.view
import
view_config
from
pyramid.view
import
view_config
from
sqlalchemy
import
or_
from
sqlalchemy
import
or_
from
sqlalchemy.orm
import
aliased
from
sqlalchemy.orm
import
aliased
from
opensipkd.tools
import
get_random_string
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
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
.
import
widget_os
,
button_import
from
.
import
widget_os
,
button_import
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
..views
import
ColumnDT
,
DataTables
,
BaseView
from
pyramid.path
import
AssetResolver
from
pyramid.path
import
AssetResolver
...
@@ -20,18 +15,22 @@ from . import BaseView, button_import, get_params
...
@@ -20,18 +15,22 @@ from . import BaseView, button_import, get_params
SESS_ADD_FAILED
=
'Tambah posisi partner gagal'
SESS_ADD_FAILED
=
'Tambah posisi partner gagal'
SESS_EDIT_FAILED
=
'Edit 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
):
class
AddSchema
(
colander
.
Schema
):
nama_widget
=
widget
.
AutocompleteInputWidget
(
@colander.deferred
size
=
60
,
def
nama_widget
(
node
,
kw
):
values
=
'/partner/hon/act'
,
values
=
kw
.
get
(
'partner_list'
,
[])
min_length
=
2
,
return
widget
.
SelectWidget
(
values
=
values
,
placeholder
=
"Pilih Partner"
)
style
=
"z-index: 100000 !important;"
)
@colander.deferred
@colander.deferred
def
departemen_widget
(
node
,
kw
):
def
departemen_widget
(
node
,
kw
):
departemen_list
=
DBSession
.
query
(
Departemen
.
id
,
Departemen
.
nama
)
.
all
()
departemen_list
=
DBSession
.
query
(
Departemen
.
id
,
Departemen
.
nama
)
.
all
()
choices
=
[(
str
(
departemen
.
id
),
departemen
.
nama
)
for
departemen
in
departemen_list
]
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
@colander.deferred
def
jabatan_widget
(
node
,
kw
):
def
jabatan_widget
(
node
,
kw
):
...
@@ -55,7 +54,7 @@ class AddSchema(colander.Schema):
...
@@ -55,7 +54,7 @@ class AddSchema(colander.Schema):
widget
=
widget
.
HiddenWidget
(),
widget
=
widget
.
HiddenWidget
(),
missing
=
colander
.
drop
)
missing
=
colander
.
drop
)
departemen
=
colander
.
SchemaNode
(
departemen
=
colander
.
SchemaNode
(
colander
.
Set
(),
# Menggunakan Set untuk multiple values
colander
.
Set
(),
widget
=
departemen_widget
,
widget
=
departemen_widget
,
oid
=
"departemen_nm"
,
oid
=
"departemen_nm"
,
title
=
"Departemen *"
)
title
=
"Departemen *"
)
...
@@ -73,8 +72,7 @@ class AddSchema(colander.Schema):
...
@@ -73,8 +72,7 @@ class AddSchema(colander.Schema):
selesai
=
colander
.
SchemaNode
(
selesai
=
colander
.
SchemaNode
(
colander
.
String
(),
colander
.
String
(),
oid
=
"selesai"
,
oid
=
"selesai"
,
widget
=
widget_os
.
DateInputWidget
(
css_class
=
"date"
,
format
=
"dd-mm-yyyy"
,
widget
=
widget_os
.
DateInputWidget
(
css_class
=
"date"
,
format
=
"dd-mm-yyyy"
,
style
=
"z-index: 9999 !important;"
),
style
=
"z-index: 9999 !important;"
),
title
=
"Selesai"
)
title
=
"Selesai"
)
class
EditSchema
(
AddSchema
):
class
EditSchema
(
AddSchema
):
...
@@ -85,12 +83,9 @@ class EditSchema(AddSchema):
...
@@ -85,12 +83,9 @@ class EditSchema(AddSchema):
class
ListSchema
(
colander
.
Schema
):
class
ListSchema
(
colander
.
Schema
):
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
"Action"
)
id
=
colander
.
SchemaNode
(
colander
.
Integer
(),
title
=
"Action"
)
nama
=
colander
.
SchemaNode
(
nama
=
colander
.
SchemaNode
(
colander
.
String
(),
field
=
Partner
.
nama
)
colander
.
String
(),
field
=
Partner
.
nama
)
mulai
=
colander
.
SchemaNode
(
colander
.
String
())
mulai
=
colander
.
SchemaNode
(
selesai
=
colander
.
SchemaNode
(
colander
.
String
())
colander
.
String
())
selesai
=
colander
.
SchemaNode
(
colander
.
String
())
class
ViewPartner
(
BaseView
):
class
ViewPartner
(
BaseView
):
def
__init__
(
self
,
request
):
def
__init__
(
self
,
request
):
...
@@ -103,10 +98,25 @@ class ViewPartner(BaseView):
...
@@ -103,10 +98,25 @@ class ViewPartner(BaseView):
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
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
):
def
form_validator
(
self
,
form
,
value
):
print
(
f
"Validating form with values: {value}"
)
# Debugging
def
err_departemen
():
def
err_departemen
():
raise
colander
.
Invalid
(
form
,
'Departemen Kerja Belum Dipilih'
)
raise
colander
.
Invalid
(
form
,
'Departemen Kerja Belum Dipilih'
)
...
@@ -116,23 +126,14 @@ class ViewPartner(BaseView):
...
@@ -116,23 +126,14 @@ class ViewPartner(BaseView):
def
err_partner
():
def
err_partner
():
raise
colander
.
Invalid
(
form
,
'Partner Belum Dipilih'
)
raise
colander
.
Invalid
(
form
,
'Partner Belum Dipilih'
)
# Validasi partner_id
if
not
value
[
'partner_id'
]:
if
not
value
[
'partner_id'
]:
print
(
"Validation failed: Partner ID kosong"
)
err_partner
()
err_partner
()
# Validasi jabatan_id
if
not
value
[
'jabatan_id'
]:
if
not
value
[
'jabatan_id'
]:
print
(
"Validation failed: Jabatan kosong"
)
err_jabatan
()
err_jabatan
()
# Validasi departemen
if
not
value
[
'departemen'
]
or
value
[
'departemen'
]
==
set
():
if
not
value
[
'departemen'
]
or
value
[
'departemen'
]
==
set
():
print
(
"Validation failed: Departemen kosong"
)
err_departemen
()
err_departemen
()
def
save_request
(
self
,
values
,
row
=
None
):
def
save_request
(
self
,
values
,
row
=
None
):
print
(
f
"Saving with values: {values}"
)
# Debugging
request
=
self
.
req
request
=
self
.
req
if
'id'
in
request
.
matchdict
:
if
'id'
in
request
.
matchdict
:
values
[
'id'
]
=
request
.
matchdict
[
'id'
]
values
[
'id'
]
=
request
.
matchdict
[
'id'
]
...
@@ -141,28 +142,23 @@ class ViewPartner(BaseView):
...
@@ -141,28 +142,23 @@ class ViewPartner(BaseView):
if
'selesai'
in
values
:
if
'selesai'
in
values
:
values
[
'selesai'
]
=
date_from_str
(
values
[
'selesai'
])
if
values
[
'selesai'
]
else
None
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'
]:
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
:
else
:
values
[
'jabatan_id'
]
=
None
values
[
'jabatan_id'
]
=
None
# Pastikan partner_id ada dan valid
partner_id
=
values
.
get
(
'partner_id'
)
partner_id
=
values
.
get
(
'partner_id'
)
if
not
partner_id
:
if
not
partner_id
:
request
.
session
.
flash
(
'Partner ID wajib diisi.'
,
'error'
)
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'
]:
if
'departemen'
in
values
and
values
[
'departemen'
]:
# Jika sedang mengedit, hapus entri lama untuk partner_id dan jabatan_id ini
if
'id'
in
values
:
if
'id'
in
values
:
DBSession
.
query
(
PartnerDepartemen
)
.
filter_by
(
DBSession
.
query
(
PartnerDepartemen
)
.
filter_by
(
partner_id
=
partner_id
,
partner_id
=
partner_id
,
jabatan_id
=
values
[
'jabatan_id'
]
jabatan_id
=
values
[
'jabatan_id'
]
)
.
delete
()
)
.
delete
()
# Tambahkan entri baru untuk setiap departemen yang dipilih
for
dept_id
in
values
[
'departemen'
]:
for
dept_id
in
values
[
'departemen'
]:
new_row
=
PartnerDepartemen
(
new_row
=
PartnerDepartemen
(
partner_id
=
partner_id
,
partner_id
=
partner_id
,
...
@@ -174,37 +170,37 @@ class ViewPartner(BaseView):
...
@@ -174,37 +170,37 @@ class ViewPartner(BaseView):
DBSession
.
add
(
new_row
)
DBSession
.
add
(
new_row
)
DBSession
.
flush
()
DBSession
.
flush
()
request
.
session
.
flash
(
'Posisi Partner sudah disimpan.'
)
request
.
session
.
flash
(
'Posisi Partner sudah disimpan.'
)
return
None
return
new_row
else
:
else
:
request
.
session
.
flash
(
'Tidak ada departemen yang dipilih.'
,
'error'
)
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'
,
@view_config
(
route_name
=
'partner-departemen'
,
renderer
=
'templates/table.pt'
,
permission
=
'view'
)
permission
=
'view'
)
def
view_list
(
self
):
def
view_list
(
self
):
return
super
()
.
view_list
()
return
super
()
.
view_list
()
def
get_module_path
(
self
,
module_name
):
def
get_module_path
(
self
,
module_name
):
a
=
AssetResolver
(
module_name
)
a
=
AssetResolver
(
module_name
)
resolver
=
a
.
resolve
(
''
)
resolver
=
a
.
resolve
(
''
)
return
resolver
.
abspath
()
return
resolver
.
abspath
()
def
pdf_response
(
self
,
**
kwargs
):
def
pdf_response
(
self
,
**
kwargs
):
# print("PDF RESPONSE======================================")
from
opensipkd.base.tools.report
import
jasper_export
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
path
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
logo
=
os
.
path
.
join
(
path
,
'static'
,
'img'
,
'logo.png'
)
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'partnerdep1.jrxml'
)
parameters
=
{
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
"logo"
:
logo
"logo"
:
logo
}
}
print
(
parameters
)
filename
=
jasper_export
(
report_file
,
parameters
=
parameters
)
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
@staticmethod
def
query_register
():
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
):
def
csv_response
(
self
,
**
kwargs
):
query
=
self
.
query_register
()
query
=
self
.
query_register
()
...
@@ -212,145 +208,18 @@ class ViewPartner(BaseView):
...
@@ -212,145 +208,18 @@ class ViewPartner(BaseView):
header
=
row
.
_mapping
.
keys
()
header
=
row
.
_mapping
.
keys
()
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
rows
=
[
list
(
item
)
for
item
in
query
.
all
()]
filename
=
f
"{get_random_string(16)}.csv"
filename
=
f
"{get_random_string(16)}.csv"
value
=
{
value
=
{
'header'
:
header
,
'rows'
:
rows
}
'header'
:
header
,
'rows'
:
rows
,
}
return
csv_response
(
self
.
req
,
value
,
filename
)
return
csv_response
(
self
.
req
,
value
,
filename
)
@view_config
(
route_name
=
'partner-departemen-act'
,
renderer
=
'json'
,
@view_config
(
route_name
=
'partner-departemen-act'
,
renderer
=
'json'
,
permission
=
'view'
)
permission
=
'view'
)
def
view_act
(
self
):
def
view_act
(
self
):
# request = self.req
# Kode asli view_act tetap sama, tidak diubah untuk pertanyaan ini
# ses = request.session
return
super
()
.
view_act
()
# 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
()
def
get_values
(
self
,
row
,
istime
=
False
):
def
get_values
(
self
,
row
,
istime
=
False
):
values
=
super
()
.
get_values
(
row
,
istime
)
values
=
super
()
.
get_values
(
row
,
istime
)
values
[
'nama'
]
=
row
.
partner
.
nama
if
row
.
partner
else
''
values
[
'nama'
]
=
row
.
partner
.
nama
if
row
.
partner
else
''
values
[
'jabatan_id'
]
=
str
(
row
.
jabatan_id
)
if
row
.
jabatan_id
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
(
departemen_ids
=
DBSession
.
query
(
PartnerDepartemen
.
departemen_id
)
.
filter_by
(
partner_id
=
row
.
partner_id
,
partner_id
=
row
.
partner_id
,
jabatan_id
=
row
.
jabatan_id
jabatan_id
=
row
.
jabatan_id
...
@@ -360,38 +229,23 @@ class ViewPartner(BaseView):
...
@@ -360,38 +229,23 @@ class ViewPartner(BaseView):
values
[
'selesai'
]
=
dmy
(
row
.
selesai
)
if
row
.
selesai
else
''
values
[
'selesai'
]
=
dmy
(
row
.
selesai
)
if
row
.
selesai
else
''
return
values
return
values
@view_config
(
route_name
=
'partner-departemen-view'
,
@view_config
(
route_name
=
'partner-departemen-view'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_view
(
self
):
def
view_view
(
self
):
return
super
()
.
view_view
()
return
super
()
.
view_view
()
def
before_add
(
self
):
@view_config
(
route_name
=
'partner-departemen-add'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
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'
)
def
view_add
(
self
):
def
view_add
(
self
):
print
(
f
"POST data: {self.req.POST}"
)
# Debugging data yang dikirim dari form
return
super
()
.
view_add
()
return
super
()
.
view_add
()
@view_config
(
route_name
=
'partner-departemen-edit'
,
@view_config
(
route_name
=
'partner-departemen-edit'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_edt
(
self
):
def
view_edt
(
self
):
return
super
()
.
view_edit
()
return
super
()
.
view_edit
()
@view_config
(
route_name
=
'partner-departemen-delete'
,
@view_config
(
route_name
=
'partner-departemen-delete'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_del
(
self
):
def
view_del
(
self
):
return
super
()
.
view_delete
()
return
super
()
.
view_delete
()
@view_config
(
route_name
=
'partner-departemen-upload'
,
@view_config
(
route_name
=
'partner-departemen-upload'
,
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
renderer
=
'templates/form.pt'
,
permission
=
'partner-departemen'
)
def
view_upload
(
self
):
def
view_upload
(
self
):
self
.
upload_keys
=
[
"mulai"
]
self
.
upload_keys
=
[
"mulai"
]
return
super
()
.
view_upload
(
exts
=
(
".csv"
,
".tsv"
))
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 @
93f94fd
...
@@ -98,7 +98,6 @@ class Views(BaseView):
...
@@ -98,7 +98,6 @@ class Views(BaseView):
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
self
.
list_buttons
=
self
.
list_buttons
+
self
.
list_report
+
(
button_import
,)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
__file__
)
path
=
os
.
path
.
dirname
(
path
)
path
=
os
.
path
.
dirname
(
path
)
self
.
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'userdep1.jrxml'
)
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
)
\
...
@@ -116,14 +115,16 @@ class Views(BaseView):
...
@@ -116,14 +115,16 @@ class Views(BaseView):
def
pdf_response
(
self
,
**
kwargs
):
def
pdf_response
(
self
,
**
kwargs
):
from
opensipkd.base.tools.report
import
jasper_export
from
opensipkd.base.tools.report
import
jasper_export
logo
=
self
.
get_module_path
(
'opensipkd.base'
)
path
=
self
.
get_module_path
(
'opensipkd.base'
)
logo
=
os
.
path
.
join
(
logo
,
'static'
,
'img'
,
'logo.png'
)
logo
=
os
.
path
.
join
(
path
,
'static'
,
'img'
,
'logo.png'
)
report_file
=
os
.
path
.
join
(
path
,
'reports'
,
'userdep1.jrxml'
)
parameters
=
{
parameters
=
{
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"judul"
:
get_params
(
'company'
,
"openSIPKD"
),
"alamat_lengkap"
:
get_params
(
'address'
,
"Bekasi"
),
"logo"
:
logo
"logo"
:
logo
}
}
print
(
parameters
)
filename
=
jasper_export
(
report_file
,
parameters
=
parameters
)
filename
=
jasper_export
(
self
.
report_file
,
parameters
=
parameters
)
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
return
file_response
(
self
.
req
,
filename
=
filename
[
0
])
@staticmethod
@staticmethod
...
@@ -180,7 +181,7 @@ class Views(BaseView):
...
@@ -180,7 +181,7 @@ class Views(BaseView):
def
view_edit
(
self
):
def
view_edit
(
self
):
response
=
super
()
.
view_edit
()
response
=
super
()
.
view_edit
()
if
isinstance
(
response
,
dict
):
if
isinstance
(
response
,
dict
):
print
(
f
"Edit response: {response}"
)
#
print(f"Edit response: {response}")
if
self
.
request
.
method
==
'POST'
:
if
self
.
request
.
method
==
'POST'
:
form
=
response
.
get
(
'form'
)
form
=
response
.
get
(
'form'
)
if
form
.
validate
():
if
form
.
validate
():
...
@@ -201,14 +202,14 @@ class Views(BaseView):
...
@@ -201,14 +202,14 @@ class Views(BaseView):
return
super
(
Views
,
self
)
.
view_upload
(
exts
=
(
".csv"
,
".tsv"
))
return
super
(
Views
,
self
)
.
view_upload
(
exts
=
(
".csv"
,
".tsv"
))
def
save_request
(
self
,
values
,
row
=
None
):
def
save_request
(
self
,
values
,
row
=
None
):
print
(
f
"Values received in save_request: {values}"
)
#
print(f"Values received in save_request: {values}")
print
(
f
"Row before save: {row}"
)
#
print(f"Row before save: {row}")
# Saat edit, gunakan user_id dari row yang ada
# Saat edit, gunakan user_id dari row yang ada
user_id
=
row
.
user_id
if
row
else
values
.
get
(
"user_id"
)
user_id
=
row
.
user_id
if
row
else
values
.
get
(
"user_id"
)
if
not
user_id
:
#
if not user_id:
print
(
"No user_id found, returning None"
)
#
print("No user_id found, returning None")
return
None
#
return None
if
"departemen_id"
in
values
:
if
"departemen_id"
in
values
:
selected_departemen
=
set
(
selected_departemen
=
set
(
...
@@ -243,7 +244,7 @@ class Views(BaseView):
...
@@ -243,7 +244,7 @@ class Views(BaseView):
if
selected_list
:
if
selected_list
:
existing_row
.
departemen_id
=
dept1
existing_row
.
departemen_id
=
dept1
existing_row
.
sub_departemen
=
dept2
existing_row
.
sub_departemen
=
dept2
print
(
f
"Updated existing row: {existing_row}"
)
#
print(f"Updated existing row: {existing_row}")
row
=
existing_row
row
=
existing_row
else
:
else
:
# Buat entri baru jika belum ada
# Buat entri baru jika belum ada
...
@@ -254,19 +255,19 @@ class Views(BaseView):
...
@@ -254,19 +255,19 @@ class Views(BaseView):
sub_departemen
=
dept2
sub_departemen
=
dept2
)
)
DBSession
.
add
(
new_row
)
DBSession
.
add
(
new_row
)
print
(
f
"Created new row: {new_row}"
)
#
print(f"Created new row: {new_row}")
row
=
new_row
row
=
new_row
else
:
else
:
row
=
None
row
=
None
try
:
try
:
DBSession
.
flush
()
DBSession
.
flush
()
print
(
f
"Row after save: {row}"
)
#print(f"Row after save: {row}")raise exception
except
Exception
as
e
:
except
Exception
as
e
:
DBSession
.
rollback
()
DBSession
.
rollback
()
print
(
f
"Error during flush: {str(e)}"
)
print
(
e
)
self
.
request
.
session
.
flash
(
f
"Gagal menyimpan: {str(e)}"
,
"error"
)
self
.
request
.
session
.
flash
(
f
"Gagal menyimpan: {str(e)}"
,
"error"
)
return
Non
e
return
e
return
row
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