From 4e4160f9f1360f3036bd4de8ba7ff33dadcd85bd Mon Sep 17 00:00:00 2001 From: Raihan Ariq <202310715297@mhs.ubharajaya.ac.id> Date: Wed, 14 Jan 2026 22:37:24 +0700 Subject: [PATCH] backend troubleshooting --- backend/app.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/backend/app.py b/backend/app.py index c58f1bb..b695581 100644 --- a/backend/app.py +++ b/backend/app.py @@ -299,7 +299,6 @@ def submit_absensi(): def get_jadwal_today(): try: # 1. TRIGGER AUTO ALFA - # Jalankan pengecekan otomatis SEBELUM mengambil data jadwal jalankan_auto_alfa() # 2. Ambil Data Jadwal @@ -319,11 +318,17 @@ def get_jadwal_today(): """, (hari_ini, mhs['jurusan'], mhs['semester'])) jadwal = cur.fetchall() + # === FIX ERROR TIMEDELTA DISINI === for j in jadwal: - if isinstance(j['jam_mulai'], timedelta): j['jam_mulai'] = str(j['jam_mulai']) - if isinstance(j['jam_selesai'], timedelta): j['jam_selesai'] = str(j['jam_selesai']) + # Ubah jam_mulai (timedelta) ke string "HH:MM:SS" + if isinstance(j.get('jam_mulai'), timedelta): + j['jam_mulai'] = str(j['jam_mulai']) - # Ambil Status Absensi (HADIR / TIDAK HADIR / SAKIT / IZIN) + # Ubah jam_selesai (timedelta) ke string "HH:MM:SS" + if isinstance(j.get('jam_selesai'), timedelta): + j['jam_selesai'] = str(j['jam_selesai']) + + # Cek Status Absensi cur.execute(""" SELECT status FROM absensi WHERE id_mahasiswa=%s AND id_jadwal=%s AND DATE(timestamp)=CURDATE() @@ -341,24 +346,32 @@ def get_jadwal_today(): cur.close(); conn.close() return jsonify({'data': jadwal, 'hari': hari_ini}) - except Exception as e: return jsonify({'error': str(e)}), 500 + except Exception as e: + print(f"Error Jadwal: {e}") # Print error di terminal agar jelas + return jsonify({'error': str(e)}), 500 @app.route('/api/absensi/history', methods=['GET']) @token_required def get_history(): connection = get_db_connection() cursor = connection.cursor(dictionary=True) - # Join jadwal untuk ambil jam + cursor.execute(""" SELECT a.*, j.jam_mulai, j.jam_selesai FROM absensi a LEFT JOIN jadwal_kelas j ON a.id_jadwal = j.id_jadwal WHERE a.id_mahasiswa = %s ORDER BY a.timestamp DESC """, (request.user_data['id_mahasiswa'],)) + history = cursor.fetchall() + + # === FIX ERROR TIMEDELTA DISINI === for item in history: - if item['jam_mulai']: item['jam_mulai'] = str(item['jam_mulai']) - if item['jam_selesai']: item['jam_selesai'] = str(item['jam_selesai']) + if isinstance(item.get('jam_mulai'), timedelta): + item['jam_mulai'] = str(item['jam_mulai']) + if isinstance(item.get('jam_selesai'), timedelta): + item['jam_selesai'] = str(item['jam_selesai']) + cursor.close(); connection.close() return jsonify({'data': history}), 200