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]):