django-ddp/dddp/msg.py

28 lines
697 B
Python
Raw Normal View History

"""Django DDP utils for DDP messaging."""
2015-04-08 06:14:22 +00:00
import collections
from django.core.serializers import get_serializer
2015-04-08 06:14:22 +00:00
_SERIALIZER = None
def obj_change_as_msg(obj, msg):
"""Generate a DDP msg for obj with specified msg type."""
2015-04-08 06:14:22 +00:00
global _SERIALIZER
if _SERIALIZER is None:
_SERIALIZER = get_serializer('ddp')()
data = _SERIALIZER.serialize([obj])[0]
name = data['model']
# cast ID as string
if not isinstance(data['pk'], basestring):
data['pk'] = '%d' % data['pk']
payload = {
'msg': msg,
'collection': name,
'id': data['pk'],
}
if msg != 'removed':
payload['fields'] = data['fields']
return (name, payload)