Archived
1
0
Fork 0
This repository has been archived on 2024-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
teleexit/callbackQuery/create.py

104 lines
3.6 KiB
Python
Raw Normal View History

2020-11-07 13:18:53 +01:00
from datetime import datetime
from io import BytesIO
2020-11-07 14:27:06 +01:00
from PyPDF2 import PdfFileReader, PdfFileWriter
from PyPDF2.pdf import PageObject
2020-11-07 13:18:53 +01:00
from qrcode import make
2020-11-07 14:27:06 +01:00
from reportlab.lib.pagesizes import letter
from reportlab.lib.utils import ImageReader
from reportlab.pdfgen import canvas
from telegram import Update, InlineKeyboardMarkup, InlineKeyboardButton
2020-11-07 12:16:52 +01:00
from telegram.ext import CallbackContext
2020-11-07 13:18:53 +01:00
from main import reasons, database
local = {
"work": "travail",
"shopping": "achats",
"health": "sante",
"family": "famille",
"handicap": "handicap",
"sport_animal": "sport_animaux",
"injunction": "convocation",
"missions": "missions",
"children": "enfants"
}
2020-11-07 12:16:52 +01:00
def create(update: Update, context: CallbackContext):
2020-11-07 14:27:06 +01:00
reason = reasons[update.effective_chat.id][update["_effective_user"]["id"]]
2020-11-07 12:16:52 +01:00
del reasons[update.effective_chat.id][update["_effective_user"]["id"]]
2020-11-07 14:27:06 +01:00
date = datetime.now()
first_name = database[update['_effective_user']['id']]['last_name']
last_name = database[update['_effective_user']['id']]['first_name']
birth_date = database[update['_effective_user']['id']]['birth_date']
birth_city = database[update['_effective_user']['id']]['birth_city']
address = database[update['_effective_user']['id']]['address']
img = make(f"Cree le: {date.strftime('%d/%m/%Y a %Hh%M')};\n"
f"Nom: {first_name};\n"
f"Prenom: {last_name};\n"
f"Naissance: {birth_date} a "
f"{birth_city};\n"
f"Adresse: {address};\n"
f"Sortie: {date.strftime('%d/%m/%Y a %Hh%M')}\n"
f"Motifs: {', '.join(map(lambda r: local[r], reason))};")
2020-11-07 13:18:53 +01:00
photo = BytesIO()
photo.name = "QRCode.jpeg"
img.save(photo, "JPEG")
photo.seek(0)
context.bot.send_photo(chat_id=update.effective_chat.id, photo=photo)
2020-11-07 12:16:52 +01:00
2020-11-07 14:27:06 +01:00
packet = BytesIO()
can = canvas.Canvas(packet, pagesize=letter)
can.setFont("Helvetica", 11)
can.drawString(119, 696, f"{first_name} {last_name}")
can.drawString(119, 674, birth_date)
can.drawString(297, 674, birth_city)
can.drawString(133, 652, address)
can.setFontSize(18)
for r in reason:
y = 0
if r == "work":
y = 578
elif r == "shopping":
y = 533
elif r == "health":
y = 477
elif r == "family":
y = 435
elif r == "handicap":
y = 396
elif r == "sport_animal":
y = 358
elif r == "injunction":
y = 295
elif r == "missions":
y = 255
elif r == "children":
y = 211
can.drawString(78, y, "x")
can.setFontSize(11)
can.drawString(105, 177, address) # ToDo: City only !
can.drawString(91, 153, date.strftime("%d/%m/%Y"))
can.drawString(264, 153, date.strftime("%Hh%M"))
existing_pdf = PdfFileReader(open("certificate.pdf", "rb"))
photo.seek(0)
can.drawImage(ImageReader(photo), existing_pdf.getPage(0).mediaBox[2] - 156, 100, 92, 92)
can.save()
packet.seek(0)
new_pdf = PdfFileReader(packet)
output = PdfFileWriter()
page = existing_pdf.getPage(0)
page.mergePage(new_pdf.getPage(0))
output.addPage(page)
output_stream = BytesIO()
output_stream.name = "Exit certificate.pdf"
output.write(output_stream)
output_stream.seek(0)
context.bot.send_document(chat_id=update.effective_chat.id, document=output_stream,
reply_markup=InlineKeyboardMarkup([[InlineKeyboardButton("Home", callback_data="home")],
[InlineKeyboardButton("New", callback_data="new")]]))