Source code for save_to_db.core.utils.item_collection
from save_to_db.exceptions.item_collection import CollectionDoesNotExist
[docs]class ItemCollection(object):
"""Class for managing collections of
:py:class:`~save_to_db.core.item_base.ItemBase` sub-classes.
:cvar collection:
Set of all item classes in the collection.
"""
collection_classes = {}
def __init__(self, collection_id):
self.collection = set()
self.collection_id = collection_id
self.collection_classes[collection_id] = self
[docs] def add(self, *item_classes):
"""Adds item classes to the collection.
:param \*item_classes: List of item classes to add.
"""
self.collection.update(item_classes)
[docs] def remove(self, *item_classes):
"""Removes item classes from the collection.
:param \*item_classes: List of item classes to remove.
"""
self.collection -= set(item_classes)
[docs] def clear(self):
""" Removes all item classes from the collection. """
self.collection.clear()
[docs] def get_all_item_classes(self):
"""Returns all item classes in the collection.
:returns: All item classes in the collection.
"""
return self.collection
# --- managing collections -------------------------------------------------
[docs] @classmethod
def get_collection_by_id(cls, collection_id):
"""Returns item collection with the given id.
:param collection_id: Item class collection ID.
:returns: Item class collection instance with the given ID.
"""
if collection_id not in cls.collection_classes:
raise CollectionDoesNotExist(collection_id)
return cls.collection_classes[collection_id]