Tambah konfirmasi password & auto-arsip sebelum hapus nilai

Tombol "Mulai Ulang (hapus semua nilai)" di halaman Input Nilai
sebelumnya cuma dijaga confirm() browser biasa — gampang ke-klik tanpa
sadar, apalagi datanya sekarang ratusan mahasiswa per MK.

- Dialog konfirmasi kini menyebut jumlah mahasiswa yang akan hilang
- Password akun yang login harus dimasukkan ulang & diverifikasi
  server-side (auth.verifikasi_password) sebelum aksi hapus dieksekusi
- Isi nilai lama diarsipkan otomatis ke tabel nilai_arsip_hapus sebelum
  dihapus (mk_kode, tahun, data JSON, kapan, oleh siapa) — jaring
  pengaman, ikut ke-backup lewat /cadangan.db yang sudah ada; belum ada
  UI pemulihan (di luar cakupan saat ini, cukup query manual bila perlu)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Power BI Dev
2026-08-09 18:51:09 +07:00
parent efc14dc7a7
commit 6375bc88f4
3 changed files with 63 additions and 12 deletions
+10 -1
View File
@@ -1165,10 +1165,19 @@ async def simpan_nilai(request: Request, kode: str):
return _konteks_nilai(request, kode, peringatan=[
"Anda hanya diampukan sebagian kelas MK ini — menghapus seluruh nilai "
"hanya bisa dilakukan kaprodi atau dosen yang mengampu seluruh kelas."])
akun = db.pengguna_by_id(request.state.user["id"])
password = (form.get("password") or "").strip()
if not akun or not auth.verifikasi_password(password, akun["pw_hash"]):
return _konteks_nilai(request, kode, peringatan=[
"Password salah — nilai TIDAK jadi dihapus."])
lama = db.ambil_dok("nilai", kode)
if lama:
db.arsipkan_nilai_hapus(kode, db.tahun_aktif(), lama["data"], updated_by)
db.hapus_dok("nilai", kode)
return _konteks_nilai(
request, kode,
pesan="Seluruh nilai tersimpan MK ini dihapus — silakan mulai dari awal.")
pesan="Seluruh nilai tersimpan MK ini dihapus (salinan sebelumnya "
"tersimpan otomatis sebagai arsip) — silakan mulai dari awal.")
if aksi == "komponen":
kelas_dosen = _kelas_dosen(request.state.user, kode)