add
This commit is contained in:
53
enrollments-events/app/certs/hello.py
Normal file
53
enrollments-events/app/certs/hello.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import base64
|
||||
import io
|
||||
import locale
|
||||
from datetime import date
|
||||
from uuid import uuid4
|
||||
|
||||
import qrcode
|
||||
from jinja2 import Template
|
||||
from PIL import Image
|
||||
from weasyprint import HTML
|
||||
|
||||
locale.setlocale(locale.LC_TIME, 'pt_BR')
|
||||
today = date.today()
|
||||
|
||||
with open('nr10_complementar_sep.html', encoding='utf-8') as f:
|
||||
html = f.read()
|
||||
|
||||
|
||||
def cpf_fmt(s: str) -> str:
|
||||
"""Returns a string as a Brazilian CPF number."""
|
||||
return '{}.{}.{}-{}'.format(s[:3], s[3:6], s[6:9], s[9:])
|
||||
|
||||
|
||||
qr = qrcode.QRCode(
|
||||
version=1,
|
||||
error_correction=qrcode.constants.ERROR_CORRECT_H,
|
||||
box_size=10,
|
||||
border=3,
|
||||
)
|
||||
qr.add_data('https://eduseg.com.br')
|
||||
qr.make(fit=True)
|
||||
img = qr.make_image(fill_color='black', back_color='white')
|
||||
img = img.resize((120, 120), Image.NEAREST)
|
||||
buffer = io.BytesIO()
|
||||
img.save(buffer, format='PNG')
|
||||
img_str = base64.b64encode(buffer.getvalue()).decode('utf-8')
|
||||
qrcode_base64 = f'data:image/png;base64,{img_str}'
|
||||
|
||||
|
||||
template = Template(html)
|
||||
html_rendered = template.render(
|
||||
id=uuid4(),
|
||||
name='Sérgio Rafael de Siqueira',
|
||||
cpf=cpf_fmt('07879819908'),
|
||||
progress=91.99,
|
||||
course='NR-10 Complementar (SEP)',
|
||||
today=today.strftime('%-d de %B de %Y'),
|
||||
started_date=today.strftime('%d/%m/%Y'),
|
||||
finished_date=today.strftime('%d/%m/%Y'),
|
||||
qrcode=qrcode_base64,
|
||||
)
|
||||
|
||||
HTML(string=html_rendered, base_url='').write_pdf('cert.pdf')
|
||||
Reference in New Issue
Block a user