def makeListDosenAfterApprove(jadwalidlist): sublistdata = makeSublistJadwalIDandDosenID(jadwalidlist) datagrouping = groupingDataBySecondElement(sublistdata) msgreply = '' for dosenid in datagrouping: namadosen = kelas.getNamaDosen(dosenid) datagroup = datagrouping[dosenid] msgreply += f'\n\nNama Dosen: {namadosen}' for jadwal in datagroup: matkuldetails = kelas.getMkDetails(jadwal[0]) namamatkul = matkuldetails[2] namakelas = kelas.toKelas(matkuldetails[-1]) msgreply += f'\n{jadwal[0]} | {namamatkul} | {namakelas}' return msgreply
def jadwalKuliah(hari, num): kelas.dbConnect() db = kelas.dbConnectSiap() listMK = 'Kode Dosen | Jadwal ID | Mata Kuliah | Kelas | Hari | Jam Mulai | Jam Selesai | Ruangan\n ' sql = "select DosenID, JadwalID, Nama, NamaKelas, HariID, JamMulai, JamSelesai, RuangID from simak_trn_jadwal where DosenID = '{0}' and TahunID = '".format( kelas.getKodeDosen( num)) + config.siap_tahun_id + "' and HariID = '{0}'".format(hari) with db: cur = db.cursor() cur.execute(sql) rows = cur.fetchall() for row in rows: listMK = listMK + str(row[0]) + ' | ' + str( row[1]) + ' | ' + str(row[2]) + ' | ' + kelas.toKelas( str(row[3])) + ' | ' + kelas.toHari(str( row[4])) + ' | ' + str(row[5]) + ' | ' + str( row[6]) + ' | ' + str(row[7]) + ' \n ' return listMK
def makePDFandSend(num): checkDir() lecturercode = kelas.getKodeDosen(num) lecturername = kelas.getNamaDosen(lecturercode) dosenHomeBase = getDosenHomebase(num) checkDirQrcode() # generate dosen barcode link = makeLinkVerifiy(lecturercode) makeQrcodeLinkVerifySign(link, 'dosen', lecturercode) # generate kaprodi barcode kaprodinipycode = getNipyKaProdi(dosenHomeBase) kaprodiDosenID = getDosenIDfromNIPY(kaprodinipycode) link = makeLinkVerifiy(kaprodiDosenID) makeQrcodeLinkVerifySign(link, 'kaprodi', lecturercode) # generate deputi barcode deputinipycode = getNipyDeputi(9) deputiDosenID = getDosenIDfromNIPY(deputinipycode) link = makeLinkVerifiy(deputiDosenID) makeQrcodeLinkVerifySign(link, 'deputi', lecturercode) pertemuankurang = [] mkkodes = getMkKode(lecturercode) for mkkode in mkkodes: jadwalids = getJadwalID(mkkode[0], lecturercode) try: pdf = makePDFHeader() for jadwalid in jadwalids: print(jadwalid) matkuldetailsfix = kelas.getMkDetails(jadwalid[0]) if getRencanaKehadiran(jadwalid[0]) == 0: print('rencana kehadiran 0') elif getProgramID(jadwalid[0]) == '.KER.' and getKehadiran( jadwalid[0]) < getRencanaKehadiran(jadwalid[0]): print( 'program kerja sama dan jumlah kehadiran kurang dari rencana kehadiran' ) else: matkuldetails = kelas.getMkDetails(jadwalid[0]) datamatkulbap = getBKDMatkul(jadwalid[0]) semester = countSemester(jadwalid[0]) sks = getSks(jadwalid[0]) nama_kelas = kelas.toKelas(matkuldetails[6]) kode_matkul = matkuldetails[1] nama_matkul = matkuldetails[2] datenow = datetime.date( datetime.now()).strftime('%d-%m-%Y') tanggalbap = datenow.split('-')[0] bulanbap = datenow.split('-')[1] tahunbap = datenow.split('-')[2] kode_nomor = f'ITeung/{tanggalbap}/{bulanbap}/{tahunbap}' tanggalpdfbap = f'{tanggalbap} {bulanSwitcher(bulanbap)} {tahunbap}' datafixbap = [] datawkwkbap = [ 'Pertemuan', 'Tanggal', 'Materi Perkuliahan', 'Jam Mulai', 'Jam Selesai' ] datafixbap.append(datawkwkbap) for i in datamatkulbap: matkuldatalist = [] matkuldatalist.append(i[0]) matkuldatalist.append(i[1].strftime('%d-%m-%Y')) matkuldatalist.append(i[2]) matkuldatalist.append(str(i[3])) matkuldatalist.append(str(i[4])) datafixbap.append(matkuldatalist) makePDFBAP(pdf, datafixbap, kode_nomor, tanggalpdfbap, kode_matkul, nama_matkul, nama_kelas, semester, sks) studentid, studentname = getandsetStudentIDandStudentNAME( jadwalid[0]) presensidosens1 = getPresensiDosen(jadwalid[0], 0, 8) presensidosens2 = getPresensiDosen(jadwalid[0], 7, 15) for i in range(2): if i == 0: pertemuan = countPertemuan(presensidosens1) pdfpertemuan = ['1', '2', '3', '4', '5', '6', '7'] else: pertemuan = countPertemuan(presensidosens2) pdfpertemuan = [ '8', '9', '10', '11', '12', '13', '14' ] datas = list( zip(pertemuan[0], pertemuan[1], pertemuan[2], pertemuan[3], pertemuan[4], pertemuan[5], pertemuan[6])) total = countTotal(datas) datas = list( zip(studentid, studentname, pertemuan[0], pertemuan[1], pertemuan[2], pertemuan[3], pertemuan[4], pertemuan[5], pertemuan[6])) number = countNumber(studentid) datapdf = list( zip(number, studentid, studentname, pertemuan[0], pertemuan[1], pertemuan[2], pertemuan[3], pertemuan[4], pertemuan[5], pertemuan[6], total)) tanggal = tanggalBKDPresensi( getTanggalFromPresensiDosen(jadwalid[0])) datapdf.append(tanggal) statusapprove = cekStatusApproveBAP(jadwalid[0]) makePDFInner(datapdf, matkuldetails, lecturername, pdf, pdfpertemuan, lecturercode, statusapprove) matkuldetailsfix = matkuldetails makePDFFooter(matkuldetailsfix, lecturercode, pdf) except Exception as e: print(str(e)) print(f'pertemuan kurang dari {config.kehadiran}') pertemuankurang.append(jadwalid[0]) cekkurangmateri = cekKurangMateri(cekMateriByGrouping(lecturercode)) cekkurangapproval = cekKurangApproval( cekApprovalBAPByGrouping(lecturercode)) if len(pertemuankurang) > 0 or cekkurangmateri[ 0] == False or cekkurangapproval[0] == False: msgkurang = '' if len(pertemuankurang) > 0: msgkurang += f'hai haiii, kamu yang request BAP yaaa?{config.whatsapp_api_lineBreak}wahhh ada yang kurang nih pertemuannya ini Jadwal ID nya yaaa:' for i in pertemuankurang: kelasdetails = kelas.getMkDetails(i) msgkurang += f'{config.whatsapp_api_lineBreak}{i} | {kelasdetails[2]} | {kelas.toKelas(kelasdetails[-1])}' if cekkurangmateri[0] == False: kurangmateri = '' for i in cekkurangmateri[1]: kelasdetails = kelas.getMkDetails(i[0]) kurangmateri += f'{config.whatsapp_api_lineBreak}{i[0]} | {kelasdetails[2]} | {kelas.toKelas(kelasdetails[-1])}' msgkurang += f'{config.whatsapp_api_lineBreak}{config.whatsapp_api_lineBreak}aduhhhh ternyata ada yang kurang nih ketika kamu request BAP, matkul dengan Jadwal ID:{kurangmateri}{config.whatsapp_api_lineBreak}materinya kurang nihhhhh, tolong lengkapi lagiii yaaa caranya ketik ini *iteung panduan dosen kelas online* dan baca panduan nomor 13 dan 14' if cekkurangapproval[0] == False: kurangapprove = '' for i in cekkurangapproval[1]: siapayangkurang = '' kelasdetails = kelas.getMkDetails(i[0]) if i[1] == False: siapayangkurang += ' | KAPRODI' if i[2] == False: siapayangkurang += ' | DEPUTI AKADEMIK' kurangapprove += f'{config.whatsapp_api_lineBreak}{i[0]} | {kelasdetails[2]} | {kelas.toKelas(kelasdetails[-1])} {siapayangkurang}' msgkurang += f'{config.whatsapp_api_lineBreak}{config.whatsapp_api_lineBreak}wuowwww ada yang kurang nih ketika kamu request BAP, status approval nya masih belum di ACC nih dengan Jadwal ID:{kurangapprove}{config.whatsapp_api_lineBreak}' wa.setOutbox(numbers.normalize(num), msgkurang) else: mail( getLecturerMail(lecturercode), f'Halooooo, {config.bot_name} ngirim file nich....', f'ini ya file Absensi BKD yang Bapak/Ibu minta silahkan di cek... ehee....', getFilePath(getLecturerMail(lecturercode), 'bkd'))
def makePDFInner(datalist, matkuldetails, lecturername, pdf, pdfpertemuan, lecturerid, statusapprove): pdf.add_page() pdf.set_font('Times', '', 14.0) epw = pdf.w - 2 * pdf.l_margin col_width = epw / 6 prodi = kelas.switcherJurusan(matkuldetails[0]) kaprodi = getKaProdi(matkuldetails[0].split('.')[1]) deputiakademik = getDeputiAkademik() kodenmatkul = matkuldetails[1] + " / " + matkuldetails[2] waktu = str(matkuldetails[3])[:-3] + " - " + str(matkuldetails[4])[:-3] ruang = matkuldetails[5] kelasid = kelas.toKelas(matkuldetails[6]) prodiqrcode = 'bkdqrcode/whiteimage.png' deputiqrcode = 'bkdqrcode/whiteimage.png' if statusapprove[0] == 'true': prodiqrcode = f"bkdqrcode/kaprodiqrcode{lecturerid}.png" if statusapprove[1] == 'true': deputiqrcode = f"bkdqrcode/deputiqrcode{lecturerid}.png" data = [('No.', 'NPM', 'Nama', pdfpertemuan[0], pdfpertemuan[1], pdfpertemuan[2], pdfpertemuan[3], pdfpertemuan[4], pdfpertemuan[5], pdfpertemuan[6], 'Total')] for i in datalist: data.append(i) header_data = [['Program Studi', ':', prodi, 'Jadwal', ': ', waktu], [ 'Kode / Mata Kuliah', ': ', kodenmatkul, 'Ruang', ': ', ruang ], ['Pengajar', ': ', lecturername, 'Kelas', ': ', kelasid]] footer_data = [[ 'Disahkan Tanggal: {sah}'.format(sah=sahTanggal()), ], [[ 'Pengajar', f"bkdqrcode/dosenqrcode{lecturerid}.png", lecturername ], ['Ketua Prodi', prodiqrcode, kaprodi], ['Deputi Akademik', deputiqrcode, deputiakademik]]] th = pdf.font_size # header data for row in header_data: for i, datum in enumerate(row): pdf.set_font('Times', '', 10.0) # columns if i == 0: col_width = epw / 6 elif i == 1 or i == 4: col_width = epw / 25 elif i == 2: col_width = epw / 1.95 elif i == 3: col_width = epw / 9 elif i == 5: col_width = epw / 8 # condition columns if datum[:2].lower() == 'd4' or datum[:2].lower() == 'd3': pdf.set_font('Times', 'B', 10.0) elif 'program studi' == datum.lower(): pdf.set_font('Times', 'B', 10.0) elif datum == ':' and 'program studi' == row[0].lower(): pdf.set_font('Times', 'B', 10.0) pdf.cell(col_width, th, str(datum), border=0) pdf.ln(th) pdf.ln(th) # inner data no_width = epw / 25 npm_width = epw / 12 nama_width = epw / 2.65 pertemuan_width = epw / 16 total_width = epw / 16 for i, row in enumerate(data): # last row if i == len(data) - 1: if pdfpertemuan[0] == '1': startpertemuan = 1 endpertemuan = 7 else: startpertemuan = 8 endpertemuan = 14 for j, datum in enumerate(row): if j == 0: col_width = no_width + npm_width + nama_width pdf.cell(col_width, th, str(datum), border=1, align='R') # tanggal elif j in range(startpertemuan, endpertemuan): col_width = pertemuan_width pdf.cell(col_width, th, str(datum), border=1) # total elif j == endpertemuan: col_width = total_width pdf.cell(col_width, th, str(datum), border=1) # not last row else: for j, datum in enumerate(row): # no if j == 0: col_width = no_width # npm elif j == 1: col_width = npm_width # nama elif j == 2: col_width = nama_width # pertemuan elif j in range(3, 10): col_width = pertemuan_width # total elif j == 10: col_width = total_width if i == 0: pdf.set_font('Times', 'B', 10.0) pdf.cell(col_width, th, str(datum), border=1, align='C') else: pdf.set_font('Times', '', 10.0) pdf.cell(col_width, th, str(datum), border=1) pdf.ln(th) # pdf.cell(10, th, "Keterangan:") # pdf.ln(th) # pdf.cell(10, th, "- Hadir (v)") # pdf.ln(th) # pdf.cell(10, th, "- Tidak Hadir (-)") # pdf.ln(th) pdf.ln(th) # footer for i, row in enumerate(footer_data): x = 0 y = 0 for j, datum in enumerate(row): if i == 0: col_width = (epw / 6) + (epw / 25) + (epw / 1.95) + ( epw / 8) + (epw / 9) pdf.set_font('Times', '', 10.0) pdf.cell(col_width, th, str(datum)) # pdf.ln(th) else: col_width = ((epw / 6) + (epw / 25 * 2) + (epw / 1.94) + (epw / 8) + (epw / 9)) / 3 x = pdf.get_x() y = pdf.get_y() pdf.set_font('Times', '', 10.0) # hapus kalo mau samain lebar kolom ttdnya if j == 2: col_width = col_width - 0.5 img_x = x + (col_width / 8.5) else: col_width = col_width + 0.259 img_x = x + (col_width / 4.5) ### for h, wkwk in enumerate(datum): pdf.set_x(x) if h == 1: pdf.image(wkwk, x=img_x, w=1.5) else: pdf.cell(col_width, th, wkwk, align='C') pdf.ln(th) pdf.set_xy(x + col_width, y) pdf.ln(th) pdf.ln(th) pdf.ln(th) pdf.ln(th) pdf.ln(th) pdf.ln(th) pdf.ln(th) pdf.ln(th) pdf.ln(th) pdf.ln(th) pdf.ln(th) # pdf.ln(th) # pdf.ln(th) pdf.cell( 40, th, "Dokumen ini telah ditandatangani secara elektronik dan diterbitkan oleh ITeung (IT Service Utility Integrated) System" )