diff --git a/core/crm/amo/gateway.py b/core/crm/amo/gateway.py index 7eef103e..ce22c3b7 100644 --- a/core/crm/amo/gateway.py +++ b/core/crm/amo/gateway.py @@ -8,6 +8,7 @@ from django.db import transaction from core.crm.exceptions import CRMException from core.models import CustomerRelationshipManagementProvider, Order, OrderCrmLink +from core.utils import is_status_code_success logger = logging.getLogger("django") @@ -59,7 +60,9 @@ class AmoCRM: payload["grant_type"] = "authorization_code" payload["code"] = self.authorization_code r = requests.post(f"{self.base}/oauth2/access_token", json=payload, timeout=15) - r.raise_for_status() + if not is_status_code_success(r.status_code): + logger.error(f"Unable to get AMO access token: {r.status_code} {r.text}") + raise CRMException("Unable to get AMO access token") data = r.json() self.access_token = data["access_token"] cache.set("amo_refresh_token", data["refresh_token"], 604800) diff --git a/core/utils/__init__.py b/core/utils/__init__.py index 53d1f447..6b904606 100644 --- a/core/utils/__init__.py +++ b/core/utils/__init__.py @@ -255,3 +255,7 @@ def generate_human_readable_token() -> str: str: A 20-character random token. """ return "".join([secrets.choice(CROCKFORD) for _ in range(20)]) + + +def is_status_code_success(status_code: int) -> bool: + return 200 <= status_code < 300