Skip to content

Commit 0c8b8e3

Browse files
Merge pull request #47 from JaviCerveraIngram/CPS-25-fix-conversations
CPS-25-fix-conversations
2 parents 46e7a9b + b5e8627 commit 0c8b8e3

File tree

1 file changed

+17
-24
lines changed

1 file changed

+17
-24
lines changed

connect/resources/fulfillment_automation.py

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
from abc import ABCMeta
77

88
from deprecation import deprecated
9+
from typing import Optional
910

1011
from connect.exceptions import FailRequest, InquireRequest, SkipRequest
1112
from connect.logger import logger, function_log
1213
from connect.models import ActivationTemplateResponse, ActivationTileResponse, Param, \
13-
Fulfillment, TierConfigRequest
14+
Fulfillment, TierConfigRequest, Conversation
1415
from .automation_engine import AutomationEngine
1516

1617

@@ -76,43 +77,25 @@ def dispatch(self, request):
7677
message = ''
7778
approved = ''
7879

79-
if conversation:
80-
try:
81-
conversation.add_message(message)
82-
except TypeError as ex:
83-
logger.error('Error updating conversation for request {}: {}'
84-
.format(request.id, ex))
80+
self._update_conversation_if_exists(conversation, request.id, message)
8581
return approved
8682

8783
except InquireRequest as inquire:
8884
self.update_parameters(request.id, inquire.params)
8985
inquired = self.inquire(request.id)
90-
try:
91-
conversation.add_message(str(inquire))
92-
except TypeError as ex:
93-
logger.error('Error updating conversation for request {}: {}'
94-
.format(request.id, ex))
86+
self._update_conversation_if_exists(conversation, request.id, inquire)
9587
return inquired
9688

9789
except FailRequest as fail:
9890
# PyCharm incorrectly detects unreachable code here, so disable
9991
# noinspection PyUnreachableCode
10092
failed = self.fail(request.id, reason=str(fail))
101-
try:
102-
conversation.add_message(str(fail))
103-
except TypeError as ex:
104-
logger.error('Error updating conversation for request {}: {}'
105-
.format(request.id, ex))
93+
self._update_conversation_if_exists(conversation, request.id, fail)
10694
return failed
10795

10896
except SkipRequest as skip:
109-
skipped = skip.code
110-
try:
111-
conversation.add_message(str(skip))
112-
except TypeError as ex:
113-
logger.error('Error updating conversation for request {}: {}'
114-
.format(request.id, ex))
115-
return skipped
97+
self._update_conversation_if_exists(conversation, request.id, skip)
98+
return skip.code
11699

117100
@deprecated(deprecated_in='16.0', details='Use ``TierConfig.get`` instead.')
118101
def get_tier_config(self, tier_id, product_id):
@@ -158,3 +141,13 @@ def update_parameters(self, pk, params):
158141
path=pk,
159142
json={'asset': {'params': list_dict}},
160143
)[0]
144+
145+
@staticmethod
146+
def _update_conversation_if_exists(conversation, request_id, obj):
147+
# type: (Optional[Conversation], str, object) -> None
148+
if conversation:
149+
try:
150+
conversation.add_message(str(obj))
151+
except TypeError as ex:
152+
logger.error('Error updating conversation for request {}: {}'
153+
.format(request_id, ex))

0 commit comments

Comments
 (0)