Commit 8389b461 by Hamsyah

pembaruan kecamatan dan partner dep by hmzh

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