Support public flag for StateEntry

This commit is contained in:
Ian Gulliver
2014-05-01 11:33:29 -07:00
parent 006eb03483
commit 64f989e3ca
5 changed files with 59 additions and 45 deletions

View File

@@ -19,6 +19,8 @@ import logging
from google.appengine.api import channel
from google.appengine.ext import db
import utils
# Profile
# ↳ Client
@@ -94,7 +96,7 @@ class Client(db.Model):
return cls.FromProfile(profile)
def SendMessage(self, msg):
channel.send_message(str(self.key()), json.dumps(msg))
channel.send_message(str(self.key()), json.dumps(msg, default=utils.EncodeJSON))
class StateEntry(db.Model):
@@ -103,12 +105,15 @@ class StateEntry(db.Model):
last_set = db.DateTimeProperty(required=True, auto_now=True)
entry_key = db.StringProperty(required=True)
entry_value = db.StringProperty()
public = db.BooleanProperty(required=True, default=False)
def ToMessage(self):
return {
'message_type': 'state',
'key': self.entry_key,
'value': self.entry_value,
'key': self.entry_key,
'value': self.entry_value,
'last_set': self.last_set,
'public': self.public,
}

View File

@@ -12,9 +12,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import datetime
import functools
import json
import random
import time
from google.appengine.api import namespace_manager
@@ -27,7 +29,7 @@ def returns_json(handler):
@functools.wraps(handler)
def SerializeResult(self):
json.dump(handler(self), self.response.out)
json.dump(handler(self), self.response.out, default=EncodeJSON)
return SerializeResult
@@ -54,3 +56,9 @@ def local_namespace(handler):
return handler(self)
return SetNamespace
def EncodeJSON(o):
if isinstance(o, datetime.datetime):
return time.mktime(o.timetuple())
return json.JSONEncoder.default(o)