import datetime from itertools import izip, chain import logging from jinja2.utils import escape from templatefilters import escapejs, timesince_ago from points import VideoPointCalculator, video_progress_from_points from models import Exercise, UserExerciseGraph from models import UserVideoCss, Video, UserVideo from models import Topic, Setting import pickle import layer_cache @layer_cache.cache_with_key_fxn( lambda : "content_data_%s" % (Setting.cached_content_add_date()), layer=layer_cache.Layers.Blobstore) def get_content_data(): topics = {str(t.key()):(idx, t) for idx, t in enumerate(Topic.get_visible_topics())} topic_names = {} def get_topics_of(item): def g(): if not item.topic_string_keys: return seen = set() for tk in item.topic_string_keys: try: idx, topic = topics[tk] except KeyError: continue for depth, tk2 in enumerate(topic.ancestor_keys[:-1][::-1]):