def topic_context(topic): """ Given a topic node, create all context related to showing that topic in a template. """ videos = topic_tools.get_videos(topic) exercises = topic_tools.get_exercises(topic) topics = topic_tools.get_live_topics(topic) # Get video counts if they'll be used, on-demand only. # # Check in this order so that the initial counts are always updated if video_counts_need_update() or not 'nvideos_local' in topic: (topic,_,_) = get_video_counts(topic=topic, videos_path=settings.CONTENT_ROOT) my_topics = [dict((k, t[k]) for k in ('title', 'path', 'nvideos_local', 'nvideos_known')) for t in topics] context = { "topic": topic, "title": topic["title"], "description": re.sub(r'<[^>]*?>', '', topic["description"] or ""), "videos": videos, "exercises": exercises, "topics": my_topics, "backup_vids_available": bool(settings.BACKUP_VIDEO_SOURCE), } return context
def topic_context(topic): """ Given a topic node, create all context related to showing that topic in a template. """ videos = topic_tools.get_videos(topic) exercises = topic_tools.get_exercises(topic) topics = topic_tools.get_live_topics(topic) my_topics = [dict((k, t[k]) for k in ('title', 'path', 'nvideos_local', 'nvideos_known')) for t in topics] context = { "topic": topic, "title": topic["title"], "description": re.sub(r'<[^>]*?>', '', topic["description"] or ""), "videos": videos, "exercises": exercises, "topics": my_topics, "backup_vids_available": bool(settings.BACKUP_VIDEO_SOURCE), } return context
def topic_context(topic): """ Given a topic node, create all context related to showing that topic in a template. """ videos = topic_tools.get_videos(topic) exercises = topic_tools.get_exercises(topic) topics = topic_tools.get_live_topics(topic) my_topics = [dict((k, t[k]) for k in ('title', 'path', 'nvideos_local', 'nvideos_known')) for t in topics] exercises_path = os.path.join(settings.STATIC_ROOT, "js", "khan-exercises", "exercises") exercise_langs = dict([(exercise["id"], ["en"]) for exercise in exercises]) for lang_code in os.listdir(exercises_path): loc_path = os.path.join(exercises_path, lang_code) if not os.path.isdir(loc_path): continue for exercise in exercises: ex_path = os.path.join(loc_path, "%s.html" % exercise["id"]) if not os.path.exists(ex_path): continue exercise_langs[exercise["id"]].append(lang_code) context = { "topic": topic, "title": topic["title"], "description": re.sub(r'<[^>]*?>', '', topic["description"] or ""), "videos": videos, "exercises": exercises, "exercise_langs": exercise_langs, "topics": my_topics, "backup_vids_available": bool(settings.BACKUP_VIDEO_SOURCE), } return context