Source code for ftrack_api.entity.project_schema

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

import ftrack_api.entity.base


[docs]class ProjectSchema(ftrack_api.entity.base.Entity): """Class representing ProjectSchema."""
[docs] def get_statuses(self, schema, type_id=None): """Return statuses for *schema* and optional *type_id*. *type_id* is the id of the Type for a TypedContext and can be used to get statuses where the workflow has been overridden. """ # Task has overrides and need to be handled separately. if schema == "Task": if type_id is not None: overrides = self["_overrides"] for override in overrides: if override["type_id"] == type_id: return override["workflow_schema"]["statuses"][:] return self["_task_workflow"]["statuses"][:] elif schema == "AssetVersion": return self["_version_workflow"]["statuses"][:] else: try: EntityTypeClass = self.session.types[schema] except KeyError: raise ValueError("Schema {0} does not exist.".format(schema)) object_type_id_attribute = EntityTypeClass.attributes.get("object_type_id") try: object_type_id = object_type_id_attribute.default_value except AttributeError: raise ValueError("Schema {0} does not have statuses.".format(schema)) for _schema in self["_schemas"]: if _schema["type_id"] == object_type_id: result = self.session.query( "select task_status from SchemaStatus " "where schema_id is {0}".format(_schema["id"]) ) return [schema_type["task_status"] for schema_type in result] raise ValueError( "No valid statuses were found for schema {0}.".format(schema) )
[docs] def get_types(self, schema): """Return types for *schema*.""" # Task need to be handled separately. if schema == "Task": return self["_task_type_schema"]["types"][:] else: try: EntityTypeClass = self.session.types[schema] except KeyError: raise ValueError("Schema {0} does not exist.".format(schema)) object_type_id_attribute = EntityTypeClass.attributes.get("object_type_id") try: object_type_id = object_type_id_attribute.default_value except AttributeError: raise ValueError("Schema {0} does not have types.".format(schema)) for _schema in self["_schemas"]: if _schema["type_id"] == object_type_id: result = self.session.query( "select task_type from SchemaType " "where schema_id is {0}".format(_schema["id"]) ) return [schema_type["task_type"] for schema_type in result] raise ValueError("No valid types were found for schema {0}.".format(schema))