Skip to content

Commit b5e8627

Browse files
Refactored common code to a static method.
1 parent a36f274 commit b5e8627

File tree

1 file changed

+17
-27
lines changed

1 file changed

+17
-27
lines changed

connect/resources/fulfillment_automation.py

Lines changed: 17 additions & 27 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,46 +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-
if conversation:
91-
try:
92-
conversation.add_message(str(inquire))
93-
except TypeError as ex:
94-
logger.error('Error updating conversation for request {}: {}'
95-
.format(request.id, ex))
86+
self._update_conversation_if_exists(conversation, request.id, inquire)
9687
return inquired
9788

9889
except FailRequest as fail:
9990
# PyCharm incorrectly detects unreachable code here, so disable
10091
# noinspection PyUnreachableCode
10192
failed = self.fail(request.id, reason=str(fail))
102-
if conversation:
103-
try:
104-
conversation.add_message(str(fail))
105-
except TypeError as ex:
106-
logger.error('Error updating conversation for request {}: {}'
107-
.format(request.id, ex))
93+
self._update_conversation_if_exists(conversation, request.id, fail)
10894
return failed
10995

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

120100
@deprecated(deprecated_in='16.0', details='Use ``TierConfig.get`` instead.')
121101
def get_tier_config(self, tier_id, product_id):
@@ -161,3 +141,13 @@ def update_parameters(self, pk, params):
161141
path=pk,
162142
json={'asset': {'params': list_dict}},
163143
)[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)