Bases: stalker.models.entity.Entity, stalker.models.mixins.DateRangeMixin, stalker.models.mixins.WorkingHoursMixin
Manage all the studio information at once.
With Stalker you can manage all you Studio data by using this class. Studio knows all the projects, all the departments, all the users and every thing about the studio. But the most important part of the Studio is that it can schedule all the Projects by using TaskJuggler.
Studio class is kind of the database itself:
studio = Studio()
# simple data
studio.projects
studio.active_projects
studio.inactive_projects
studio.departments
studio.users
# project management
studio.to_tjp # a tjp representation of the studio with all
# its projects, departments and resources etc.
studio.schedule() # schedules all the active projects at once
Working Hours
In Stalker, Studio class also manages the working hours of the studio. Allowing project tasks to be scheduled to be scheduled in those hours.
Vacations
Studio wide vacations are managed by the Studio class.
Scheduling
There are a couple of attributes those become pretty interesting when used together with the Studio instance while using the scheduling part of the Studio. Please refer to the attribute documentation for each attribute:
| Parameters: |
|
|---|
Methods
| __init__([daily_working_hours, now, ...]) | |
| round_time(dt) | Round the given datetime object to the defaults.timing_resolution. |
| schedule([scheduled_by]) | Schedules all the active projects in the studio. |
| to_unit(from_timing, from_unit, to_unit[, ...]) | converts the given timing and unit to the desired unit |
| update_defaults() | updates the default values with the studio |
Attributes
| active_projects | returns all the active projects in the studio |
| computed_duration | returns the computed_duration as the difference of computed_start |
| 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. |
| daily_working_hours | a shortcut for Studio.working_hours.daily_working_hours |
| 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. |
| departments | returns all the departments in the studio |
| description | Description of this object. |
| duration | Duration of the entity. |
| end | The date that the entity should be delivered. |
| entity_id | |
| entity_type | |
| 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 | |
| inactive_projects | return all the inactive projects in the studio |
| is_scheduling | |
| is_scheduling_by | The User who is scheduling the Studio projects right now |
| is_scheduling_by_id | The id of the user who is scheduling the Studio projects right now |
| last_schedule_message | Holds the last schedule message, generally coming generated by TaskJuggler |
| last_scheduled_at | Stores the last schedule date |
| last_scheduled_by | The User who has last scheduled the Studio projects |
| last_scheduled_by_id | The id of the user who has last scheduled the Studio projects |
| metadata | A collection of Table objects and their associated schema constructs. |
| name | Name of this object |
| nice_name | Nice name of this object. |
| notes | All the Notess attached to this entity. |
| now | now getter |
| plural_class_name | the plural name of this class |
| projects | returns all the projects in the studio |
| query | ORM-level SQL construction object. |
| scheduler | scheduler getter |
| scheduling_started_at | Stores when the current scheduling is started at, it is a good measure for measuring if the last schedule is not correctly finished |
| start | The date that this entity should start. |
| studio_id | |
| tags | A list of tags attached to this object. |
| thumbnail | |
| thumbnail_id | |
| timing_resolution | The timing_resolution of this object. |
| tjp_id | returns TaskJuggler compatible id |
| to_tjp | converts the studio to a tjp representation |
| 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. |
| users | returns all the users in the studio |
| vacations | returns all Vacations which doesn’t have a User defined |
| weekly_working_days | returns the WorkingHours.weekly_working_hours |
| weekly_working_hours | returns the WorkingHours.weekly_working_hours |
| working_hours | |
| yearly_working_days | returns the yearly working days |
The id of the user who is scheduling the Studio projects right now
The User who is scheduling the Studio projects right now
Stores when the current scheduling is started at, it is a good measure for measuring if the last schedule is not correctly finished
Stores the last schedule date
The id of the user who has last scheduled the Studio projects
The User who has last scheduled the Studio projects
Holds the last schedule message, generally coming generated by TaskJuggler
Schedules all the active projects in the studio. Needs a Scheduler, so before calling it set a scheduler by using the scheduler attribute.
| Parameters: | scheduled_by – A User instance who is doing the scheduling. |
|---|
converts the given timing and unit to the desired unit if working_hours=True then the given timing is considered as working hours
The timing_resolution of this object.
Can be set to any value that is representable with datetime.timedelta. The default value is 1 hour. Whenever it is changed the start, end and duration values will be updated.
returns the computed_duration as the difference of computed_start and computed_end if there are computed_start and computed_end otherwise returns None
returns the duration as seconds
A datetime.datetime instance showing the creation date and time of this object.
A datetime.datetime instance showing the update date and time of this object.
Description of this object.
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.
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
This attribute can hold any kind of data which exists in SOM.
This attribute can hold any text.
Name of this object
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.
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.
the plural name of this class
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
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()
A list of tags attached to this object.
It is a list of Tag instances which shows the tags of this object
returns TaskJuggler compatible id
returns the duration as seconds
The type of the object.
It is an instance of Type with a proper Type.target_entity_type.