Source code for ftrack_api.entity.component

# :coding: utf-8
# :copyright: Copyright (c) 2015 ftrack

from builtins import object
import ftrack_api.entity.base

[docs]class Component(ftrack_api.entity.base.Entity): """Represent a component."""
[docs] def get_availability(self, locations=None): """Return availability in *locations*. If *locations* is None, all known locations will be checked. Return a dictionary of {location_id:percentage_availability} """ return self.session.get_component_availability(self, locations=locations)
[docs]class CreateThumbnailMixin(object): """Mixin to add create_thumbnail method on entity class."""
[docs] def create_thumbnail(self, path, data=None): """Set entity thumbnail from *path*. Creates a thumbnail component using in the ftrack.server location :meth:`Session.create_component <ftrack_api.session.Session.create_component>` The thumbnail component will be created using *data* if specified. If no component name is given, `thumbnail` will be used. The file is expected to be of an appropriate size and valid file type. .. note:: A :meth:`Session.commit<ftrack_api.session.Session.commit>` will be automatically issued. """ if data is None: data = {} if not data.get("name"): data["name"] = "thumbnail" thumbnail_component = self.session.create_component(path, data, location=None) origin_location = self.session.get( "Location", ftrack_api.symbol.ORIGIN_LOCATION_ID ) server_location = self.session.get( "Location", ftrack_api.symbol.SERVER_LOCATION_ID ) server_location.add_component(thumbnail_component, [origin_location]) # TODO: This commit can be avoided by reordering the operations in # this method so that the component is transferred to ftrack.server # after the thumbnail has been set. # # There is currently a bug in the API backend, causing the operations # to *some* times be ordered wrongly, where the update occurs before # the component has been created, causing an integrity error. # # Once this issue has been resolved, this commit can be removed and # and the update placed between component creation and registration. self["thumbnail_id"] = thumbnail_component["id"] self.session.commit() return thumbnail_component