mirror of
https://github.com/django/daphne.git
synced 2025-07-11 00:12:18 +03:00
Fix member serialization in WebsocketBindingWithMembers (#292)
* Fix member serialization in WebsocketBindingWithMembers * pep fixes * allow usage of 'dot'-notation in send_members * replace dots for dictionary * single quotes
This commit is contained in:
parent
f682298341
commit
0f1ac3d08b
|
@ -147,10 +147,17 @@ class WebsocketBindingWithMembers(WebsocketBinding):
|
||||||
|
|
||||||
def serialize_data(self, instance):
|
def serialize_data(self, instance):
|
||||||
data = super(WebsocketBindingWithMembers, self).serialize_data(instance)
|
data = super(WebsocketBindingWithMembers, self).serialize_data(instance)
|
||||||
|
member_data = {}
|
||||||
for m in self.send_members:
|
for m in self.send_members:
|
||||||
member = getattr(instance, m)
|
member = instance
|
||||||
|
for s in m.split('.'):
|
||||||
|
member = getattr(member, s)
|
||||||
if callable(member):
|
if callable(member):
|
||||||
data[m] = self.encoder.encode(member())
|
member_data[m.replace('.', '__')] = member()
|
||||||
else:
|
else:
|
||||||
data[m] = self.encoder.encode(member)
|
member_data[m.replace('.', '__')] = member
|
||||||
|
member_data = json.loads(self.encoder.encode(member_data))
|
||||||
|
# the update never overwrites any value from data,
|
||||||
|
# because an object can't have two attributes with the same name
|
||||||
|
data.update(member_data)
|
||||||
return data
|
return data
|
||||||
|
|
Loading…
Reference in New Issue
Block a user