Return the new message for sendMessage and pin RPCs. Pass it through the sendMessage Promise callback.

This commit is contained in:
Ian Gulliver
2014-06-12 23:12:00 -07:00
parent 493f7b1456
commit 40229ff0c0
4 changed files with 24 additions and 11 deletions

View File

@@ -38,7 +38,9 @@ import utils
class DuplicateMessage(Exception):
pass
def __init__(self, original):
self.original = original
super(DuplicateMessage, self).__init__(original)
class AccessDenied(Exception):
@@ -205,7 +207,7 @@ class Subject(db.Model):
.filter('sender_message_id =', sender_message_id)
.fetch(1))
if messages:
raise DuplicateMessage(sender_message_id)
raise DuplicateMessage(messages[0].ToEvent())
message_id = subject.next_message_id
subject.next_message_id += 1
@@ -243,6 +245,7 @@ class Subject(db.Model):
event = obj.ToEvent()
for subscription in subscriptions:
subscription.SendMessage(event)
return event
@db.transactional()
def PutPin(self, message, sender, sender_message_id,
@@ -257,7 +260,7 @@ class Subject(db.Model):
.filter('instance =', instance)
.fetch(1))
if pins:
raise DuplicateMessage(sender_message_id)
raise DuplicateMessage(pins[0].ToEvent())
obj = Pin(
parent=self,
@@ -277,6 +280,7 @@ class Subject(db.Model):
event = obj.ToEvent()
for subscription in subscriptions:
subscription.SendMessage(event)
return event
@db.transactional()
def RemovePin(self, sender, sender_message_id, instance_key):