Previous topic

stalker.core.models.Tag

Next topic

stalker.core.models.Type

This Page

stalker.core.models.Task

Inheritance diagram of stalker.core.models.Task

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

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

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 user 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.
  • part_of (SimpleEntity.) – A SimpleEntity instance that has this Task. Now this one creates a little hole in the system, cause not all of the SimpleEntity instances has tasks attribute. Only classes that has been mixed with TasksMixin has the attribute called tasks. But it needed to be done in this way cause Stalker is designed to be used in a relational database (although you can opt not to use one), and in the ORM of the database, possibly everything is going to be derived from the SimpleEntity and the mixed in classes are not going to have individual tables. Anyway you got the point, it needs to be something that is represented in the database.
__init__(depends=None, effort=None, resources=None, milestone=False, priority=500, part_of=None, **kwargs)[source]

Methods

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

Attributes

bookings A list of Booking objects
code The code name of this object.
complete A bool value showing if this task is completed or not.
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.
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.
milestone Specifies if this Task is a milestone.
name Name of this object
nice_name Nice name of this object.
notes All the notes about this entity.
part_of The :class:`~satlker.core.models.SimpleEntity derivative that this Task is a part of.
priority The priority of the current Task.
project A Project instance showing the
resources The list of stalker.core.models.Users instances
start_date The date that this entity should start.
status The current status index of the object.
status_list The list of statuses that this object can have.
tags A list of tags attached to this object.
type The type of the object.
updated_by The User who has updated this object.
versions A list of Version instances
bookings[source]

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

complete[source]

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[source]

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.

duration[source]

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.

effort[source]

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}}

milestone[source]

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.

resources[source]

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

part_of[source]

The :class:`~satlker.core.models.SimpleEntity derivative that this Task is a part of.

priority[source]

The priority of the current Task.

It is a number between 0 and 1000 shows how important this task is among the others.

versions[source]

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

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 notes about this entity.

It is a list of Note objects or an empty list, None will be converted to an empty list.

project

A Project instance showing the relation of this object to a Stalker Project

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()

status

The current status index of the object.

This is an integer value and shows the index of the Status object in the StatusList of this object.

status_list

The list of statuses that this object can have.

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.