def library_content_html(mobile=False, version_number=None): if version_number: version = TopicVersion.get_by_number(version_number) else: version = TopicVersion.get_default_version() tree = Topic.get_root(version).make_tree(types = ["Topics", "Video", "Exercise", "Url"]) videos = [item for item in walk_children(tree) if item.kind()=="Video"] root, = prepare(tree) topics = root.subtopics timestamp = time.time() template_values = { 'topics': topics, 'is_mobile': mobile, # convert timestamp to a nice integer for the JS 'timestamp': int(round(timestamp * 1000)), 'version_date': str(version.made_default_on), 'version_id': version.number, 'approx_vid_count': Video.approx_count(), 'exercise_count': Exercise.get_count(), } html = shared_jinja.get().render_template("library_content_template.html", **template_values) return html
def get(self): version_name = self.request.get('version', 'edit') topics = map(str, self.request.get_all("topic") or self.request.get_all("topic[]")) edit_version = TopicVersion.get_by_id(version_name) if edit_version is None: default_version = TopicVersion.get_default_version() if default_version is None: # Assuming this is dev, there is an empty datastore and we need an import edit_version = TopicVersion.create_new_version() edit_version.edit = True edit_version.put() create_root(edit_version) else: raise Exception("Wait for setting default version to finish making an edit version.") if self.request.get('migrate', False): return self.topic_migration() if self.request.get('fixdupes', False): return self.fix_duplicates() root = Topic.get_root(edit_version) data = root.get_visible_data() tree_nodes = [data] template_values = { 'edit_version': jsonify(edit_version), 'tree_nodes': jsonify(tree_nodes) } self.render_jinja2_template('topics-admin.html', template_values) return
def library_content_html(ajax=False, version_number=None): """" Returns the HTML for the structure of the topics as they will be populated ont he homepage. Does not actually contain the list of video names as those are filled in later asynchronously via the cache. """ if version_number: version = TopicVersion.get_by_number(version_number) else: version = TopicVersion.get_default_version() tree = Topic.get_root(version).make_tree( types=["Topics", "Video", "Exercise", "Url"]) videos = [item for item in walk_children(tree) if item.kind() == "Video"] add_related_exercises(videos) topics = flatten_tree(tree) #topics.sort(key = lambda topic: topic.standalone_title) # special case the duplicate topics for now, eventually we need to either make use of multiple parent functionality (with a hack for a different title), or just wait until we rework homepage topics = [ topic for topic in topics if (not topic.id == "new-and-noteworthy") ] # print_topics(topics) add_next_topic(topics) timestamp = time.time() template_values = { 'topics': topics, 'ajax': ajax, # convert timestamp to a nice integer for the JS 'timestamp': int(round(timestamp * 1000)), 'version_date': str(version.made_default_on), 'version_id': version.number } html = shared_jinja.get().render_template("library_content_template.html", **template_values) return html
def library_content_html(ajax=False, version_number=None): """" Returns the HTML for the structure of the topics as they will be populated ont he homepage. Does not actually contain the list of video names as those are filled in later asynchronously via the cache. """ if version_number: version = TopicVersion.get_by_number(version_number) else: version = TopicVersion.get_default_version() tree = Topic.get_root(version).make_tree(types = ["Topics", "Video", "Exercise", "Url"]) videos = [item for item in walk_children(tree) if item.kind()=="Video"] add_related_exercises(videos) topics = flatten_tree(tree) #topics.sort(key = lambda topic: topic.standalone_title) # special case the duplicate topics for now, eventually we need to either make use of multiple parent functionality (with a hack for a different title), or just wait until we rework homepage topics = [topic for topic in topics if (not topic.id == "new-and-noteworthy")] # print_topics(topics) add_next_topic(topics) timestamp = time.time() template_values = { 'topics': topics, 'ajax' : ajax, # convert timestamp to a nice integer for the JS 'timestamp': int(round(timestamp * 1000)), 'version_date': str(version.made_default_on), 'version_id': version.number } html = shared_jinja.get().render_template("library_content_template.html", **template_values) return html
def get(self): version_name = self.request.get('version', 'edit') topics = map( str, self.request.get_all("topic") or self.request.get_all("topic[]")) edit_version = TopicVersion.get_by_id(version_name) if edit_version is None: default_version = TopicVersion.get_default_version() if default_version is None: # Assuming this is dev, there is an empty datastore and we need an import edit_version = TopicVersion.create_new_version() edit_version.edit = True edit_version.put() create_root(edit_version) else: raise Exception( "Wait for setting default version to finish making an edit version." ) if self.request.get('migrate', False): return self.topic_migration() if self.request.get('fixdupes', False): return self.fix_duplicates() root = Topic.get_root(edit_version) data = root.get_visible_data() tree_nodes = [data] template_values = { 'edit_version': jsonify(edit_version), 'tree_nodes': jsonify(tree_nodes) } self.render_jinja2_template('topics-admin.html', template_values) return