8000 Supporting filter_friendly_name · sangsiri/twilio-python@0cace2e · GitHub
[go: up one dir, main page]

Skip to content

Commit 0cace2e

Browse files
committed
Supporting filter_friendly_name
1 parent ea14998 commit 0cace2e

File tree

4 files changed

+75
-3
lines changed

4 files changed

+75
-3
lines changed

tests/task_router/test_workflow_config.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,57 @@ def test_from_json2(self):
7878
self.assertEqual(2, len(config.task_routing.filters))
7979
self.assertEqual(4, len(config.task_routing.default_filter))
8080

81+
def test_from_json_filter_friendly_name(self):
82+
83+
data = {
84+
'task_routing':
85+
{
86+
'filters': [
87+
{
88+
'expression': 'type == "sales"',
89+
'filter_friendly_name': 'Sales',
90+
'targets': [
91+
{
92+
'queue': 'WQec62de0e1148b8477f2e24579779c8b1',
93+
'expression': 'task.language IN worker.languages'
94+
}
95+
]
96+
},
97+
{
98+
'expression': 'type == "marketing"',
99+
'filter_friendly_name': 'Marketing',
100+
'targets': [
101+
{
102+
'queue': 'WQ2acd4c1a41ffadce5d1bac9e1ce2fa9f',
103+
'expression': 'task.language IN worker.languages'
104+
}
105+
]
106+
},
107+
{
108+
'expression': 'type == "support"',
109+
'filter_friendly_name': 'Support',
110+
'targets': [
111+
{
112+
'queue': 'WQe5eb317eb23500ade45087ea6522896c',
113+
'expression': 'task.language IN worker.languages'
114+
}
115+
]
116+
}
117+
],
118+
'default_filter':
119+
{
120+
'queue': 'WQ05f810d2d130344fd56e3c91ece2e594'
121+
}
122+
}
123+
}
124+
125+
config = WorkflowConfig.json2obj(json.dumps(data))
126+
self.assertEqual(3, len(config.task_routing.filters))
127+
self.assertEqual(1, len(config.task_routing.default_filter))
128+
self.assertEqual("Sales", config.task_routing.workflow_rules[0].friendly_name)
129+
self.assertEqual("Marketing", config.task_routing.workflow_rules[1].friendly_name)
130+
self.assertEqual("Support", config.task_routing.workflow_rules[2].friendly_name)
131+
81132
def is_json(self, myjson):
82133
try:
83134
json.loads(myjson)

twilio/task_router/taskrouter_config.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,29 @@ class TaskRouterConfig:
1010
"""
1111

1212
def __init__(self, rules, default_target):
13+
1314
self.filters = rules
1415
self.default_filter = default_target
16+
self.workflow_rules = []
17+
18+
for rule in rules:
19+
if isinstance(rule, WorkflowRule):
20+
self.workflow_rules.append(rule)
21+
else:
22+
try:
23+
name = rule['friendly_name']
24+
except KeyError:
25+
name = rule['filter_friendly_name']
26+
self.workflow_rules.append(
27+
WorkflowRule(rule['expression'], rule['targets'], name))
28+
29+
30+
1531

1632
def __repr__(self):
17-
return self.__dict__
33+
34+
return str({
35+
'workflow_rules': self.workflow_rules,
36+
'default': self.default_filter,
37+
'rules': self.rules
38+
})

twilio/task_router/workflow_rule.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,5 @@ def __repr__(self):
3030
return str({
3131
'expression': self.expression,
3232
'friendly_name': self.friendly_name,
33-
'target': self.target,
33+
'targets': self.targets,
3434
})

twilio/task_router/workflow_ruletarget.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class WorkflowRuleTarget:
1919
2020
The timeout before the reservation expires.
2121
"""
22-
def __init__(self, queue, expression, priority, timeout):
22+
def __init__(self, queue, expression, priority=None, timeout=None):
2323

2424
self.queue = queue
2525
self.expression = expression

0 commit comments

Comments
 (0)
0