changes
This commit is contained in:
Binary file not shown.
BIN
app/routers/__pycache__/cron_make_files.cpython-312.pyc
Normal file
BIN
app/routers/__pycache__/cron_make_files.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/routers/__pycache__/cron_print.cpython-312.pyc
Normal file
BIN
app/routers/__pycache__/cron_print.cpython-312.pyc
Normal file
Binary file not shown.
BIN
app/routers/__pycache__/cronprint.cpython-312.pyc
Normal file
BIN
app/routers/__pycache__/cronprint.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
@@ -1,7 +1,9 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from fastapi import APIRouter
|
||||
|
||||
from datetime import date, timedelta, datetime
|
||||
from app.database import session
|
||||
from app.models.delivery import Delivery
|
||||
|
||||
from app.models.printer import Printer_jobs
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/command",
|
||||
@@ -10,7 +12,103 @@ router = APIRouter(
|
||||
)
|
||||
|
||||
|
||||
@router.get("/")
|
||||
async def read_items():
|
||||
x = session.query(Delivery).first()
|
||||
return {"x": x.id}
|
||||
@router.get("/printticket/{delivery_id}")
|
||||
async def print_specific_ticket(delivery_id):
|
||||
|
||||
now = datetime.utcnow()
|
||||
|
||||
get_ticket = (session.query(Delivery)
|
||||
.filter(Delivery.id == delivery_id)
|
||||
.first())
|
||||
|
||||
new_job = Printer_jobs(
|
||||
delivery_id = delivery_id,
|
||||
date_added = now,
|
||||
date_completed = None,
|
||||
employee_id = get_ticket.driver_employee_id,
|
||||
status = 0,
|
||||
)
|
||||
session.add(new_job)
|
||||
session.commit()
|
||||
|
||||
return {"ok": True}
|
||||
|
||||
|
||||
@router.get("/print_waiting")
|
||||
async def print_waiting_tickets():
|
||||
|
||||
tomm = date.today() + timedelta(days=1)
|
||||
now = datetime.utcnow()
|
||||
|
||||
get_deliveries = (session
|
||||
.query(Delivery)
|
||||
.filter(Delivery.delivery_status == 0)
|
||||
.filter(Delivery.expected_delivery_date != tomm)
|
||||
.filter(Delivery.expected_delivery_date != date.today())
|
||||
.all())
|
||||
|
||||
for f in get_deliveries:
|
||||
new_job = Printer_jobs(
|
||||
delivery_id = f.id,
|
||||
date_added = now,
|
||||
date_completed = None,
|
||||
employee_id = f.driver_employee_id,
|
||||
status = 0,
|
||||
)
|
||||
session.add(new_job)
|
||||
|
||||
session.commit()
|
||||
|
||||
return {"ok": True}
|
||||
|
||||
|
||||
@router.get("/print_today")
|
||||
async def print_today_tickets():
|
||||
|
||||
now = datetime.utcnow()
|
||||
|
||||
get_deliveries = (session
|
||||
.query(Delivery)
|
||||
.filter(Delivery.expected_delivery_date == date.today())
|
||||
.all())
|
||||
|
||||
for f in get_deliveries:
|
||||
new_job = Printer_jobs(
|
||||
delivery_id = f.id,
|
||||
date_added = now,
|
||||
date_completed = None,
|
||||
employee_id = f.driver_employee_id,
|
||||
status = 0,
|
||||
)
|
||||
session.add(new_job)
|
||||
|
||||
session.commit()
|
||||
|
||||
return {"ok": True}
|
||||
|
||||
|
||||
@router.get("/print_tommorrow")
|
||||
async def print_tommorrow_tickets():
|
||||
|
||||
now = datetime.utcnow()
|
||||
tomm = date.today() + timedelta(days=1)
|
||||
|
||||
get_deliveries = (session
|
||||
.query(Delivery)
|
||||
.filter(Delivery.expected_delivery_date == tomm)
|
||||
.all())
|
||||
|
||||
for f in get_deliveries:
|
||||
new_job = Printer_jobs(
|
||||
delivery_id = f.id,
|
||||
date_added = now,
|
||||
date_completed = None,
|
||||
employee_id = f.driver_employee_id,
|
||||
status = 0,
|
||||
)
|
||||
session.add(new_job)
|
||||
|
||||
session.commit()
|
||||
|
||||
return {"ok": True}
|
||||
|
||||
|
||||
78
app/routers/cron_print.py
Normal file
78
app/routers/cron_print.py
Normal file
@@ -0,0 +1,78 @@
|
||||
from fastapi import APIRouter, BackgroundTasks
|
||||
|
||||
from app.database import session
|
||||
from app.models.printer import Printer_jobs
|
||||
import subprocess
|
||||
import shutil
|
||||
import pdfkit
|
||||
|
||||
location_tickets = '/home/amnesia/gitbox/tickets/'
|
||||
printer_url_service = 'http://172.18.0.1:5173/ticket/'
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/cron",
|
||||
tags=["cron"],
|
||||
responses={404: {"description": "Not found"}},
|
||||
)
|
||||
|
||||
@router.get("/waiting")
|
||||
async def make_waiting():
|
||||
|
||||
"""
|
||||
Cron job - Gets waiting tickets in database and makes pdf files
|
||||
Updates values in database for next step
|
||||
"""
|
||||
get_tickets_to_print = (session.query(Printer_jobs)
|
||||
.filter(Printer_jobs.status == 0)
|
||||
.all())
|
||||
count = 0
|
||||
for f in get_tickets_to_print:
|
||||
# get the pdf name
|
||||
filename_out = str(f.id) + '.pdf'
|
||||
# read website for the html in
|
||||
web_url = printer_url_service + str(f.id)
|
||||
pdfkit.from_url(web_url, filename_out, verbose=True)
|
||||
#set location and name to move the ticket too
|
||||
renamed_file = location_tickets + filename_out
|
||||
# perform command to move command
|
||||
shutil.move(filename_out, renamed_file)
|
||||
|
||||
# update count
|
||||
newcount = count + 1
|
||||
count = newcount
|
||||
f.status = 1
|
||||
session.add(f)
|
||||
session.commit()
|
||||
|
||||
|
||||
return {'ok': True,
|
||||
'count': count,
|
||||
}
|
||||
|
||||
|
||||
@router.get("/print/waiting")
|
||||
async def print_waiting(background_tasks: BackgroundTasks):
|
||||
"""
|
||||
Checks if pdfs are made by query
|
||||
Prints tickets using linux command on background tasks
|
||||
"""
|
||||
get_tickets_to_print = (session.query(Printer_jobs)
|
||||
.filter(Printer_jobs.status == 1)
|
||||
.all())
|
||||
if get_tickets_to_print is not None:
|
||||
for f in get_tickets_to_print:
|
||||
background_tasks.add_task(print_ticket, id=f.id)
|
||||
f.status = 3
|
||||
session.add(f)
|
||||
session.commit()
|
||||
|
||||
return {'ok': True }
|
||||
|
||||
def print_ticket(id: int):
|
||||
location = location_tickets + id + '.pdf'
|
||||
|
||||
p = (subprocess.run(["lp", location], capture_output=True))
|
||||
|
||||
for line in p.stdout.readlines():
|
||||
print(line)
|
||||
|
||||
@@ -1,10 +1,40 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from fastapi import APIRouter
|
||||
from fastapi.responses import JSONResponse
|
||||
from fastapi.encoders import jsonable_encoder
|
||||
|
||||
from app.database import session
|
||||
from app.models.delivery import Delivery
|
||||
from app.models.printer import Printer_jobs
|
||||
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/status",
|
||||
tags=["status"],
|
||||
responses={404: {"description": "Not found"}},
|
||||
)
|
||||
@router.get("/")
|
||||
|
||||
|
||||
@router.get("/waiting")
|
||||
async def read_items():
|
||||
return {"Hello": "World"}
|
||||
all_jobs = session.query(Printer_jobs).filter(Printer_jobs.status == 0).all()
|
||||
return JSONResponse(content=jsonable_encoder(all_jobs), status_code=200)
|
||||
|
||||
@router.get("/ready")
|
||||
async def read_items():
|
||||
all_jobs = session.query(Printer_jobs).filter(Printer_jobs.status == 1).all()
|
||||
return JSONResponse(content=jsonable_encoder(all_jobs), status_code=200)
|
||||
|
||||
@router.get("/printing")
|
||||
async def read_items():
|
||||
all_jobs = session.query(Printer_jobs).filter(Printer_jobs.status == 2).all()
|
||||
return JSONResponse(content=jsonable_encoder(all_jobs), status_code=200)
|
||||
|
||||
@router.get("/printed")
|
||||
async def read_items():
|
||||
all_jobs = session.query(Printer_jobs).filter(Printer_jobs.status == 3).all()
|
||||
return JSONResponse(content=jsonable_encoder(all_jobs), status_code=200)
|
||||
|
||||
@router.get("/error")
|
||||
async def read_items():
|
||||
all_jobs = session.query(Printer_jobs).filter(Printer_jobs.status == 4).all()
|
||||
return JSONResponse(content=jsonable_encoder(all_jobs), status_code=200)
|
||||
Reference in New Issue
Block a user