in backend-printing/helper/backend_print.py [0:0]
def send_print_items_to_universal_print(self):
"""Get the print items from storage account queue.
Temporary work around:
Since the authorization using SPN is not available for the universal print,
"""
messages = []
try:
messages = StorageQueueClient().receive_messages()
self.logger.info(
f"[{self.log_tag}] Fetched items {len(messages)} from the storage account"
)
self._update_print_messages_status(
print_messages=messages, status=PrintItemStatus.IN_PROGRESS.value
)
for message in messages:
queue_message, message_content = message
self.logger.info(f"[{self.log_tag}] Logic app init for printing")
response = UniversalPrintUsingLogicApp().call_logic_app(
print_items=message_content["print_item"]
)
sap_config = self._get_sap_config(
sap_sid=message_content["sap_sid"],
sap_environment=message_content["sap_environment"],
)
sap_client = SAPPrintClient(sap_system_config=sap_config)
if response.status_code == 202 or response.status_code == 201:
StorageQueueClient().delete_message(message=queue_message)
self.logger.info(
f"[{self.log_tag}] Deleted the message from the storage account after success"
)
self._update_print_messages_status(
print_messages=[message_content],
status=PrintItemStatus.COMPLETED.value,
)
sap_client.fetch_csrf_token_and_update_print_item_status(
print_item_id=message_content["print_item"]["queue_item_id"],
queue_name=message_content["sap_print_queue_name"],
status="S",
)
else:
sap_client.fetch_csrf_token_and_update_print_item_status(
print_item_id=message_content["print_item"]["queue_item_id"],
queue_name=message_content["sap_print_queue_name"],
status="F",
)
except Exception as e:
self.logger.error(
f"[{self.log_tag}] Error occurred while sending items to logic app: {e}"
)
self._update_print_messages_status(
print_messages=[message], status=PrintItemStatus.ERROR.value
)
return {
"status": "error",
"message": "Error occurred while sending items to logic app.",
}