Skip to content

Commit 79bcd2e

Browse files
author
Thomas Goodwin
committed
Corrected event handling to now work with Events and Messages in a uniform way
1 parent 8b01b6f commit 79bcd2e

1 file changed

Lines changed: 27 additions & 14 deletions

File tree

model/domain.py

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,20 +72,28 @@ class EventHelper(object):
7272
}
7373

7474
@staticmethod
75-
# event is a python dictionary, the result of from_any() in GenericEventConsumer.
7675
def format_event(event):
77-
for k in event:
78-
if type(k) == dict:
79-
EventHelper.format_event(k)
80-
elif 'sourceIOR' == k:
81-
event[k] = 'OBJECT_REFERENCE'
82-
elif k in EventHelper.ENUM_MAP:
83-
v = event[k]
84-
event[k] = {
85-
'value' : str(v),
86-
'enumerations' : EventHelper.ENUM_MAP[k]
76+
formattedEvent = {}
77+
78+
if type(event) == dict:
79+
for k, v in event.iteritems():
80+
if k in EventHelper.ENUM_MAP:
81+
formattedEvent[k] = {
82+
'value' : str(v),
83+
'enumerations' : EventHelper.ENUM_MAP[k]
8784
}
88-
return event
85+
elif type(v) == list:
86+
formattedEvent[k] = []
87+
for item in v:
88+
formattedEvent[k].append(EventHelper.format_event(item))
89+
else:
90+
formattedEvent[k] = EventHelper.format_event(v)
91+
elif str(type(event)) == "<type 'instance'>":
92+
formattedEvent = str(event)
93+
else:
94+
formattedEvent = event
95+
96+
return formattedEvent
8997

9098

9199
class TopicConsumer (GenericEventConsumer):
@@ -110,8 +118,13 @@ def attempt(callback, msg):
110118
except WebSocketClosedError as e:
111119
return False
112120

113-
message = EventHelper.format_event(event)
114-
self.__listeners[:] = [cb for cb in self.__listeners if attempt(cb, message)]
121+
if type(event) == list:
122+
for k in event:
123+
self.deliver(k, typecode)
124+
else:
125+
message = EventHelper.format_event(event)
126+
self.__listeners[:] = [cb for cb in self.__listeners if attempt(cb, message)]
127+
115128

116129
def add_listener(self, callbackFn):
117130
if callbackFn not in self.__listeners:

0 commit comments

Comments
 (0)