def get(self, d):
hack_id = self.request.get('hack_id')
res = {}
if hack_id == 'index_quotes_readables':
page = self.request.get_range('page')
PAGE_SIZE = 50
index_lookup = {} # index_name -> (index, list of items)
for q in Quote.query().fetch(limit=PAGE_SIZE, offset=page * PAGE_SIZE):
sd, index = q.update_sd(index_put=False)
if index and index.name not in index_lookup:
index_lookup[index.name] = (index, [sd])
else:
index_lookup[index.name][1].append(sd)
for r in Readable.query().fetch(limit=PAGE_SIZE, offset=page * PAGE_SIZE):
sd, index = r.update_sd(index_put=False)
if index and index.name not in index_lookup:
index_lookup[index.name] = (index, [sd])
else:
index_lookup[index.name][1].append(sd)
if index_lookup:
n = 0
for index_tuple in index_lookup.values():
index, items = index_tuple
index.put(items)
n += len(items)
res['result'] = "Put %d items in %d indexes" % (n, len(index_tuple))
res['page'] = page
elif hack_id == 'normalize_key_props':
dbp = []
for hd in HabitDay.query().iter():
habit_key = hd.habit
if habit_key.parent() is None:
# Need to update
hd.habit = ndb.Key('User', hd.key.parent().id(), 'Habit', int(habit_key.id()))
dbp.append(hd)
res['habitdays'] = len(dbp)
ndb.put_multi(dbp)
dbp = []
for jrnl in MiniJournal.query().iter():
changes = False
for i, tag_key in enumerate(jrnl.tags):
if tag_key.parent() is None:
# Need to update
jrnl.tags[i] = ndb.Key('User', jrnl.key.parent().id(), 'JournalTag', tag_key.id())
changes = True
if changes:
dbp.append(jrnl)
res['journals'] = len(dbp)
ndb.put_multi(dbp)
else:
res['result'] = 'hack_id not found'
self.json_out(res)
评论列表
文章目录