Commit 93f94fd7 by Hamsyah

pembaruan by hmzh

1 parent 6f40132e
...@@ -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
......
...@@ -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
......
...@@ -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
......
...@@ -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
...@@ -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 None return e
return row return row
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!