in backend-printing/helper/backend_print.py [0:0]
def fetch_print_items_from_sap(self):
"""Get the print items from each SAP system.
Create a json message for each print item.
Move these messages to storage queue.
"""
print_messages = []
try:
self._get_all_sap_configs()
self.logger.info(f"[{self.log_tag}] Fetched sap config from key vault")
for sap_system in self.sap_systems:
sap_client = SAPPrintClient(sap_system)
self.logger.info(
f"[{self.log_tag}] Fetching print items from SAP system {sap_system.sap_sid}"
)
if sap_system.sap_print_queues is not None:
for queue in sap_system.sap_print_queues:
print_items_from_queue = []
response = sap_client.get_print_items_from_queue(
queue_name=queue.queue_name
)
(
print_items_from_queue.extend(response)
if response is not None
else []
)
self.logger.info(
f"[{self.log_tag}] Fetched {len(print_items_from_queue)} items from the "
+ f" SAP queue {queue} for {sap_system.sap_sid}"
)
for print_item in print_items_from_queue:
queue_item_params = json.loads(print_item["QItemParams"])
for document in json.loads(print_item["Documents"]):
print_messages.append(
{
"sap_sid": sap_system.sap_sid,
"sap_environment": sap_system.sap_environment,
"sap_print_queue_name": queue.queue_name,
"print_item": {
"document_blob": document["blob"],
"document_name": document["document_name"],
"document_file_size": document["filesize"],
"printer_share_id": queue.print_share_id,
"queue_item_id": print_item["QItemId"],
"document_content_type": DOCUMENT_CONTENT_TYPE,
"print_job_copies": queue_item_params[
"print_job"
]["copies"],
},
}
)
# send the print messages to the storage queue
if print_messages:
self._send_message_to_storage_queue(print_messages=print_messages)
self.logger.info(
f"[{self.log_tag}] Sent {len(print_messages)} messages to the storage account"
)
self._update_print_messages_status(
print_messages=print_messages, status=PrintItemStatus.NEW.value
)
self.logger.info(
f"[{self.log_tag}] Updated {len(print_messages)} messages status in storage table to NEW"
)
except Exception as e:
self.logger.error(
f"[{self.log_tag}] Error occurred while fetching SAP config from the Key Vault: {e}"
)
return {
"status": "error",
"message": "Error occurred while fetching items.",
}