stalker.models.project.Project

Inheritance diagram of stalker.models.project.Project
class stalker.models.project.Project(name=None, code=None, clients=None, repositories=None, structure=None, image_format=None, fps=25.0, is_stereoscopic=False, users=None, **kwargs)

Bases: stalker.models.entity.Entity, stalker.models.mixins.ReferenceMixin, stalker.models.mixins.StatusMixin, stalker.models.mixins.DateRangeMixin, stalker.models.mixins.CodeMixin

All the information about a Project in Stalker is hold in this class.

Project is one of the main classes that will direct the others. A project in Stalker is a gathering point.

It is mixed with ReferenceMixin, StatusMixin, DateRangeMixin and CodeMixin to give reference, status, schedule and code attribute. Please read the individual documentation of each of the mixins.

Project Users

The Project.users attribute lists the users in this project. UIs like task creation for example will only list these users as available resources for this project.

TaskJuggler Integration

Stalker uses TaskJuggler for scheduling the project tasks. The Project.to_tjp attribute generates a tjp compliant string which includes the project definition, the tasks of the project, the resources in the project including the vacation definitions and all the time logs recorded for the project.

For custom attributes or directives that needs to be passed to TaskJuggler you can use the Project.custom_tjp attribute which will be attached to the generated tjp file (inside the “project” directive).

To manage all the studio projects at once (schedule them at once please use Studio).

Repositories

New in version 0.2.13: Multiple Repositories per Project

Starting with v0.2.13 Project instances can have multiple Repositories, which allows the project files to be placed in more than one repository according to the need of the studio pipeline. One great advantage of having multiple repositories is to be able to place Published versions in to another repository which is placed on to a faster server.

Also the repositories attribute is not a read-only attribute anymore.

Clients

New in version 0.2.15: Multiple Clients per Project

It is now possible to attach multiple Client instances to one Project allowing to hold complex Projects to Client relations by using the ProjectClient.role attribute of the ProjectClient class.

Deleting a Project

Deleting a Project instance will cascade the delete operation to all the Tasks related to that particular Project and it will cascade the delete operation to TimeLogs, Versions, Links and Reviews etc.. So one can delete a Project instance without worrying about the non-project related data like Users or Departments to be deleted.

Parameters:
  • clients – The clients which the project is affiliated with. Default value is an empty list.
  • image_format (ImageFormat) – The output image format of the project. Default value is None.
  • fps (float) – The FPS of the project, it should be a integer or float number, or a string literal which can be correctly converted to a float. Default value is 25.0.
  • type (Type) – The type of the project. Default value is None.
  • structure (Structure) – The structure of the project. Default value is None
  • repositories – A list of Repository instances that the project files are going to be stored in. You can not create a project without specifying the repositories argument and passing a Repository to it. Default value is None which raises a TypeError.
  • is_stereoscopic (bool) – a bool value, showing if the project is going to be a stereo 3D project, anything given as the argument will be converted to True or False. Default value is False.
  • users – A list of Users holding the users in this project. This will create a reduced or grouped list of studio workers and will make it easier to define the resources for a Task related to this project. The default value is an empty list.
__init__(name=None, code=None, clients=None, repositories=None, structure=None, image_format=None, fps=25.0, is_stereoscopic=False, users=None, **kwargs)

Methods

__init__([name, code, clients, …])
round_time(dt) Round the given datetime object to the defaults.timing_resolution.

Attributes

active
assets returns the assets related to this project
budgets
client_role
clients
code The code name of this object.
computed_duration returns the computed_duration as the difference of computed_start and computed_end if there are computed_start and computed_end otherwise returns None
computed_end
computed_start
computed_total_seconds returns the duration as seconds
created_by The User who has created this object.
created_by_id The id of the User who has created this entity.
dailies
date_created A datetime.datetime instance showing the creation date and time of this object.
date_updated A datetime.datetime instance showing the update date and time of this object.
description Description of this object.
duration Duration of the entity.
end The date that the entity should be delivered.
entity_groups
entity_id
entity_type
fps The fps of the project.
generic_data This attribute can hold any kind of data which exists in SOM.
generic_text This attribute can hold any text.
html_class
html_style
id
image_format The ImageFormat of this project.
image_format_id
is_active predicate for Project.active attribute
is_stereoscopic True if the project is a stereoscopic project
metadata
name Name of this object
nice_name Nice name of this object.
notes All the Notess attached to this entity.
open_tickets The list of open Tickets in this project.
pages
percent_complete returns the percent_complete based on the total_logged_seconds and schedule_seconds of the root tasks.
plural_class_name the plural name of this class
project_id
query
references A list of Link instances given as a reference for this entity.
repositories
repositories_proxy The Repository that this project files should reside.
repository compatibility attribute for pre v0.2.13 systems.
root_tasks returns a list of Tasks which have no parent
scenes
schedule_seconds returns an integer showing the total amount of schedule timing of the in child tasks in seconds
sequences returns the sequences related to this project
shots returns the shots related to this project
start The date that this entity should start.
status The current status of the object.
status_id
status_list
status_list_id
structure The structure of the project.
structure_id
tags A list of tags attached to this object.
tasks
thumbnail
thumbnail_id
tickets
tjp_id returns TaskJuggler compatible id
to_tjp returns a TaskJuggler compatible string representing this project
total_logged_seconds returns an integer representing the total TimeLog seconds recorded in child tasks.
total_seconds returns the duration as seconds
type The type of the object.
type_id The id of the Type of this entity.
updated_by The User who has updated this object.
updated_by_id The id of the User who has updated this entity.
user_role
users
assets

returns the assets related to this project

code

The code name of this object.

It accepts strings. Can not be None.

computed_duration

returns the computed_duration as the difference of computed_start and computed_end if there are computed_start and computed_end otherwise returns None

computed_total_seconds

returns the duration as seconds

created_by

The User who has created this object.

created_by_id

The id of the User who has created this entity.

date_created

A datetime.datetime instance showing the creation date and time of this object.

date_updated

A datetime.datetime instance showing the update date and time of this object.

description

Description of this object.

duration

Duration of the entity.

It is a datetime.timedelta instance. Showing the difference of the start and the end. If edited it changes the end attribute value.

end

The date that the entity should be delivered.

The end can be set to a datetime.timedelta and in this case it will be calculated as an offset from the start and converted to datetime.datetime again. Setting the start to a date passing the end will also set the end, so the timedelta between them is preserved, default value is 10 days

fps

The fps of the project.

It is a float value, any other types will be converted to float. The default value is 25.0.

generic_data

This attribute can hold any kind of data which exists in SOM.

generic_text

This attribute can hold any text.

image_format

The ImageFormat of this project.

This value defines the output image format of the project, should be an instance of ImageFormat.

is_active

predicate for Project.active attribute

is_stereoscopic

True if the project is a stereoscopic project

name

Name of this object

nice_name

Nice name of this object.

It has the same value with the name (contextually) but with a different format like, all the white spaces replaced by underscores (“_”), all the CamelCase form will be expanded by underscore (_) characters and it is always lower case.

notes

All the Notess attached to this entity.

It is a list of Note instances or an empty list, setting it to None will raise a TypeError.

open_tickets

The list of open Tickets in this project.

returns a list of Ticket instances which has a status of Open and created in this project.

percent_complete

returns the percent_complete based on the total_logged_seconds and schedule_seconds of the root tasks.

plural_class_name

the plural name of this class

references

A list of Link instances given as a reference for this entity.

repositories_proxy

The Repository that this project files should reside.

Should be a list of Repositoryinstances.

repository

compatibility attribute for pre v0.2.13 systems. Returns the first repository instance in the project.repositories attribute if there is any or None

root_tasks

returns a list of Tasks which have no parent

classmethod round_time(dt)

Round the given datetime object to the defaults.timing_resolution.

Uses stalker.defaults.timing_resolution as the closest number of seconds to round to.

Parameters:dt (datetime.datetime) – datetime.datetime object, defaults to now.

Based on Thierry Husson’s answer in Stackoverflow

Stackoverflow : http://stackoverflow.com/a/10854034/1431079

schedule_seconds

returns an integer showing the total amount of schedule timing of the in child tasks in seconds

sequences

returns the sequences related to this project

shots

returns the shots related to this project

start

The date that this entity should start.

Also effects the DateRangeMixin.end attribute value in certain conditions, if the DateRangeMixin.start is set to a time passing the DateRangeMixin.end it will also offset the DateRangeMixin.end to keep the DateRangeMixin.duration value fixed. DateRangeMixin.start should be an instance of class:datetime.datetime and the default value is datetime.datetime.now(pytz.utc)()

status

The current status of the object.

It is a Status instance which is one of the Statuses stored in the status_list attribute of this object.

structure

The structure of the project. Should be an instance of Structure class

tags

A list of tags attached to this object.

It is a list of Tag instances which shows the tags of this object

tjp_id

returns TaskJuggler compatible id

to_tjp

returns a TaskJuggler compatible string representing this project

total_logged_seconds

returns an integer representing the total TimeLog seconds recorded in child tasks.

total_seconds

returns the duration as seconds

type

The type of the object.

It is a Type instance with a proper Type.target_entity_type.

type_id

The id of the Type of this entity. Mainly used by SQLAlchemy to create a Many-to-One relates between SimpleEntities and Types.

updated_by

The User who has updated this object.

updated_by_id

The id of the User who has updated this entity.