def get_or_create_collection(title, page_id, parent_page_id): if page_id: page = Page.objects.get(id=page_id) parent_page = page.get_parent() else: parent_page = Page.objects.get(id=parent_page_id) ancestors = parent_page.get_ancestors(inclusive=True) ancestor_titles = [] count = 0 for ancestor in ancestors: # Do nothing for count == 0, it's the root node, we don't need that if count == 1: ancestor_titles.append(ancestor.get_site().site_name) if count > 1: ancestor_titles.append(ancestor.title) count += 1 ancestor_titles.append(title) collection_name = ":".join(ancestor_titles) try: collection = Collection.objects.filter( name__exact=collection_name).get() except Collection.DoesNotExist: collection = Collection() collection.name = collection_name root = Collection.get_first_root_node() root.add_child(instance=collection) return collection
def get_collection_for_site(self, site): """ Args: site: site object Returns: Collection associated with given site """ site_collection_name = site.site_name collection = Collection.objects.filter( name=site_collection_name).first() if not collection: collection = Collection(name=site_collection_name) root_collection = Collection.get_first_root_node() root_collection.add_child(instance=collection) return collection
def create_collection(self, name): '''create_collection''' root_collection = Collection.get_first_root_node() collection = Collection(name=name) root_collection.add_child(instance=collection) return collection