Skip to content

Instantly share code, notes, and snippets.

@jdunne-kaplan
Created March 18, 2015 16:43
Show Gist options
  • Save jdunne-kaplan/6759c5eb3ec2c8d0f2c0 to your computer and use it in GitHub Desktop.
Save jdunne-kaplan/6759c5eb3ec2c8d0f2c0 to your computer and use it in GitHub Desktop.
Swap deck_ids in TLEs
import models
from google.appengine.ext import ndb
import lib
from lib.utils import AsyncBatchUpdateManager
from lib.utils import QueryBatchIterator
session = models.DBSession.get_by_key_name('9f3cccbe-ee94-4bd6-9ba6-96efb1967ae4')
tle_query = models.TimelineEvent.query_ordered_versioned(session, timeline_version=2)\
.filter(models.TimelineEvent.event_type == "loadSlide")
# Do updates in batches of 100:
mgr = AsyncBatchUpdateManager(batch_size=100)
def update_tle(tle):
if tle.timeline_version != 2: return
if tle.slide_args:
if tle.slide_args.deck_id == "bac76cea-bf04-4d7b-b706-1928af584746":
tle.puttable()
tle.slide_args.deck_id = "4abd5f17-dd8b-42ec-a5e8-d9fecbeebdf9"
print tle
mgr.put(tle)
return
QueryBatchIterator.iterate(tle_query, 100, update_tle)
# Complete the remaining updates:
mgr.complete()
# Handle any errors:
if mgr.has_errors():
logging.error("clone_initial_version() encountered batch errors for session {}!" % session.opaqueID)
for job in mgr.get_jobs_errored():
logging.error(job.future.get_exception())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment