Commit 8389b461 by Hamsyah

pembaruan kecamatan dan partner dep by hmzh

1 parent f49dc799
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
kode,nama,kategori,dati2_id/res_dati2.kode,status
32.07.01,Ciamis,kecamatan,ID-JB.05,1
32.07.02,Cikoneng,kecamatan,ID-JB.05,1
32.07.03,Cijeungjing,kecamatan,ID-JB.05,1
32.07.04,Sadananya,kecamatan,ID-JB.05,1
32.07.05,Cidolog,kecamatan,ID-JB.05,1
32.07.06,Cihaurbeuti,kecamatan,ID-JB.05,1
32.07.07,Panumbangan,kecamatan,ID-JB.05,1
32.07.08,Panjalu,kecamatan,ID-JB.05,1
32.07.09,Kawali,kecamatan,ID-JB.05,1
32.07.10,Panawangan,kecamatan,ID-JB.05,1
32.07.11,Cipaku,kecamatan,ID-JB.05,1
32.07.12,Jatinagara,kecamatan,ID-JB.05,1
32.07.13,Rajadesa,kecamatan,ID-JB.05,1
32.07.14,Sukadana,kecamatan,ID-JB.05,1
32.07.15,Rancah,kecamatan,ID-JB.05,1
32.07.16,Tambaksari,kecamatan,ID-JB.05,1
32.07.17,Lakbok,kecamatan,ID-JB.05,1
32.07.18,Banjarsari,kecamatan,ID-JB.05,1
32.07.19,Pamarican,kecamatan,ID-JB.05,1
32.07.29,Cimaragas,kecamatan,ID-JB.05,1
32.07.30,Cisaga,kecamatan,ID-JB.05,1
32.07.31,Sindangkasih,kecamatan,ID-JB.05,1
32.07.32,Baregbeg,kecamatan,ID-JB.05,1
32.07.33,Sukamantri,kecamatan,ID-JB.05,1
32.07.34,Lumbung,kecamatan,ID-JB.05,1
32.07.35,Purwadadi,kecamatan,ID-JB.05,1
32.07.37,Banjaranyar,kecamatan,ID-JB.05,1
\ No newline at end of file
......@@ -26,7 +26,7 @@ class AddSchema(colander.Schema):
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)
return widget.CheckboxChoiceWidget(values=choices, multiple=True) # Enable multiple selection
@colander.deferred
def jabatan_widget(node, kw):
......@@ -38,7 +38,7 @@ class AddSchema(colander.Schema):
colander.Integer(),
oid="partner_id",
widget=widget.HiddenWidget(),
title="Partner ID") # Field wajib, tanpa missing=colander.null
title="Partner ID")
nama = colander.SchemaNode(
colander.String(),
widget=nama_widget,
......@@ -50,21 +50,16 @@ class AddSchema(colander.Schema):
widget=widget.HiddenWidget(),
missing=colander.drop)
departemen = colander.SchemaNode(
colander.Set(),
colander.Set(), # Menggunakan Set untuk multiple values
widget=departemen_widget,
oid="departemen_nm",
title="Departemen *")
jabatan_id = colander.SchemaNode(
colander.Integer(),
oid="jabatan_id",
widget=widget.HiddenWidget(),
title="Jabatan",
missing=colander.drop)
jabatan = colander.SchemaNode(
colander.Integer(),
widget=jabatan_widget,
oid="jabatan_nm",
title="Jabatan *")
title="Jabatan *",
missing=colander.drop)
mulai = colander.SchemaNode(
colander.String(),
oid="mulai",
......@@ -78,9 +73,10 @@ class AddSchema(colander.Schema):
title="Selesai")
class EditSchema(AddSchema):
id = colander.SchemaNode(colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget())
id = colander.SchemaNode(
colander.String(),
missing=colander.drop,
widget=widget.HiddenWidget())
class ListSchema(colander.Schema):
id = colander.SchemaNode(colander.Integer(), title="Action")
......@@ -113,12 +109,12 @@ class ViewPartner(BaseView):
raise colander.Invalid(form, 'Partner Belum Dipilih')
# Validasi partner_id
if not value['partner_id'] or value['partner_id'] is colander.null:
if not value['partner_id']:
print("Validation failed: Partner ID kosong")
err_partner()
# Validasi jabatan
if not value['jabatan'] or value['jabatan'] == '':
# Validasi jabatan_id
if not value['jabatan_id']:
print("Validation failed: Jabatan kosong")
err_jabatan()
......@@ -133,22 +129,13 @@ class ViewPartner(BaseView):
if 'id' in request.matchdict:
values['id'] = request.matchdict['id']
if 'mulai' in values:
if values['mulai']:
values['mulai'] = date_from_str(values['mulai'])
else:
values['mulai'] = None
values['mulai'] = date_from_str(values['mulai']) if values['mulai'] else None
if 'selesai' in values:
if values['selesai']:
values['selesai'] = date_from_str(values['selesai'])
else:
values['selesai'] = None
# Simpan jabatan yang dipilih dari dropdown
if 'jabatan' in values and values['jabatan']:
values['jabatan_id'] = values['jabatan']
query_struktural = DBSession.query(Jabatan.jenis).filter(
Jabatan.id == values['jabatan_id']).scalar()
values['jabatan_id'] = query_struktural if query_struktural else values['jabatan_id']
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
else:
values['jabatan_id'] = None
......@@ -160,21 +147,23 @@ class ViewPartner(BaseView):
# 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']:
exists = DBSession.query(PartnerDepartemen).filter_by(
new_row = PartnerDepartemen(
partner_id=partner_id,
departemen_id=int(dept_id),
jabatan_id=values['jabatan_id']
).first()
if not exists:
new_row = PartnerDepartemen(
partner_id=partner_id, # Tidak lagi opsional
departemen_id=int(dept_id),
jabatan_id=values['jabatan_id'],
mulai=values['mulai'],
selesai=values['selesai']
)
DBSession.add(new_row)
jabatan_id=values['jabatan_id'],
mulai=values['mulai'],
selesai=values['selesai']
)
DBSession.add(new_row)
DBSession.flush()
request.session.flash('Posisi Partner sudah disimpan.')
return None
......@@ -182,7 +171,7 @@ class ViewPartner(BaseView):
request.session.flash('Tidak ada departemen yang dipilih.', 'error')
return None
@view_config(route_name='partner-departemen', renderer='templates/form.pt',
@view_config(route_name='partner-departemen', renderer='templates/table.pt',
permission='view')
def view_list(self):
return super().view_list()
......@@ -317,16 +306,15 @@ class ViewPartner(BaseView):
def get_values(self, row, istime=False):
values = super().get_values(row, istime)
values['nama'] = row.partner.nama if row.partner else ''
values['jabatan'] = row.jabatan.nama
values['departemen'] = row.departemen.nama
values['mulai'] = dmy(row.mulai)
values['selesai'] = dmy(row.selesai)
if not row.jabatan_id:
values['jabatan_id'] = 0
else:
jb = Jabatan.query_id(row.jabatan_id).first()
if jb:
values['struktural_nm'] = jb.nama
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
).all()
values['departemen'] = [str(dept_id[0]) for dept_id in departemen_ids] if departemen_ids else []
values['mulai'] = dmy(row.mulai) if row.mulai else ''
values['selesai'] = dmy(row.selesai) if row.selesai else ''
return values
@view_config(route_name='partner-departemen-view',
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!