Source code for jukeboxcore.gui.djitemdata

"""This module holds :class:`jukeboxcore.gui.treemodel.ItemData` subclasses that represent data in our database, e.g. a Project, Sequence etc"""
from PySide import QtCore

from jukeboxcore.gui.main import dt_to_qdatetime
from jukeboxcore.gui.treemodel import ItemData


[docs]def prj_name_data(project, role): """Return the data for name :param project: the project that holds the data :type project: :class:`jukeboxcore.djadapter.models.Project` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the name :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return project.name
[docs]def prj_short_data(project, role): """Return the data for short :param project: the project that holds the data :type project: :class:`jukeboxcore.djadapter.models.Project` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the short :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return project.short
[docs]def prj_path_data(project, role): """Return the data for path :param project: the project that holds the data :type project: :class:`jukeboxcore.djadapter.models.Project` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the path :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return project.path
[docs]def prj_created_data(project, role): """Return the data for created :param project: the project that holds the data :type project: :class:`jukeboxcore.djadapter.models.Project` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the created :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return project.date_created.isoformat(' ')
[docs]def prj_semester_data(project, role): """Return the data for semester :param project: the project that holds the data :type project: :class:`jukeboxcore.djadapter.models.Project` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the semester :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return project.semester
[docs]def prj_fps_data(project, role): """Return the data for fps :param project: the project that holds the data :type project: :class:`jukeboxcore.djadapter.models.Project` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the fps :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return str(project.framerate)
[docs]def prj_resolution_data(project, role): """Return the data for resolution :param project: the project that holds the data :type project: :class:`jukeboxcore.djadapter.models.Project` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the resolution :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return '%s x %s' % (project.resx, project.resy)
[docs]def prj_scale_data(project, role): """Return the data for scale :param project: the project that holds the data :type project: :class:`jukeboxcore.djadapter.models.Project` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the scale :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return project.scale
[docs]def prj_status_data(project, role): """Return the data for status :param project: the project that holds the data :type project: :class:`jukeboxcore.djadapter.models.Project` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the status :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return project.status
[docs]class ProjectItemData(ItemData): """Item Data for :class:`jukeboxcore.gui.treemodel.TreeItem` that represents a project """ def __init__(self, project): """Constructs a new item data for the project :param project: the project to represent :type project: :class:`jukeboxcore.djadapter.models.Project` :raises: None """ super(ProjectItemData, self).__init__() self._project = project columns = [prj_name_data, prj_short_data, prj_path_data, prj_created_data, prj_semester_data, prj_status_data, prj_resolution_data, prj_fps_data, prj_scale_data]
[docs] def column_count(self, ): """Return the number of columns that can be queried for data :returns: the number of columns :rtype: int :raises: None """ return len(self.columns)
[docs] def data(self, column, role): """Return the data for the specified column and role The column addresses one attribute of the data. :param column: the data column :type column: int :param role: the data role :type role: QtCore.Qt.ItemDataRole :returns: data depending on the role :rtype: :raises: None """ return self.columns[column](self._project, role)
[docs] def internal_data(self, ): """Return the project :returns: the project :rtype: :class:`jukeboxcore.djadapter.models.Project` :raises: None """ return self._project
[docs]def seq_name_data(seq, role): """Return the data for name :param seq: the sequence that holds the data :type seq: :class:`jukeboxcore.djadapter.models.Sequence` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the name :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return seq.name
[docs]def seq_description_data(seq, role): """Return the data for description :param seq: the sequence that holds the data :type seq: :class:`jukeboxcore.djadapter.models.Sequence` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the description :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return seq.description
[docs]class SequenceItemData(ItemData): """Item Data for :class:`jukeboxcore.gui.treemodel.TreeItem` that represents a sequence """ def __init__(self, sequence): """Constructs a new item data for the sequence :param sequence: the sequence to represent :type sequence: :class:`jukeboxcore.djadapter.models.Sequence` :raises: None """ super(SequenceItemData, self).__init__() self._sequence = sequence columns = [seq_name_data, seq_description_data]
[docs] def column_count(self, ): """Return the number of columns that can be queried for data :returns: the number of columns :rtype: int :raises: None """ return len(self.columns)
[docs] def data(self, column, role): """Return the data for the specified column and role The column addresses one attribute of the data. :param column: the data column :type column: int :param role: the data role :type role: QtCore.Qt.ItemDataRole :returns: data depending on the role :rtype: :raises: None """ return self.columns[column](self._sequence, role)
[docs] def internal_data(self, ): """Return the sequence :returns: the sequence :rtype: :class:`jukeboxcore.djadapter.models.Sequence` :raises: None """ return self._sequence
[docs]def shot_name_data(shot, role): """Return the data for name :param shot: the shot that holds the data :type shot: :class:`jukeboxcore.djadapter.models.Shot` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the name :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return shot.name
[docs]def shot_description_data(shot, role): """Return the data for description :param shot: the shot that holds the data :type shot: :class:`jukeboxcore.djadapter.models.Shot` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the description :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return shot.description
[docs]def shot_duration_data(shot, role): """Return the data for duration :param shot: the shot that holds the data :type shot: :class:`jukeboxcore.djadapter.models.Shot` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the duration :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return str(shot.duration)
[docs]def shot_start_data(shot, role): """Return the data for startframe :param shot: the shot that holds the data :type shot: :class:`jukeboxcore.djadapter.models.Shot` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the start :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return str(shot.startframe)
[docs]def shot_end_data(shot, role): """Return the data for endframe :param shot: the shot that holds the data :type shot: :class:`jukeboxcore.djadapter.models.Shot` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the end :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return str(shot.endframe)
[docs]class ShotItemData(ItemData): """Item Data for :class:`jukeboxcore.gui.treemodel.TreeItem` that represents a shot """ def __init__(self, shot): """Constructs a new item data for the shot :param shot: the shot to represent :type shot: :class:`jukeboxcore.djadapter.models.Shot` :raises: None """ super(ShotItemData, self).__init__() self._shot = shot columns = [shot_name_data, shot_description_data, shot_duration_data, shot_start_data, shot_end_data]
[docs] def column_count(self, ): """Return the number of columns that can be queried for data :returns: the number of columns :rtype: int :raises: None """ return len(self.columns)
[docs] def data(self, column, role): """Return the data for the specified column and role The column addresses one attribute of the data. :param column: the data column :type column: int :param role: the data role :type role: QtCore.Qt.ItemDataRole :returns: data depending on the role :rtype: :raises: None """ return self.columns[column](self._shot, role)
[docs] def internal_data(self, ): """Return the shot :returns: the shot :rtype: :class:`jukeboxcore.djadapter.models.Shot` :raises: None """ return self._shot
[docs]def task_name_data(task, role): """Return the data for name :param task: the task that holds the data :type task: :class:`jukeboxcore.djadapter.models.Task` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the name :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return task.name
[docs]def task_short_data(task, role): """Return the data for short name :param task: the task that holds the data :type task: :class:`jukeboxcore.djadapter.models.Task` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the short name :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return task.short
[docs]class TaskItemData(ItemData): """Item Data for :class:`jukeboxcore.gui.treemodel.TreeItem` that represents a task """ def __init__(self, task): """Constructs a new item data for the task :param task: the task to represent :type task: :class:`jukeboxcore.djadapter.models.Task` :raises: None """ super(TaskItemData, self).__init__() self._task = task columns = [task_name_data, task_short_data]
[docs] def column_count(self, ): """Return the number of columns that can be queried for data :returns: the number of columns :rtype: int :raises: None """ return len(self.columns)
[docs] def data(self, column, role): """Return the data for the specified column and role The column addresses one attribute of the data. :param column: the data column :type column: int :param role: the data role :type role: QtCore.Qt.ItemDataRole :returns: data depending on the role :rtype: :raises: None """ return self.columns[column](self._task, role)
[docs] def internal_data(self, ): """Return the task :returns: the task :rtype: :class:`jukeboxcore.djadapter.models.Task` :raises: None """ return self._task
[docs]def taskfile_path_data(file_, role): """Return the data for path :param file_: the file that holds the data :type file_: :class:`jukeboxcore.djadapter.models.File` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the path :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: return file_.path
[docs]def taskfile_user_data(file_, role): """Return the data for user :param file_: the file that holds the data :type file_: :class:`jukeboxcore.djadapter.models.File` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the user :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: return file_.user.username
[docs]def taskfile_created_data(file_, role): """Return the data for created date :param file_: the file that holds the data :type file_: :class:`jukeboxcore.djadapter.models.File` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the created date :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: dt = file_.date_created return dt_to_qdatetime(dt)
[docs]def taskfile_updated_data(file_, role): """Return the data for updated date :param file_: the file that holds the data :type file_: :class:`jukeboxcore.djadapter.models.File` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the updated date :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: dt = file_.date_updated return dt_to_qdatetime(dt)
[docs]def taskfile_version_data(file_, role): """Return the data for version :param file_: the file that holds the data :type file_: :class:`jukeboxcore.djadapter.models.File` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the version :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return 'v%03i' % file_.version
[docs]def taskfile_rtype_data(file_, role): """Return the data for rtype :param file_: the file that holds the data :type file_: :class:`jukeboxcore.djadapter.models.File` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the releasetype :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return file_.releasetype
[docs]class TaskFileItemData(ItemData): """Item Data for :class:`jukeboxcore.gui.treemodel.TreeItem` that represents a taskfile """ def __init__(self, taskfile): """Constructs a new item data for the taskfile :param taskfile: the taskfile to represent :type taskfile: :class:`jukeboxcore.djadapter.models.TaskFile` :raises: None """ super(TaskFileItemData, self).__init__() self._taskfile = taskfile columns = [taskfile_version_data, taskfile_rtype_data, taskfile_path_data, taskfile_user_data, taskfile_created_data, taskfile_updated_data]
[docs] def column_count(self, ): """Return the number of columns that can be queried for data :returns: the number of columns :rtype: int :raises: None """ return len(self.columns)
[docs] def data(self, column, role): """Return the data for the specified column and role The column addresses one attribute of the data. :param column: the data column :type column: int :param role: the data role :type role: QtCore.Qt.ItemDataRole :returns: data depending on the role :rtype: :raises: None """ return self.columns[column](self._taskfile, role)
[docs] def internal_data(self, ): """Return the taskfile :returns: the taskfile :rtype: :class:`jukeboxcore.djadapter.models.TaskFile` :raises: None """ return self._taskfile
[docs]def atype_name_data(atype, role): """Return the data for name :param atype: the assettype that holds the data :type atype: :class:`jukeboxcore.djadapter.models.Atype` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the name :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return atype.name
[docs]def atype_description_data(atype, role): """Return the data for description :param atype: the assettype that holds the data :type atype: :class:`jukeboxcore.djadapter.models.Atype` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the description :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return atype.description
[docs]class AtypeItemData(ItemData): """Item Data for :class:`jukeboxcore.gui.treemodel.TreeItem` that represents an assettype """ def __init__(self, atype): """Constructs a new item data for the assettype :param atype: the assettype to represent :type atype: :class:`jukeboxcore.djadapter.models.Atype` :raises: None """ super(AtypeItemData, self).__init__() self._atype = atype columns = [atype_name_data, atype_description_data]
[docs] def column_count(self, ): """Return the number of columns that can be queried for data :returns: the number of columns :rtype: int :raises: None """ return len(self.columns)
[docs] def data(self, column, role): """Return the data for the specified column and role The column addresses one attribute of the data. :param column: the data column :type column: int :param role: the data role :type role: QtCore.Qt.ItemDataRole :returns: data depending on the role :rtype: :raises: None """ return self.columns[column](self._atype, role)
[docs] def internal_data(self, ): """Return the assettype :returns: the shot :rtype: :class:`jukeboxcore.djadapter.models.Atype` :raises: None """ return self._atype
[docs]def asset_name_data(asset, role): """Return the data for name :param asset: the asset that holds the data :type asset: :class:`jukeboxcore.djadapter.models.Asset` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the name :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return asset.name
[docs]def asset_description_data(asset, role): """Return the data for description :param asset: the asset that holds the data :type asset: :class:`jukeboxcore.djadapter.models.Asset` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the description :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole: return asset.description
[docs]class AssetItemData(ItemData): """Item Data for :class:`jukeboxcore.gui.treemodel.TreeItem` that represents an asset """ def __init__(self, asset): """Constructs a new item data for the asset :param asset: the asset to represent :type asset: :class:`jukeboxcore.djadapter.models.Asset` :raises: None """ super(AssetItemData, self).__init__() self._asset = asset columns = [asset_name_data, asset_description_data]
[docs] def column_count(self, ): """Return the number of columns that can be queried for data :returns: the number of columns :rtype: int :raises: None """ return len(self.columns)
[docs] def data(self, column, role): """Return the data for the specified column and role The column addresses one attribute of the data. :param column: the data column :type column: int :param role: the data role :type role: QtCore.Qt.ItemDataRole :returns: data depending on the role :rtype: :raises: None """ return self.columns[column](self._asset, role)
[docs] def internal_data(self, ): """Return the asset :returns: the asset :rtype: :class:`jukeboxcore.djadapter.models.Asset` :raises: None """ return self._asset
[docs]def note_content_data(note, role): """Return the data for content :param note: the note that holds the data :type note: :class:`jukeboxcore.djadapter.models.Note` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the created date :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: return note.content
[docs]def note_user_data(note, role): """Return the data for user :param note: the note that holds the data :type note: :class:`jukeboxcore.djadapter.models.Note` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the created date :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: return note.user.username
[docs]def note_created_data(note, role): """Return the data for created date :param note: the note that holds the data :type note: :class:`jukeboxcore.djadapter.models.Note` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the created date :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: dt = note.date_created return dt_to_qdatetime(dt)
[docs]def note_updated_data(note, role): """Return the data for updated date :param note: the note that holds the data :type note: :class:`jukeboxcore.djadapter.models.Note` :param role: item data role :type role: QtCore.Qt.ItemDataRole :returns: data for the updated date :rtype: depending on role :raises: None """ if role == QtCore.Qt.DisplayRole or role == QtCore.Qt.EditRole: dt = note.date_updated return dt_to_qdatetime(dt)
[docs]class NoteItemData(ItemData): """Item data for :class:`jukeboxcore.gui.treemodel.TreeITem` that represents a note. """ def __init__(self, note): """Constructs a new item data for the note :param note: the note to represent :type note: :class:`jukeboxcore.djadapter.models.Note` :raises: None """ super(NoteItemData, self).__init__() self._note = note columns = [note_content_data, note_user_data, note_created_data, note_updated_data]
[docs] def column_count(self, ): """Return the number of columns that can be queried for data :returns: the number of columns :rtype: int :raises: None """ return len(self.columns)
[docs] def data(self, column, role): """Return the data for the specified column and role The column addresses one attribute of the data. :param column: the data column :type column: int :param role: the data role :type role: QtCore.Qt.ItemDataRole :returns: data depending on the role :rtype: :raises: None """ return self.columns[column](self._note, role)
[docs] def internal_data(self, ): """Return the note :returns: the note :rtype: :class:`jukeboxcore.djadapter.models.Note` :raises: None """ return self._note
[docs] def flags(self, column): """Return the item flags for the item This returns editable True to enable custom editors. :returns: the item flags :rtype: QtCore.Qt.ItemFlags :raises: None """ return QtCore.Qt.ItemIsEditable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable