Added logic to generate barcodes and generate a PDF with them all. Included free barcode fonts. Also added gitignore file.

This commit is contained in:
dan
2021-06-10 00:48:01 -04:00
parent 3ecdd3a4f3
commit 4431f4836e
9 changed files with 177 additions and 7 deletions

40
main.py
View File

@@ -4,6 +4,7 @@ from sqlalchemy import create_engine, Column, Integer, String, TEXT
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from fastapi.staticfiles import StaticFiles
from fpdf import FPDF
# Declare Base and setup tables
Base = declarative_base()
@@ -98,6 +99,43 @@ async def checkin(BookCase: str = Form(...), Shelf: str = Form(...)):
return {"Location Added": location}
@app.post('/barcodes')
async def barcodes(userid: int = Form(...)):
temp = []
barcode = {'CheckIn': 'Check In', 'CheckOut': 'Check Out'}
pdf = FPDF()
# pdf.add_font('barcode', '', '.\\static\\barcodeFont\\LibreBarcode128-Regular.ttf', uni=True)
pdf.add_font('barcode', '', '.\\static\\barcodeFont\\LibreBarcode39-Regular.ttf', uni=True)
pdf.add_page()
result = session.query(Location).filter(Location.userid == userid)
for each in result:
code = (each.Bookcase + each.Shelf).replace(' ','')
display = each.Bookcase + ' - ' + each.Shelf
barcode['Loc.' + code] = display
temp.append(code)
for each in barcode:
pdf.set_font('barcode', '', 25)
pdf.cell(0, 5, '*'+each+'$M*')
w = pdf.get_string_width('*'+each+'$M*')
pdf.ln()
pdf.set_font('Arial', '', 5)
pdf.cell(w, 5, barcode[each], align='C')
pdf.ln()
pdf.ln()
try:
pdf.output(name='.\\static\\barcodes.pdf')
return {'Barcodes': 'Ready'}
except:
return {'Barcodes': 'Failed'}
async def getMeta(isbn):
info = meta(isbn, service='wiki')
return info
return info