Source code for ftrack_api.entity.note

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

import warnings
from builtins import object
import ftrack_api.entity.base


[docs]class Note(ftrack_api.entity.base.Entity): '''Represent a note.'''
[docs] def create_reply( self, content, author ): '''Create a reply with *content* and *author*. .. note:: This is a helper method. To create replies manually use the standard :meth:`Session.create` method. ''' reply = self.session.create( 'Note', { 'author': author, 'content': content } ) self['replies'].append(reply) return reply
[docs]class CreateNoteMixin(object): '''Mixin to add create_note method on entity class.'''
[docs] def create_note( self, content, author, recipients=None, category=None, labels=None ): '''Create note with *content*, *author*. NoteLabels can be set by including *labels*. Note category can be set by including *category*. *recipients* can be specified as a list of user or group instances. ''' note_label_support = 'NoteLabel' in self.session.types if not labels: labels = [] if labels and not note_label_support: raise ValueError( 'NoteLabel is not supported by the current server version.' ) if category and labels: raise ValueError( 'Both category and labels cannot be set at the same time.' ) if not recipients: recipients = [] data = { 'content': content, 'author': author } if category: if note_label_support: labels = [category] warnings.warn( 'category argument will be removed in an upcoming version, ' 'please use labels instead.', PendingDeprecationWarning ) else: data['category_id'] = category['id'] note = self.session.create('Note', data) self['notes'].append(note) for resource in recipients: recipient = self.session.create('Recipient', { 'note_id': note['id'], 'resource_id': resource['id'] }) note['recipients'].append(recipient) for label in labels: self.session.create( 'NoteLabelLink', { 'label_id': label['id'], 'note_id': note['id'] } ) return note