Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: [SONIC-241] Add CT exception logs #261

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 10 additions & 13 deletions commerce_coordinator/apps/commercetools/clients.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,10 @@

from commerce_coordinator.apps.commercetools.catalog_info.constants import DEFAULT_ORDER_EXPANSION, EdXFieldNames
from commerce_coordinator.apps.commercetools.catalog_info.foundational_types import TwoUCustomTypes
from commerce_coordinator.apps.commercetools.utils import translate_stripe_refund_status_to_transaction_status
from commerce_coordinator.apps.commercetools.utils import (
handle_commercetools_error,
translate_stripe_refund_status_to_transaction_status
)
from commerce_coordinator.apps.core.constants import ORDER_HISTORY_PER_SYSTEM_REQ_LIMIT

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -362,9 +365,7 @@ def create_return_for_order(self, order_id: str, order_version: int, order_line_
)
return returned_order
except CommercetoolsError as err:
logger.error(f"[CommercetoolsError] Unable to create return for "
f"order {order_id} with error correlation id {err.correlation_id} "
f"and error/s: {err.errors}")
handle_commercetools_error(err, f"Unable to create return for order {order_id}")
raise err

def update_return_payment_state_after_successful_refund(self, order_id: str,
Expand Down Expand Up @@ -398,9 +399,7 @@ def update_return_payment_state_after_successful_refund(self, order_id: str,
)
return updated_order
except CommercetoolsError as err:
logger.error(f"[CommercetoolsError] Unable to update ReturnPaymentState "
f"of order {order_id} with error correlation id {err.correlation_id} "
f"and error/s: {err.errors}")
handle_commercetools_error(err, f"Unable to update ReturnPaymentState of order {order_id}")
raise OpenEdxFilterException(str(err)) from err

def create_return_payment_transaction(
Expand Down Expand Up @@ -445,9 +444,9 @@ def create_return_payment_transaction(

return returned_payment
except CommercetoolsError as err:
logger.error(f"[CommercetoolsError] Unable to create refund payment transaction for "
f"payment {payment_id} and stripe refund {stripe_refund.id} with "
f"error correlation id {err.correlation_id} and error/s: {err.errors}")
context = f"Unable to create refund payment transaction for "\
f"payment {payment_id} and stripe refund {stripe_refund.id}"
handle_commercetools_error(err, context)
raise err

def update_line_item_transition_state_on_fulfillment(self, order_id: str, order_version: int,
Expand Down Expand Up @@ -494,7 +493,5 @@ def update_line_item_transition_state_on_fulfillment(self, order_id: str, order_
return self.get_order_by_id(order_id)
except CommercetoolsError as err:
# Logs & ignores version conflict errors due to duplicate Commercetools messages
logger.error(f"[CommercetoolsError] Unable to update LineItemState "
f"of order {order_id} with error correlation id {err.correlation_id} "
f"and error/s: {err.errors}")
handle_commercetools_error(err, f"Unable to update LineItemState of order {order_id}")
return None
29 changes: 15 additions & 14 deletions commerce_coordinator/apps/commercetools/tests/test_clients.py
Original file line number Diff line number Diff line change
Expand Up @@ -437,8 +437,8 @@ def test_create_return_for_order_exception(self):
"errors": [
{
"code": "ConcurrentModification",
"detailedErrorMessage": "Object [mock_order_id] has a "
"different version than expected. Expected: 2 - Actual: 1."
"message": "Object [mock_order_id] has a "
"different version than expected. Expected: 2 - Actual: 1.",
},
],
"response": {},
Expand All @@ -464,8 +464,8 @@ def test_create_return_for_order_exception(self):

expected_message = (
f"[CommercetoolsError] Unable to create return for "
f"order mock_order_id with error correlation id {exception.correlation_id} "
f"and error/s: {exception.errors}"
f"order mock_order_id "
f"- Correlation ID: {exception.correlation_id}, Details: {exception.errors}"
)

log_mock.assert_called_once_with(expected_message)
Expand Down Expand Up @@ -509,8 +509,8 @@ def test_update_return_payment_state_exception(self):
"errors": [
{
"code": "ConcurrentModification",
"detailedErrorMessage": "Object [mock_order_id] has a "
"different version than expected. Expected: 3 - Actual: 2."
"message": "Object [mock_order_id] has a "
"different version than expected. Expected: 3 - Actual: 2."
},
],
"response": {},
Expand Down Expand Up @@ -580,8 +580,8 @@ def test_create_refund_transaction_exception(self):
"errors": [
{
"code": "ConcurrentModification",
"detailedErrorMessage": "Object [mock_order_id] has a "
"different version than expected. Expected: 2 - Actual: 1."
"message": "Object [mock_order_id] has a "
"different version than expected. Expected: 2 - Actual: 1.",
},
],
"response": {},
Expand All @@ -607,8 +607,8 @@ def test_create_refund_transaction_exception(self):

expected_message = (
f"[CommercetoolsError] Unable to create refund payment transaction for "
f"payment mock_payment_id and stripe refund {mock_stripe_refund.id} with "
f"error correlation id {exception.correlation_id} and error/s: {exception.errors}"
f"payment mock_payment_id and stripe refund {mock_stripe_refund.id} "
f"- Correlation ID: {exception.correlation_id}, Details: {exception.errors}"
)

log_mock.assert_called_once_with(expected_message)
Expand Down Expand Up @@ -659,8 +659,8 @@ def test_update_line_item_state_exception(self, mock_state_by_id):
"errors": [
{
"code": "ConcurrentModification",
"detailedErrorMessage": "Object [mock_order_id] has a "
"different version than expected. Expected: 2 - Actual: 1."
"message": "Object [mock_order_id] has a "
"different version than expected. Expected: 2 - Actual: 1."
},
],
"response": {},
Expand All @@ -686,8 +686,9 @@ def test_update_line_item_state_exception(self, mock_state_by_id):

expected_message = (
f"[CommercetoolsError] Unable to update LineItemState "
f"of order mock_order_id with error correlation id {mock_error_response['correlation_id']} "
f"and error/s: {mock_error_response['errors']}"
f"of order mock_order_id "
f"- Correlation ID: {mock_error_response['correlation_id']}, "
f"Details: {mock_error_response['errors']}"
)

log_mock.assert_called_once_with(expected_message)
Expand Down
6 changes: 6 additions & 0 deletions commerce_coordinator/apps/commercetools/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

import requests
from braze.client import BrazeClient
from commercetools import CommercetoolsError
from commercetools.platform.models import Customer, LineItem, Order, Payment, TransactionState, TransactionType
from django.conf import settings
from django.urls import reverse
Expand All @@ -32,6 +33,11 @@ def get_braze_client():
)


def handle_commercetools_error(err: CommercetoolsError, context: str):
error_message = f"[CommercetoolsError] {context} - Correlation ID: {err.correlation_id}, Details: {err.errors}"
logger.error(error_message)


def send_order_confirmation_email(
lms_user_id, lms_user_email, canvas_entry_properties
):
Expand Down
Loading