Use a property instead of key_name to hold subject name. This makes Message.ToEvent() do an additional datastore read, but opens up the ability to add more subject indexes.

This commit is contained in:
Ian Gulliver
2014-05-17 18:50:12 +03:00
parent 60c44a25a2
commit d3f716a081

View File

@@ -89,14 +89,15 @@ class Client(db.Model):
class Subject(db.Model): class Subject(db.Model):
# key_name=name
name = db.StringProperty(required=True)
@classmethod @classmethod
def FindOrCreate(cls, name): def FindOrCreate(cls, name):
subject = cls.get_by_key_name(name) subjects = cls.all().filter('name =', name).fetch(1)
if subject: if subjects:
return subject return subjects[0]
subject = cls(key_name=name) subject = cls(name=name)
subject.put() subject.put()
return subject return subject
@@ -205,7 +206,7 @@ class Message(db.Model):
'event_type': 'message', 'event_type': 'message',
'id': self.key().id(), 'id': self.key().id(),
'sender': str(Message.sender.get_value_for_datastore(self)), 'sender': str(Message.sender.get_value_for_datastore(self)),
'subject': self.parent_key().name(), 'subject': self.parent().name,
'created': self.created, 'created': self.created,
'message': self.message, 'message': self.message,
} }