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:
40
main.py
40
main.py
@@ -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
|
||||
Reference in New Issue
Block a user