Previous topic

stalker.core.models.Tag

Next topic

stalker.core.models.TaskableEntity

This Page

stalker.core.models.Task

Inheritance diagram of stalker.core.models.Task

class stalker.core.models.Task(depends=None, effort=None, resources=None, is_milestone=False, priority=500, task_of=None, **kwargs)[source]

Bases: stalker.core.models.Entity, stalker.core.models.StatusMixin, stalker.core.models.ScheduleMixin

Manages Task related data.

Tasks are the smallest meaningful part that should be accomplished to complete the a Project.

In Stalker, currently these items supports Tasks:

If you want to have your own class to be taskable use the TaskMixin to add the ability to connect a Task to it.

The Task class itself is mixed with StatusMixin and ScheduleMixin. To be able to give the Task a Status and a start and end time.

Parameters:
  • priority (int) – It is a number between 0 to 1000 which defines the priority of the Task. The higher the value the higher its priority. The default value is 500.
  • resources (list of User) – The Users assigned to this Task. A Task without any resource can not be scheduled.
  • effort (datetime.timedelta) –

    The total effort that needs to be spend to complete this Task. Can be used to create an initial bid of how long this task going to take. The effort is equaly divided to the assigned resources. So if the effort is 10 days and 2 resources is assigned then the duration of the task is going to be 5 days (if both of the resources are free to work). The default value is stalker.conf.defaults.DEFAULT_TASK_DURATION.

    The effort argument defines the duration of the task. Every resource is counted equally effective and the duration will be calculated by the simple formula:

    {duration} = \frac{{effort}}{n_{resources}}

    And changing the duration will also effect the effort spend. The effort will be calculated with the formula:

    {effort} = {duration} \times {n_{resources}}

  • depends (list of Task) – A list of Tasks those this Task is dependening on.
  • milestone (bool) – A bool (True or False) value showing if this task is a milestone which doesn’t need any resource and effort.
  • task_of (SimpleEntity.) –

    A class instance which has an attribute called tasks. There is no limit in the type of the class. But it would be correct to use something derived from the SimpleEntity and mixed with TaskMixin. If you are going to use the stalker.db module than it have to be something derived from the SimpleEntity.

    Again, only classes that has been mixed with TasksMixin has the attribute called tasks. And the instance given, have to be something that is mapped to the database if you are going to use the database part of the system.

__init__(depends=None, effort=None, resources=None, is_milestone=False, priority=500, task_of=None, **kwargs)[source]

Methods

__init__(**kwargs[, depends, effort, ...])

Attributes

bookings A list of Booking instances showing who and when spent how much effort on this task.
code The code name of this object.
created_by The User who has created this object.
created_by_id
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.
depends A list of Tasks that this one is depending on.
description Description of this object.
due_date The date that the entity should be delivered.
duration The overriden duration attribute.
effort The total effort that needs to be spend to complete this Task.
entity_id
entity_type
id
is_complete A bool value showing if this task is completed or not.
is_milestone Specifies if this Task is a milestone.
name Name of this object
nice_name Nice name of this object.
notes All the Notess attached to this entity.
priority
resources The list of stalker.core.models.Users instances assigned to this Task.
reviews All the Reviews about this Entity.
start_date The date that this entity should start.
status
status_list
status_list_id
tags A list of tags attached to this object.
task_id
task_of An object that this Task is a part of.
task_of_id
type The type of the object.
type_id
updated_by The User who has updated this object.
updated_by_id
versions A list of Version instances showing the files created for this task.
bookings

A list of Booking instances showing who and when spent how much effort on this task.

versions

A list of Version instances showing the files created for this task.

is_milestone

Specifies if this Task is a milestone.

Milestones doesn’t need any duration, any effort and any resources. It is used to create meaningfull dependencies between the critical stages of the project.

is_complete

A bool value showing if this task is completed or not.

There is a good article about why not to use an attribute called percent_complete to measure how much the task is completed.

depends

A list of Tasks that this one is depending on.

A CircularDependencyError will be raised when the task dependency creates a circlar dependency which means it is not allowed to create a dependency for this Task which is depending on another one which in some way depends to this one again.

resources

The list of stalker.core.models.Users instances assigned to this Task.

task_of

An object that this Task is a part of.

The assigned object should have an attribute called tasks. Any object which is not inherited from TaskableEntity thus doesn’t have a tasks attribute which is mapped to the Tasks.task_of attribute will raise an AttributeError.

effort

The total effort that needs to be spend to complete this Task.

Can be used to create an initial bid of how long this task going to take. The effort is equaly divided to the assigned resources. So if the effort is 10 days and 2 resources is assigned then the duration of the task is going to be 5 days (if both of the resources are free to work). The default value is stalker.conf.defaults.DEFAULT_TASK_DURATION.

The effort defines the duration of the task. Every resource is counted equally effective and the duration will be calculated by the simple formula:

{duration} = \frac{{effort}}{n_{resources}}

And changing the duration will also effect the effort spend. The effort will be calculated with the formula:

{effort} = {duration} \times {n_{resources}}

duration

The overriden duration attribute.

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

code

The code name of this object.

It accepts string or unicode values and any other kind of objects will be converted to string. In any update to the name attribute the code also will be updated. If the code is not initialized or given as None, it will be set to the uppercase version of the nice_name attribute. Setting the code attribute to None will reset it to the default value. The default value is the upper case form of the nice_name.

created_by

The User who has created this object.

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.

due_date

The date that the entity should be delivered.

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

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.

There is also the code attribute which is simply the upper case form of nice_name if it is not defined differently (i.e set to another value).

notes

All the Notess attached to this entity.

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

reviews

All the Reviews about this Entity.

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

start_date

The date that this entity should start.

Also effects the due_date attribute value in certain conditions, if the start_date is set to a time passing the due_date it will also offset the due_date to keep the duration value fixed. start_date should be an instance of class:datetime.date and the default value is datetime.date.today()

tags

A list of tags attached to this object.

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

type

The type of the object.

It is an instance of Type with a proper target_entity_type.

updated_by

The User who has updated this object.