Skip to content

Commit eb99d91

Browse files
committed
Long term fix for the 1.2.8 App Engine update that broke Bloog code
1 parent 050f333 commit eb99d91

2 files changed

Lines changed: 30 additions & 4 deletions

File tree

‎models/__init__.py‎

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,30 @@ def to_json(self, attr_list=[]):
118118
def to_entity(entity):
119119
"""Convert datastore types in entity to
120120
JSON-friendly structures."""
121-
self._to_entity(entity)
121+
my_to_entity(self, entity)
122122
for skipped_property in self.__class__.json_does_not_include:
123123
del entity[skipped_property]
124124
replace_datastore_types(entity)
125125
values = to_dict(self, attr_list, to_entity)
126126
return simplejson.dumps(values)
127127

128+
def my_to_entity(self, entity):
129+
"""Copies information from this model to provided entity.
130+
131+
Args:
132+
entity: Entity to save information on.
133+
"""
134+
for prop in self.properties().values():
135+
logging.debug("copying prop: " + prop.name)
136+
datastore_value = prop.get_value_for_datastore(self)
137+
if datastore_value == []:
138+
try:
139+
del entity[prop.name]
140+
except KeyError:
141+
pass
142+
else:
143+
entity[prop.name] = datastore_value
144+
128145
class MemcachedModel(SerializableModel):
129146
"""MemcachedModel adds memcached all() retrieval through list().
130147
@@ -147,9 +164,19 @@ def put(self):
147164
memcache.delete(self.__class__.memcache_key())
148165
return key
149166

167+
def to_entity(entity):
168+
"""Convert datastore types in entity to
169+
JSON-friendly structures."""
170+
self._to_entity(entity)
171+
logging.debug(dir(self.__class__))
172+
for skipped_property in self.__class__.json_does_not_include:
173+
del entity[skipped_property]
174+
replace_datastore_types(entity)
175+
values = to_dict(self, attr_list, to_entity)
176+
150177
def _to_repr(self):
151178
return repr(to_dict(self, self.__class__.list_includes,
152-
self._to_entity))
179+
my_to_entity(self)))
153180

154181
@classmethod
155182
def get_or_insert(cls, key_name, **kwds):

‎view.py‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,7 @@ def full_render(self, handler, template_info, more_params):
169169
NUM_FULL_RENDERS[path] = 0
170170
NUM_FULL_RENDERS[path] += 1 # This lets us see % of cached views
171171
# in /admin/timings (see timings.py)
172-
#tags = Tag.list()
173-
tags = None
172+
tags = Tag.list()
174173
years = Year.get_all_years()
175174

176175
# Define some parameters it'd be nice to have in views by default.

0 commit comments

Comments
 (0)