diff --git a/documento_printserver/print_server.py b/documento_printserver/print_server.py index af1087b1a7aab5666f9d21f2bd57c7cc0d50c797..5331f14fd8e3f79d8bb268193c21019f8f0e2e92 100644 --- a/documento_printserver/print_server.py +++ b/documento_printserver/print_server.py @@ -1,5 +1,7 @@ +import os import subprocess # noqa import time +from tempfile import TemporaryDirectory import requests from barcode import Code128 @@ -110,18 +112,22 @@ def print_server(): if report == "barcode_label": label_url = base_url + document["barcode_label"] - # Download barcode label - r = requests.get(label_url) - with open("barcode-tmp.pdf", "wb") as f: - f.write(r.content) - - # Send barcode label to printer - subprocess.Popen( # noqa - ["lp", "-d", settings.get("barcode_printer.name"), "barcode-tmp.pdf"], - stderr=subprocess.DEVNULL, - stdout=subprocess.DEVNULL, - ) # noqa - printed = True + with TemporaryDirectory() as temp_dir: + # Download barcode label + r = requests.get(label_url) + filename = os.path.join(temp_dir, "barcode-tmp.pdf") + print(filename) + with open(filename, "wb") as f: + f.write(r.content) + print(["lp", "-d", settings.get("barcode_printer.name"), filename]) + # Send barcode label to printer + p = subprocess.Popen( # noqa + ["lp", "-d", settings.get("barcode_printer.name"), filename], + stderr=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + ) # noqa + p.wait() + printed = True elif report == "info_page": print_info(document, categories)