Пример #1
0
def cekNPM(msgs):
    for i in msgs:
        if kelas.getStudentNameOnly(i) != None:
            if kelas.getStudentNameOnly(i):
                return i, True
        else:
            continue
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wmsg = wmsg.replace('#BOTNAME#', config.bot_name)
    wa.typeAndSendMessage(driver, wmsg)
    num = numbers.normalize(data[0])
    msg = message.normalize(data[3])
    npm = msg.split(' ')[-1]
    kodedosen = kelas.getKodeDosen(num)
    if npm == "all":
        msgreply = 'ok sudah di approve semua berkas KAMBING-nya sama #BOTNAME# yyyyaaa'
        sudah, siap, belum = bimbinganCekApprovalBimbingan(kodedosen)
        if siap == []:
            msgreply = 'yah datanya belum ada lagi nih yang siap untuk di approve, coba deh cek dengan cara ketik #BOTNAME# cek approval kambing'
        else:
            for j in siap:
                pembimbing_ke = pembimbingPositionAs(
                    getDataPembimbing(j, kodedosen), kodedosen)
                setSingleApprovalBimbingan(j, kodedosen, pembimbing_ke, 'true')
                nama_mahasiswa = kelas.getStudentNameOnly(j)
                msgreply += f'\n\nNPM: {j}\nNama: {nama_mahasiswa}'
    else:
        data = getDataPembimbing(npm, kodedosen)
        if data == None:
            msgreply = f'npm {npm} tidak ditemukan didata bimbingan Bapak/Ibu dosen'
        else:
            pembimbing_ke = pembimbingPositionAs(data, kodedosen)
            setSingleApprovalBimbingan(npm, kodedosen, pembimbing_ke, 'true')
            nama_mahasiswa = kelas.getStudentNameOnly(npm)
            msgreply = 'oke sudah #BOTNAME# approve untuk KAMBING'
            msgreply += f'\n\nNPM: {npm}\nNama: {nama_mahasiswa}'
    return msgreply
Пример #3
0
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    studentid = kelas.getNpmandNameMahasiswa(data[0])[0]
    databimbingan = bimbingan_dosen.getDataBimbingan(studentid)
    if databimbingan == ():
        msgreply = 'mohon maaf data tidak dapat ditemukan...'
    else:
        msgreply = 'ini yaaa data bimbingannya ....'
        for i in databimbingan:
            nama = kelas.getStudentNameOnly(studentid)
            topik = i[3].split(';')
            target_selesai = topik[0]
            target_selanjutnya = topik[1]
            datalog = i[7]
            datalog = datalog.split(';')
            namadosen = kelas.getNamaDosen(i[5])
            msgreply += '\n\nNama: {nama}\nNPM: {studentid}\nTipe: {tipe}\nPertemuan: {pertemuanke}\nSudah Dikerjakan: {targetselesai}\nPekerjaan Selanjutnya: {targetselanjutnya}\nNilai: {nilai}\nPenilai: {penilai} / {namadosen}\nJumlah Percakapan: {log}'.format(
                nama=nama,
                studentid=i[0],
                tipe=i[1],
                pertemuanke=i[2],
                targetselesai=target_selesai,
                targetselanjutnya=target_selanjutnya,
                nilai=i[4],
                penilai=i[5],
                log=str(len(datalog)),
                namadosen=namadosen)
    return msgreply
Пример #4
0
def getandsetStudentIDandStudentNAME(jadwalid):
    studentid = []
    studentname = []
    jadwalserial = kelas.getJadwalSerial(jadwalid=jadwalid)
    if jadwalserial == '0':
        jadwalid = jadwalid
    else:
        jadwalid = jadwalserial
    studentlists = getListStudent(jadwalid)
    for studentlist in studentlists:
        studentid.append(studentlist[-1])
        studentname.append(kelas.getStudentNameOnly(studentlist[-1]))
    return studentid, studentname
Пример #5
0
def verifyDigitalSign(resultpasscode):
    npm_koor_pleton = resultpasscode.split(';')[1]
    tglttd = resultpasscode.split(';')[2]
    blnttd = resultpasscode.split(';')[3]
    thnttd = resultpasscode.split(';')[4]
    jamttd = resultpasscode.split(';')[5]
    mntttd = resultpasscode.split(';')[6]
    dtkttd = resultpasscode.split(';')[7]
    jnsdkm = resultpasscode.split(';')[8]
    data_koor_pleton = kelas.getDataMahasiswa(npm_koor_pleton)
    penerbitantandatangan = f'{jamttd}:{mntttd}:{dtkttd} {tglttd} {bkd.bulanSwitcher(blnttd)} {thnttd}'
    nama_koor_pleton = kelas.getStudentNameOnly(npm_koor_pleton)
    msgreply = f'Ini yaaa data yang Akang/Teteh minta\n\nNPM: {npm_koor_pleton}\nNama Mahasiswa: {nama_koor_pleton}\nHandphone: {data_koor_pleton[2]}\nE-mail: {data_koor_pleton[3]}\n\nJenis Dokumen: {jnsdkm}\nPenerbitan Tanda Tangan: {penerbitantandatangan}'
    return msgreply
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    num=data[0]
    msg=data[3]
    msg=message.normalize(msg)
    npm=[]
    kodedosen=kelas.getKodeDosen(num)
    tipe_bimbingan=cekTipeBimbingan(msg)
    if tipe_bimbingan:
        for i in getMahasiswaBimbingan(kelas.getTahunID(), tipe_bimbingan):
            if i[1]==kodedosen or i[2]==kodedosen:
                npm.append(i[0])
        try:
            datefromdatabasehomebase=bimbingan_dosen.getStartDate(num, tipe_bimbingan)
            startdate = datetime.date(datefromdatabasehomebase)
            if 'pertemuan' in msg:
                pertemuan=msg.split(' pertemuan ')[1]
            else:
                pertemuan, datemulai, dateakhir=bimbingan_dosen.countPertemuan(startdate)
            try:
                pertemuan=int(pertemuan)
                msgreply=f'Nama Dosen: {kelas.getNamaDosen(kodedosen)}\n' \
                         f'Prodi: {pertemuan_bimbingan.getHomebase(num)}\n' \
                         f'Pertemuan: {pertemuan}\n\n' \
                         f'NPM | Nama | Status Bimbingan\n\n'
                for i in npm:
                    cek=cek_bimbingan(i, kodedosen, pertemuan, tipe_bimbingan)
                    namamahasiswa=kelas.getStudentNameOnly(i)
                    if cek == None:
                        msgreply+=f'*{i}* | {namamahasiswa} | *_BELUM BIMBINGAN_*\n'
                    else:
                        msgreply+=f'*{i}* | {namamahasiswa} | *_SUDAH BIMBINGAN_*\n'
            except Exception as e:
                msgreply=f'wahhh salah di pertemuan nih bosqqqqqqqqqqqq coba pertemuannya make angka yak jangan make hurup....'
        except:
            msgreply='ihhhhh belum diset nih tanggal awal bimbingannya coba deh Bapak/Ibu dosen komunikasi ya sama KAPRODI untuk set tanggal mulai bimbingannnya, tutorial bisa dibaca di panduan iteung yaaa yang bagian *kaprodi* hatur tengkyuuu....'
    else:
        msgreply='eh eh eh mana nihhh tipe bimbingannya harus dimasukin ke keyword yaaaa tipe bimbingannya cek di panduan mahasiswa bimbingan yaaa...'
    return msgreply
Пример #7
0
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    num = data[0]
    msg = data[3]
    msg = message.normalize(msg)
    npm = []
    kodedosen = kelas.getKodeDosen(num)
    for i in getMahasiswaBimbingan(kelas.getTahunID()):
        if i[1] == kodedosen or i[2] == kodedosen:
            npm.append(i[0])
    try:
        datefromdatabasehomebase = bimbingan_dosen.getStartDate(num)
        startdate = datetime.date(datefromdatabasehomebase)
        if 'pertemuan' in msg:
            pertemuan = msg.split(' pertemuan ')[1]
        else:
            pertemuan, datemulai, dateakhir = bimbingan_dosen.countPertemuan(
                startdate)
        try:
            pertemuan = int(pertemuan)
            msgreply = 'Nama Dosen: {lecturername}\nProdi: {prodi}\nPertemuan: {pertemuan}'.format(
                lecturername=kelas.getNamaDosen(kodedosen),
                prodi=pertemuan_bimbingan.getHomebase(num),
                pertemuan=str(
                    pertemuan)) + '\n\nNPM | Nama | Status Bimbingan\n\n'
            for i in npm:
                cek = cek_bimbingan(i, kodedosen, pertemuan)
                namamahasiswa = kelas.getStudentNameOnly(i)
                if cek == None:
                    msgreply += '*' + i + '*' + ' | ' + namamahasiswa + ' | ' + '*_BELUM BIMBINGAN_*' + '\n'
                else:
                    msgreply += '*' + i + '*' + ' | ' + namamahasiswa + ' | ' + '*_SUDAH BIMBINGAN_*' + '\n'
        except:
            msgreply = 'wahhh salah di pertemuan nih bosqqqqqqqqqqqq coba pertemuannya make angka yak jangan make hurup....'
    except:
        msgreply = 'ihhhhh belum diset nih tanggal awal bimbingannya coba deh Bapak/Ibu dosen komunikasi ya sama KAPRODI untuk set tanggal mulai bimbingannnya, tutorial bisa dibaca di panduan iteung yaaa yang bagian *kaprodi* hatur tengkyuuu....'
    return msgreply
Пример #8
0
def kelasMulai(data):
    msg = data[3]
    msg = message.normalize(msg)
    if kelas.cekSiap():
        grp = data[1]
        num = data[0]
        if isJadwalID(kelas.getKodeDosen(num), grp.split('-')[0]):
            try:
                rencana_kehadiran = kelas.rencana_kehadiran(grp.split('-')[0])
                kehadiran = kelas.getKehadiran(grp.split('-')[0])
                if (kehadiran != rencana_kehadiran and
                        kehadiran < rencana_kehadiran) or (kelas.isSudahKelas(
                            jadwalid=grp.split('-')[0],
                            lecturercode=kelas.getKodeDosen(num=num))):
                    # if kelas.is_time_to_attendant(grp.split('-')[0]):
                    if kelas.isMatkul(grp.split('-')[0]):
                        jadwalid = grp.split('-')[0]
                        jadwalserial = kelas.getJadwalSerial(jadwalid=jadwalid)
                        if jadwalserial == '0':
                            jadwalid = jadwalid
                        else:
                            jadwalid = jadwalserial
                        abc = 1
                        listStudent = '\n\nBerikut Peserta Absensinya:\n'
                        for i in kelas.pesertaAbsensi(jadwalid=jadwalid):
                            npm = i[-1]
                            nama = kelas.getStudentNameOnly(npm)
                            listStudent += f'{abc}. {npm} {nama} {kelas.getStudentPhoneNumberFromNPM(npm)} {kelas.getStudentEmail(npm)}\n'
                            abc += 1
                        coursename = kelas.getDataMatkul(grp.split('-')[0])[1]
                        messages = reply.getWaitingMessage(
                            os.path.basename(__file__).split('.')[0])
                        messages = messages.replace('#MATKUL#', coursename)
                        messages = messages.replace('#BOTNAME#',
                                                    config.bot_name)
                        if 'luring' in msg:
                            link = '\n\nLink Kelas Luring (offline):\n' + config.link_kelas_luring + grp.replace(
                                ' ', '%20')
                            msgreply = messages + link + listStudent
                        else:
                            msgreply = messages + listStudent
                    else:
                        listMK = kelas.getListMK(kelas.getKodeDosen(data[0]))
                        guide = 'Yahh... Nama grupnya belum JADWALID-KELAS-NAMA. yuk ubah #BOTNAME# kasih contoh 17312-A-KECERDASAN BUAT klo lupa kode mata kuliah #BOTNAME# kasih ya ini daftarnya : \n'
                        msgreply = guide + listMK
                    # else:
                    #     data = kelas.jam_mulai_jam_selesai(grp.split('-')[0])
                    #     return f'iwiwiwiwiwiwwwwwwww jam sekarang diluar batas waktu kelas nihhh mohon untuk memulai kelas pada jamnya yaaa... \n\nMatakuliah: {data["Nama"]}\nJam Mulai: {data["JamMulai"]}\nJam Selesai: {data["JamSelesai"]}'
                elif kehadiran == '':
                    msgreply = 'yahhhhh kehadirannya ngga #BOTNAME# temuin coba di cek lagi jadwal idnya yaaa....'
                else:
                    jadwalid = grp.split('-')[0]
                    datamatkul = kelas.getMatakuliahInfowithJadwalID(jadwalid)
                    if datamatkul == None:
                        msgreply = "mohon maaf JadwalID salah bisa untuk dicek kembali...."
                    else:
                        datamatkul = kelas.getMatakuliahInfowithJadwalID(
                            jadwalid)
                        prodi = kelas.switcherJurusan(datamatkul[5])
                        mkkode = datamatkul[11]
                        namamatkul = datamatkul[12]
                        hari = kelas.toHari(str(datamatkul[13]))
                        jammulai = datamatkul[14]
                        jamselesai = datamatkul[15]
                        dosen = kelas.getNamaDosen(datamatkul[21])
                        rencanakehadiran = datamatkul[22]
                        kehadiran = datamatkul[23]
                        msgreply = 'Mohon maaf Untuk kuliah daring ini sudah memenuhi kuota pertemuan pada jadwal kali ini...\n\n'
                        msgreply += f"Jadwal ID: {jadwalid}\nProgram Studi: {prodi}\nKode Matakuliah: {mkkode}\nNama Matakuliah: {namamatkul}\nHari: {hari}\nJam Mulai: {jammulai}\nJam Selesai: {jamselesai}\nDosen/Kode Dosen: {dosen}/{datamatkul[21]}\nRencana Kehadiran: {rencanakehadiran}\nKehadiran: {kehadiran}"
            except Exception as e:
                print(str(e))
                listMK = kelas.getListMK(kelas.getKodeDosen(data[0]))
                guide = 'Di setting dulu ya nama groupnya jadi JADWALID-KELAS-NAMA contoh : 17312-A-KECERDASAN BUAT, ini daftarnya : \n'
                msgreply = guide + listMK
        else:
            listMK = kelas.getListMK(kelas.getKodeDosen(data[0]))
            guide = 'aduwww waduwduwwww ini bukan Jadwal ID Bapak/Ibu dosen nihhhh, yang bener yang dibawah ini yaaa.... : \n'
            msgreply = guide + listMK
    else:
        msgreply = 'Mohon maaf server Akademik SIAP sedang dalam kondisi DOWN, mohon untuk menginformasikan ke ADMIN dan tunggu hingga beberapa menit kemudian, lalu ulangi kembali, terima kasih....'
    return msgreply
def mainPages(kode_dosen, prodi_id, nama_dosen, km_npm, nama_prodi, tipe_kelas,
              catatan, group_name, jmlPesertaPerwalian):
    checkDir()

    namaFile = f"surat_perwalian/SURAT-PERWALIAN-{kode_dosen}-{kelas.getTahunID()}-{prodi_id}-{tipe_kelas}-{kelas.getEmailDosen(kode_dosen)}.pdf"

    # check dir qrcode
    checkDirQrcode()

    # generate dosen barcode
    link = makeLinkVerifiy(kode_dosen)
    makeQrcodeLinkVerifySign(link, 'dosen', kode_dosen)

    # generate km barcode
    link = makeLinkVerifiy(km_npm)
    makeQrcodeLinkVerifySign(link, 'km', kode_dosen)

    # generate kaprodi barcode
    # kaprodinipycode = bkd.getNipyKaProdi(prodi_id)
    # kaprodiDosenID = bkd.getDosenIDfromNIPY(kaprodinipycode)
    # link = makeLinkVerifiy(kaprodiDosenID)
    # makeQrcodeLinkVerifySign(link, 'kaprodi', kode_dosen)

    # generate deputi barcode
    # deputinipycode = bkd.getNipyDeputi(9)
    # deputiDosenID = bkd.getDosenIDfromNIPY(deputinipycode)
    # link = makeLinkVerifiy(deputiDosenID)
    # makeQrcodeLinkVerifySign(link, 'deputi', kode_dosen)

    masukan = catatanToList(catatan)

    # namaDeputi = nama_deputi
    # namaKaprodi = nama_kaprodi

    prodi = nama_prodi

    listMahasiswa = hadirAbsensiData(group_name, 'daring', kode_dosen)

    jumlahMhs = jmlPesertaPerwalian
    jumlahHadir = len(listMahasiswa)
    jumlahTdkHadir = jumlahMhs - jumlahHadir

    cekPerwalianLog(kode_dosen, prodi_id, kelas.getTahunID(), group_name,
                    jumlahMhs, jumlahHadir, jumlahTdkHadir, catatan)

    # statusappove=cekStatusApprovePerwalian(kode_dosen, kelas.getTahunID())

    qrWhiteImage = 'bkdqrcode/whiteimage.png'

    # if statusappove[1] == 'true':
    #     qrDeputi = f'surat_perwalian_qrcode/deputiqrcode-{kelas.getTahunID()}-{kode_dosen}.png'
    #
    # qrKaprodi = 'bkdqrcode/whiteimage.png'
    # if statusappove[0] == 'true':
    #     qrKaprodi = f'surat_perwalian_qrcode/kaprodiqrcode-{kelas.getTahunID()}-{kode_dosen}.png'

    qrKm = f'surat_perwalian_qrcode/kmqrcode-{kelas.getTahunID()}-{kode_dosen}.png'
    qrDosen = f'surat_perwalian_qrcode/dosenqrcode-{kelas.getTahunID()}-{kode_dosen}.png'

    tahunAkademik = f'{int(kelas.getTahunID()[:-1])} - {int(kelas.getTahunID()[:-1]) + 1}'
    hariSekarang = daysEnToInd(datetime.now().strftime('%A'))
    tglSekarang = bkd.sahTanggal()

    listMasukan = masukan

    doc = SimpleDocTemplate(namaFile,
                            pagesize=A4,
                            rightMargin=2.5 * cm,
                            leftMargin=2.5 * cm,
                            topMargin=2.5 * cm,
                            bottomMargin=2.5 * cm)

    contain = []
    styles = getSampleStyleSheet()
    styles.add(
        ParagraphStyle(name='Justify',
                       alignment=TA_JUSTIFY,
                       fontName='Times',
                       fontSize=12))
    styles.add(
        ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='Times'))

    createBeritaAcaraPage(contain, styles, tahunAkademik, hariSekarang,
                          tglSekarang, kode_dosen, prodi, tipe_kelas,
                          jumlahMhs, jumlahHadir, jumlahTdkHadir, listMasukan,
                          qrKm, qrWhiteImage, qrDosen,
                          kelas.getStudentNameOnly(km_npm))
    createAbsensiPage(contain, styles, kode_dosen, prodi, tipe_kelas,
                      listMahasiswa, qrWhiteImage, qrDosen)

    doc.build(contain)

    bkd.mail(
        kelas.getEmailDosen(kode_dosen),
        f'alooooo {config.bot_name} kirim file Absensi Perwalian NICHHHHHHH',
        f'Tolong dicek kembali yaaa datanya, dan jangan lupa buruann minta approvalnya ke KAPRODI dan DEPUTI yaa....',
        bkd.getFilePath(kelas.getEmailDosen(kode_dosen), 'surat_perwalian',
                        kelas.getTahunID()))
Пример #10
0
def replymsg(driver, data):
    msgreply = ''
    npms = kelas.getStudentIdFromParentPhoneNumber(data[0])
    for npm in npms:
        npm = npm[0]
        nama = kelas.getStudentNameOnly(npm)
        for trx_id in getTrxIDList(npm):
            trx_id = trx_id[0]
            payment = getDataPembayaran(trx_id)
            kode_transaksi = trx_id
            judul_transaksi = trx_id.split('-')[1]
            virtual_account = payment['virtual_account']
            customer_name = payment['customer_name']
            trx_amount = payment['trx_amount']
            payment_amount = payment['payment_amount']
            cumulative_payment_amount = payment['cumulative_payment_amount']
            datetime_payment = payment['datetime_payment']
            percentage = ''
            if 'SPP' in trx_id:
                npm = app.cekNpmInTrxID(trx_id)
                ws = app.openfile().active
                prodi_singkatan = app.getProdiSingkatanFromProdiID(
                    kelas.getProdiIDwithStudentID(npm)).lower()
                tingkat = f"tk{int(kelas.getTahunID()[:-1]) - int(kelas.getTahunAngkatanWithStudentID(npm)) + 1}"
                angkatan = kelas.getTahunAngkatanWithStudentID(npm)
                if angkatan == '2020':
                    pass
                else:
                    key = f'{prodi_singkatan}{tingkat}{angkatan}'
                    default_amount_payment = app.getDataDefault(key, ws)
                    if int(trx_amount) > int(default_amount_payment):
                        amount_tunggakan = int(trx_amount) - int(
                            default_amount_payment)
                        transfer_spp = int(cumulative_payment_amount) - int(
                            amount_tunggakan)
                        percentage = float(
                            int(transfer_spp) /
                            int(default_amount_payment)) * 100
                    else:
                        potongan = int(default_amount_payment) - int(
                            trx_amount)
                        cumulative_payment_amount += potongan
                        transfer_spp = int(cumulative_payment_amount)
                        percentage = float(
                            int(transfer_spp) /
                            int(default_amount_payment)) * 100
                    app.openfile().close()
            if angkatan == '2020':
                msgreply += f'Jenis Pembayaran: *{judul_transaksi}*\n' \
                            f'Kode Transaksi: *{kode_transaksi}*\n' \
                            f'Virtual Account: *{virtual_account}*\n' \
                            f'Nama Pelanggan: *{customer_name}*\n' \
                            f'Jumlah Yang Harus Dibayar: *{app.floatToRupiah(float(trx_amount))}*\n' \
                            f'Jumlah Transfer: *{app.floatToRupiah(float(payment_amount))}*\n' \
                            f'Total Transfer: *{app.floatToRupiah(float(cumulative_payment_amount))}*\n' \
                            f'Tanggal dan Jam Transfer: *{datetime_payment}*\n\n'
            else:
                msgreply += f'Jenis Pembayaran: *{judul_transaksi}*\n' \
                            f'Kode Transaksi: *{kode_transaksi}*\n' \
                            f'Virtual Account: *{virtual_account}*\n' \
                            f'Nama Pelanggan: *{customer_name}*\n' \
                            f'Jumlah Yang Harus Dibayar: *{app.floatToRupiah(float(trx_amount))}*\n' \
                            f'Jumlah Transfer: *{app.floatToRupiah(float(payment_amount))}*\n' \
                            f'Total Transfer: *{app.floatToRupiah(float(cumulative_payment_amount))}*\n' \
                            f'Tanggal dan Jam Transfer: *{datetime_payment}*\n' \
                            f'Persentase Pembayaran SPP: {round(percentage)}%\n\n'
    return msgreply
Пример #11
0
def makePDFandSEND(kode_pleton, nama_pleton, group_name, materi, npm_koor_pleton):
    folder_name='absensi_cb'
    checkDir(folder_name)
    doc = SimpleDocTemplate(f'./{folder_name}/ABSENSI-CB-PLETON-{npm_koor_pleton}-{kode_pleton}-{nama_pleton}-{kelas.getStudentEmail(npm_koor_pleton)}.pdf', pagesize=letter, leftMargin=30, rightMargin=30, topMargin=.1, bottomMargin=130)
    doc.pagesize = portrait(A4)

    elements = []

    elements.append(Image(f'./skpi/header.png', 19 * cm, 2.5 * cm))
    elements.append(Spacer(1, 0 * cm))

    absensi_from_log = kelas.getnumonly(groupname=group_name, tipe='daring')
    npm_and_nama = []
    for phone_number in absensi_from_log:
        peserta_cb_phone_number = numbers.normalize(phone_number[0])
        if peserta_cb_phone_number in config.nomor_koor_pleton_cb:
            continue
        else:
            npm_nama = kelas.getNpmandNameMahasiswa(peserta_cb_phone_number)
            npm_and_nama.append(npm_nama)

    pdfmetrics.registerFont(TTFont('TNR', 'timesdownload.ttf'))
    pdfmetrics.registerFont(TTFont('TNRB', 'timesdownloadbd.ttf'))

    styles = getSampleStyleSheet()
    styles.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY))
    styles.add(ParagraphStyle(name='Center', alignment=TA_CENTER))
    styles.add(ParagraphStyle(name='Right', alignment=TA_RIGHT))
    styles.add(ParagraphStyle(name='absensi_cb_style', fontName="TNRB", fontSize=14, alignment=TA_CENTER))
    styles.add(ParagraphStyle(name='Times', fontName="TNR"))

    ptext = '<font>ABSENSI CHARACTER BUILDING 2020</font>'
    elements.append(Paragraph(f'{ptext}', styles["absensi_cb_style"]))
    elements.append(Spacer(1, 35))

    waktu_tanggal=datetime.now().strftime("%d-%m-%Y %H:%M:%S")

    data = [
        [f'<font name="Times" size="10">Kode Pleton</font>', f'<font name="Times" size="10">:</font>', f'<font name="Times" size="10">{kode_pleton}</font>', f'<font name="Times" size="10">Nama Pleton</font>', f'<font name="Times" size="10">:</font>', f'<font name="Times" size="10">{nama_pleton}</font>'],
        [f'<font name="Times" size="10">Materi</font>', f'<font name="Times" size="10">:</font>', f'<font name="Times" size="10">{materi}</font>', f'<font name="Times" size="10">Tanggal dan Waktu</font>', f'<font name="Times" size="10">:</font>', f'<font name="Times" size="10">{waktu_tanggal}</font>'],
    ]

    style = TableStyle(
        [
            ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
        ]
    )
    s = getSampleStyleSheet()
    s = s["BodyText"]
    s.wordWrap = 'CJK'
    data1 = [[Paragraph(cell, s) for cell in row] for row in data]
    tab = Table(data1, hAlign='CENTER', colWidths=[2.5*cm, .5*cm, 4.5*cm, 4*cm, .5*cm, 4.5*cm])
    tab.setStyle(style)

    elements.append(tab)
    elements.append(Spacer(1, 0.35 * inch))

    data = [['Nomor', 'NPM', 'Nama', 'Program Studi']]
    nomor=1
    for npmnama in npm_and_nama:
        if npmnama:
            data_for_append=[]
            data_for_append.append(f'{str(nomor)}.')
            data_for_append.append(npmnama[0])
            data_for_append.append(npmnama[1])
            data_for_append.append(kelas.getProdiNameWithStudentID(npmnama[0]))
            data.append(data_for_append)
            nomor+=1
        else:
            continue

    style = TableStyle([('FONT', (0, 0), (-1, -1), 'Helvetica-Bold'),
                        ('VALIGN', (0, -1), (-1, -1), 'MIDDLE'),
                        ('ALIGN', (0, -1), (-1, -1), 'CENTER'),
                        ('INNERGRID', (0, 0), (-1, -1), 0.50, colors.black),
                        ('BOX', (0, 0), (-1, -1), 0.25, colors.black)
                        ])

    s = getSampleStyleSheet()
    s = s["Normal"]
    s.wordWrap = 'CJK'
    data2 = [[Paragraph(cell, s) for cell in row] for row in data]
    t = Table(data2, hAlign='CENTER', colWidths=[1.5 * cm, 2 * cm, 8 * cm, 6 * cm])
    t.setStyle(style)

    elements.append(t)
    elements.append(Spacer(1, 10))

    ptext = '<font size=10> </font>'
    elements.append(Paragraph(ptext, styles["Right"]))
    elements.append(Spacer(1, .5 * inch))

    bulan = date.today().strftime("%m")
    d2 = date.today().strftime(f"%d {bkd.bulanSwitcher(bulan)} %Y")

    ptext = '<font name="Times" size="10">Bandung, ' + d2 + '</font>'
    elements.append(Paragraph(ptext, styles["Right"]))
    elements.append(Spacer(1, 12))

    ptext = '<font name="Times" size="10">Koordinator Pleton,</font>'
    elements.append(Paragraph(ptext, styles["Right"]))
    elements.append(Spacer(1, .1 * inch))

    qrcode_path=makeQrcodeLinkVerifySign(link=makeLinkVerifiy(npm_koor_pleton), nama_pleton=nama_pleton, kode_pleton=kode_pleton, npm_koor_pleton=npm_koor_pleton)
    im = Image(qrcode_path, 1.5 * inch, 1.5 * inch)
    im.hAlign = "RIGHT"
    elements.append(im)

    ptext = '<font name="Times" size="10">' + kelas.getStudentNameOnly(npm_koor_pleton) + '</font>'
    elements.append(Paragraph(ptext, styles["Right"]))
    elements.append(Spacer(1, 1))

    ptext = '<font name="Times" size="10">NIM. ' + npm_koor_pleton + '</font>'
    elements.append(Paragraph(ptext, styles["Right"]))
    elements.append(Spacer(1, 1))

    doc.build(elements, onFirstPage=header_footer, onLaterPages=header_footer)

    bkd.mail(
        kelas.getStudentEmail(npm_koor_pleton),
        f'Halooooo, {config.bot_name} ngirim file nich....',
        f'ini ya file Absensi Character Building 2020 yang Akang/Teteh minta silahkan di cek... ehee....',
        getFilePath(
            kelas.getStudentEmail(npm_koor_pleton),
            folder_name,
            kode_pleton,
            nama_pleton,
            npm_koor_pleton
        )
    )

    msgreply = f'Kode Pleton: {kode_pleton}\n' \
               f'Nama Pleton: {nama_pleton}\n' \
               f'Materi: {materi}\n' \
               f'Koordinator Pleton: {kelas.getStudentNameOnly(npm_koor_pleton)}\n' \
               f'Tanggal dan Waktu: {waktu_tanggal}\n' \
               f'Absensi Peserta CB:\n'
    number = 1
    for data_npm_nama in npm_and_nama:
        if data_npm_nama:
            msgreply += f'{number}. {data_npm_nama[0]} - {data_npm_nama[1]}\n'
            number += 1
        else:
            continue
    return msgreply
Пример #12
0
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    num = data[0]
    msg = data[3]
    msg = message.normalize(msg)
    datefromdatabasehomebase = getStartDate(num)
    if datefromdatabasehomebase is None:
        msgreply = 'wahhh kayaknya jadwal start bimbingannya belum diset sama kaprodi kamu deehhhh, coba minta di setting dulu jadwalnya....'
    else:
        startdate = datetime.date(datefromdatabasehomebase)
        pertemuan, datemulai, dateakhir = countPertemuan(startdate)
        if pertemuan == False:
            msgreply = 'yahhh pertemuannya udah kelewat batasss, yang sabar yaaaaaa..... :('
        else:
            successsplit = ''
            try:
                studentid = msg.split('bimbingan ')[1].split(' ')[1]
                tipe = msg.split('bimbingan ')[1].split(' ')[0]
                target_selesai = msg.split('sudah dikerjakan ')[1].split(
                    ' pekerjaan selanjutnya')[0]
                terget_selanjutnya = msg.split(
                    'pekerjaan selanjutnya ')[1].split(' nilai')[0]
                topik = target_selesai + ';' + terget_selanjutnya
                nilai = msg.split('nilai ')[1].split(' passcode')[0]
                passcode = msg.split('passcode ')[1]
            except:
                successsplit = 'error'
            if successsplit == 'error':
                msgreply = 'wahhhh salah nih keywordnya coba diperbaikin deh....'
            else:
                obj = AES.new(config.key, AES.MODE_CBC, config.iv)
                dec = bytes.fromhex(passcode)
                resultpasscode = obj.decrypt(dec).decode('utf-8')
                datenow = datetime.date(datetime.now()).strftime('%d%m%Y')
                hari = datetime.now().strftime('%A')
                hari = bimbingan_mahasiswa.hariSwitcher(hari)
                studentphonenumber = kelas.getStudentPhoneNumberFromNPM(
                    studentid)
                studentphonenumber = normalizePhoneNumberToWhatsappVersion(
                    studentphonenumber)
                logmsg = ''
                for i in getLogMessageStudent(datemulai, dateakhir,
                                              kelas.getKodeDosen(num),
                                              studentphonenumber):
                    if i[0] != '':
                        logmsg += i[0] + ';'
                if logmsg == '':
                    msgreply = 'mohon maaf tidak ada diskusi diantara Dosen dan Mahasiswa maka tidak bisa di input... atau dosen dan mahasiswa kurang aktif diskusi'
                else:
                    if resultpasscode == studentid + datenow + hari:
                        if int(nilai) > 100:
                            msgreply = 'buset nilainya kaga salah itu bos?? gede benerr......'
                        else:
                            kodedosen = kelas.getKodeDosen(num)
                            if isSudahInputBimbingan(studentid, pertemuan,
                                                     kodedosen):
                                updateNilaiBimbingan(studentid=studentid,
                                                     nilai=nilai,
                                                     topik=topik,
                                                     pertemuan=pertemuan,
                                                     logmsg=logmsg)
                                msgreply = 'oke sudah iteung update yaaa nilainya.....'
                            else:
                                insertBimbingan(studentid=studentid,
                                                lecturerid=kodedosen,
                                                tipe=tipe,
                                                topik=topik,
                                                nilai=nilai,
                                                pertemuan=pertemuan,
                                                logmsg=logmsg)
                                msgreply = 'oke sudah di input yaaa....'
                            nama = kelas.getStudentNameOnly(studentid)
                            databimbingan = getDataBimbingan(studentid)
                            if databimbingan == None:
                                msgreply = 'maaf data bimbingan tidak dapat ditemukan'
                            else:
                                pembimbing1 = databimbingan[0][-3]
                                pembimbing2 = None
                                for i in databimbingan:
                                    if i[-3] != pembimbing1:
                                        pembimbing2 = databimbingan.index(i)
                                        break
                                if pembimbing2 is None:
                                    pembimbing2 = False
                                    pembimbing1 = databimbingan[0:]
                                else:
                                    pembimbing1 = databimbingan[0:pembimbing2]
                                    pembimbing2 = databimbingan[pembimbing2:]
                                msgreply += '\n\n*PENILAIAN DOSEN PEMBIMBING*'
                                for i in pembimbing1:
                                    topik = i[3].split(';')
                                    target_selesai = topik[0]
                                    target_selanjutnya = topik[1]
                                    datalog = i[7]
                                    datalog = datalog.split(';')
                                    namadosen = kelas.getNamaDosen(i[5])
                                    msgreply += '\n\nNama: {nama}\nNPM: {studentid}\nTipe: {tipe}\nPertemuan: {pertemuanke}\nSudah Dikerjakan: {targetselesai}\nPekerjaan Selanjutnya: {targetselanjutnya}\nNilai: {nilai}\nPenilai: {penilai} / {namadosen}\nJumlah Percakapan: {log}'.format(
                                        nama=nama,
                                        studentid=i[0],
                                        tipe=i[1],
                                        pertemuanke=i[2],
                                        targetselesai=target_selesai,
                                        targetselanjutnya=target_selanjutnya,
                                        nilai=i[4],
                                        penilai=i[5],
                                        log=str(len(datalog)),
                                        namadosen=namadosen)
                                if pembimbing2 == False:
                                    msgreply += '\n\n*PENILAIAN DOSEN PEMBIMBING*\npembimbing belum input nilai'
                                else:
                                    msgreply += '\n\n*PENILAIAN DOSEN PEMBIMBING*'
                                    for i in pembimbing2:
                                        topik = i[3].split(';')
                                        target_selesai = topik[0]
                                        target_selanjutnya = topik[1]
                                        datalog = i[7]
                                        datalog = datalog.split(';')
                                        namadosen = kelas.getNamaDosen(i[5])
                                        msgreply += '\n\nNama: {nama}\nNPM: {studentid}\nTipe: {tipe}\nPertemuan: {pertemuanke}\nSudah Dikerjakan: {targetselesai}\nPekerjaan Selanjutnya: {targetselanjutnya}\nNilai: {nilai}\nPenilai: {penilai} / {namadosen}\nJumlah Percakapan: {log}'.format(
                                            nama=nama,
                                            studentid=i[0],
                                            tipe=i[1],
                                            pertemuanke=i[2],
                                            targetselesai=target_selesai,
                                            targetselanjutnya=
                                            target_selanjutnya,
                                            nilai=i[4],
                                            penilai=i[5],
                                            log=str(len(datalog)),
                                            namadosen=namadosen)
                    else:
                        msgreply = 'passcodenya salah bosqueeeeee'
    return msgreply