Untuk pengajar dalam mengelola classroom. Post tugas. Ambil data tugas (link Github, File lain-lain). Upload data pengguna, score & note ke spreadsheet & classroom.
🚨 Versi ini dibuat dengan asumsi Teacher mengajar 1 course dengan >1 sub course. contoh: class ppwl-a & ppwl-b.
- ✅ Kode ini cocok untuk 1 course & subcourse lebih dari 1
- 🚨 Perlu penyesuaian penambahan kode untuk course lebih dari 1
- 🚨 Perlu penyesuaian pengurangan kode jika tidak ada sub-course
setup.py # CLI App untuk menu yg jarang dipakai (setup name & Github profile in SpreadSheet)
main.py # CLI App yang punya beberapa fungsi (perlu setup config\env.py)
setup/ # fungsi yang dijalankan di awal (siapkan spreadsheet)
func/ # fitur-fitur yang diakses main.py
utils/ # fungsi tunggal untuk menjalankan perintah khusus & development testing.
data_score/ # daftar data *.txt untuk fitur scoring.py
data_tugas/ # daftar data *.json template tugas untuk fitur post_coursework.py
web/ # fungsi untuk handle data course & sheet ke/dari web quiz-code (tugas pengganti siswa)
exp/ # kode batch script untuk proses repetitif dalam menilai repo local bersamaan.
__init__.py # File penanda package (opsional di Python 3, tapi disarankan)-
credentials.json:1. buat proyek GCC, aktifkan API di SCOPES (di `cred.py`). 2. Konfigurasi OAuth Consent Screen (Layar Persetujuan) 3. Create Credentials -> pilih OAuth client ID (Desktop App) -> Download JSON (rename jadi `credentials.json`) 4. click nama Client ID, akan muncul menu 'Data Access', -> Add Scope -> manual paste-kan AUTH_SCOPES (tanpa string, pisahkan new line) -> Update -> Save -
Credential & Env:
# 1. Instalasi python -m pip install -r requirements.txt # atau pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client # 2. Run `py setup/1.list-courses.py` untuk ambil COURSE_ID classroom anda. simpan di `env.py` # 3. Sesuaikan REPO_PATH untuk clone repo local di `submission_get.py`
-
Siapkan GSheet seperti ini
- Buat tab
Nilaiberisi tab utama. - Block & Copy Student names dari Classroom masukkan ke kolom A (nama) {anchor baris}.
- Buat Codename (kolom T) singkat sesuai alphabete (untuk nama folder submisi).
- Get Email & Github (dapat run berkala tiap ada submisi baru), kode ada di
setup/.
- Buat tab
# lalu run
py main.py
# anda juga dapat pakai file `ppwl.bat`, masukkan ke folder yang diberi akses path.Deskripsi tugas dapat di format pakai tools:
Setelah buat kode tugas di data_tugas/{nama_tugas}.json, ikuti template_coursework.json. PASTIKAN di .json, due time ditulis -7 hour dari waktu sebenarnya (UTC+7). misal 23:59 (UTC+7) jadi 16:59 (UTC).
Kirimkan post lewat fitur di Main Menu.
- run
py config/list-courses.py, ambil course_id,name,course_code courses masukkan keconfig/courses.txt - masukkan course_code, spreadsheet_id, & n_students (jumlah siswa di class tersebut) ke CLASS_CONFIG di main.py
- run
py main.py <course_code>anda dapat memilih:Lihat Work-> pilih Work -> opsi:- Ambil Github -> Spreadsheet -> Local
- Assign Score & Notes -> Sheet & Classroom
Post Tugas Baru-> pilih template tugas.
Fitur untuk mengambil link repo yang dikirim di Work (tugas) yg dipilih. Sebelum memilih menu ini, siapkan dulu:
di google spreadsheet rekap:
- buat tab "{class_code}{tugas_ke}"
- masukkan nama dari classroom -> student, ke kolom Name in Classroom (urutan header:
No,Name in Classroom,Repo,Notes,ScoreCodename). Pasangkan dengan codename (nama unik Ascending untuk folder repo) nya. DataName in Classroomdi B2:B{N_STUDENT+1}, danCodenamedi F2:F{N_STUDENT+1}
di CLI main.py <code> ->
Lihat Work-> pilih Work -> opsi:
- Pilih menu Ambil Github -> Clone & Spreadsheet, masukkan nilai Tugas ke: dengan angka
tugas_kepada nama tab di spreadsheet.
Perintah akan menghasilkan:
clone.txt(Gunakan untuk run clone tiap repo submisi, dinilai di local. Selanjutnya anda dapat membuat file*-score.txt& lanjut menu assign ke Spreadsheet & Classroom)- Kolom repo di Spreadsheet akan terisi value & link nya.
Logika kode seperti ini:
- Ikuti template
{class_code}-{tugas_ke}-score.txt. - Ambil nilai minus yang ada dibawah tiap
>codename (tiap nama ditemukan, ambil score & notesnya). - Kelompokkan berdasarkan codename, masukkan ke spreadsheet & classroom (Classroom hanya dapat di assign score untuk Tugas yang menggunakan API. Lihat: Publish Tugas)
