Tambah peran Dosen MK/RPS+MK, komponen penilaian baku, dan bantu isi RPS
- Peran dosen dipecah jadi dosen_mk (nilai & portofolio saja, RPS baca-only) dan dosen_rps_mk (bisa edit RPS juga); migrasi otomatis dari skema lama. - Rekap Bobot Penilaian RPS pakai 6 komponen teknik asesmen baku prodi; total wajib tepat 100%, komponen individual boleh dikosongkan. - Dropdown & daftar Sub-CPMK tak lagi terpotong teksnya. - Bagian F (Rencana Mingguan): tombol "Isi Otomatis" per baris (termasuk usulan Bobot) yang muncul setelah Sub-CPMK dipilih, plus panel contoh teks bantu per kolom. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -105,6 +105,39 @@ def get_conn() -> sqlite3.Connection:
|
||||
return conn
|
||||
|
||||
|
||||
def _migrasi_role_pengguna(conn: sqlite3.Connection) -> None:
|
||||
"""Skema lama hanya kenal role 'dosen'; pecah jadi dosen_mk/dosen_rps_mk.
|
||||
|
||||
Akun 'dosen' lama dipetakan ke 'dosen_rps_mk' agar hak akses (termasuk
|
||||
edit RPS) yang sudah mereka miliki tidak berkurang oleh migrasi ini.
|
||||
"""
|
||||
row = conn.execute(
|
||||
"SELECT sql FROM sqlite_master WHERE type='table' AND name='pengguna'"
|
||||
).fetchone()
|
||||
if not row or "dosen_rps_mk" in row["sql"]:
|
||||
return
|
||||
conn.execute("ALTER TABLE pengguna RENAME TO pengguna_lama")
|
||||
conn.execute(
|
||||
"""CREATE TABLE pengguna (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username TEXT NOT NULL UNIQUE,
|
||||
nama TEXT NOT NULL,
|
||||
role TEXT NOT NULL
|
||||
CHECK (role IN ('kaprodi','dosen_mk','dosen_rps_mk')),
|
||||
pw_hash TEXT NOT NULL,
|
||||
dibuat TEXT NOT NULL
|
||||
)"""
|
||||
)
|
||||
conn.execute(
|
||||
"""INSERT INTO pengguna (id, username, nama, role, pw_hash, dibuat)
|
||||
SELECT id, username, nama,
|
||||
CASE WHEN role='dosen' THEN 'dosen_rps_mk' ELSE role END,
|
||||
pw_hash, dibuat
|
||||
FROM pengguna_lama"""
|
||||
)
|
||||
conn.execute("DROP TABLE pengguna_lama")
|
||||
|
||||
|
||||
def init_db() -> None:
|
||||
with get_conn() as conn:
|
||||
for tabel in ("rps", "portofolio", "nilai"):
|
||||
@@ -141,11 +174,13 @@ def init_db() -> None:
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username TEXT NOT NULL UNIQUE,
|
||||
nama TEXT NOT NULL,
|
||||
role TEXT NOT NULL CHECK (role IN ('kaprodi','dosen')),
|
||||
role TEXT NOT NULL
|
||||
CHECK (role IN ('kaprodi','dosen_mk','dosen_rps_mk')),
|
||||
pw_hash TEXT NOT NULL,
|
||||
dibuat TEXT NOT NULL
|
||||
)"""
|
||||
)
|
||||
_migrasi_role_pengguna(conn)
|
||||
conn.execute(
|
||||
"""CREATE TABLE IF NOT EXISTS sesi (
|
||||
token TEXT PRIMARY KEY,
|
||||
|
||||
Reference in New Issue
Block a user