Source code for panoptes_client.collection

from __future__ import absolute_import, division, print_function
from builtins import str

from panoptes_client.panoptes import (
from panoptes_client.subject import Subject
from panoptes_client.utils import batchable

[docs]class Collection(PanoptesObject): _api_slug = 'collections' _link_slug = 'collections' _edit_attributes = ( 'name', 'description', 'display_name', 'private', { 'links': ( 'project', ), }, )
[docs] @classmethod def find(cls, id='', slug=None): """ Similar to :py:meth:`.PanoptesObject.find`, but allows lookup by slug as well as ID. Examples:: collection_1234 = Collection.find(1234) my_collection = Collection.find(slug="example/my-collection") """ if not id and not slug: return None try: return cls.where(id=id, slug=slug).next() except StopIteration: raise PanoptesAPIException( "Could not find collection with slug='{}'".format(slug) )
@property def subjects(self): """ A generator which yields each :py:class:`.Subject` in this collection. """ return self.links.subjects
[docs] def add(self, subjects): """ A wrapper around :py:meth:`.LinkCollection.add`. Equivalent to:: collection.links.add(subjects) """ return self.links.subjects.add(subjects)
[docs] def remove(self, subjects): """ A wrapper around :py:meth:`.LinkCollection.remove`. Equivalent to:: collection.links.remove(subjects) """ return self.links.subjects.remove(subjects)
[docs] def set_default_subject(self, subject): """ Sets the subject's location media URL as a link. It displays as the default subject on PFE. - **subject** can be a single :py:class:`.Subject` instance or a single subject ID. Examples:: collection.set_default_subject(1234) collection.set_default_subject(Subject(1234)) """ if not ( isinstance(subject, Subject) or isinstance(subject, (int, str,)) ): raise TypeError if isinstance(subject, Subject): _subject_id = else: _subject_id = str(subject) self.http_post( '{}/links/default_subject'.format(, json={'default_subject': _subject_id}, )