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
Exemple #3
0
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'))
Exemple #4
0
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"
    )