A simple task planner capable of:

Note: pytaskplan requires python2.3 for the cvs module support.

Download at PyPI: pytaskplan.

Basic Instructions

  1. Edit tasks.csv, people.csv and done.csv to include all your information. See the section below on input formats for help.

  2. Run the script in the directory that has the csv files.

    python pytaskplan -t

    Generates an HTML dump of the task list.

    python pytaskplan -p

    Plans the tasks and generates a nice table of the tasks allocated by week and person.

    python pytaskplan -g

    Plan the tasks and generate a pretty Gantt chart of their allocations over time and to people.

    See python pytaskplan -h for more usage help and info.

    The script will generate an HTML file for each of the output types (task.html, plan.html and gantt.html).

Input Formats

All input files are CSV format. Commas separate fields. If you need to put a comma in a field, then surround the field in "double quotes".

Blank lines are ignored.

The actual results of running the samples below are available as a task list, task plan and gantt chart.

tasks.csv

Each line contains:

id
Unique number for the task.
group
Label that groups a number of tasks - is added to the task label in displays. Helps me organise task input. Not used for anything else yet.
task
Label for the task.
effort
Number of days this task will take. An entry with 0 effort is regarded as a milestone. These are displayed in a special column in the plan, and may be used as dependencies.
skill
Either a skill or a person who is required to perform the task
depends
A colon ":" separated list of task ids that must be performed before this task may be performed.

For example (a sample from one of my projects):

id,  group,     task,                      skill,   effort, depends
1,   Core,      Outline requirements,      Rachel,  5,
2,   Core,      Basic functional spec,     Rachel,  10,     1

10,  Database,  Define data model,         dba,     5,      2
11,  Database,  Plan database,             dba,     5,      10
12,  Database,  Implement store 1,         dba,     5,      11

20,  Logic,     Component 1,               dev,     5,      2
21,  Logic,     Component 2,               dev,     7,      20
22,  Logic,     Component 3,               dev,     10,     20
23,  Logic,     Component 4,               dev,     5,      21

40,  Frontend,  Design interface,          web,     5,      2
41,  Frontend,  Component 1,               web,     5,      40:20
42,  Frontend,  Component 2,               web,     5,      40:21
43,  Frontend,  Component 3,               web,     5,      40:22
44,  Frontend,  Component 4,               web,     5,      40:23

50,  Milestone, Milestone 1,               ,        0,      12:23:44

14,  Database,  Optmisation,               dba,     5,      50

24,  Support,   Supporting code,           dev,     10,     50

45,  Frontend,  User walkthrough,          web,     15,     50
46,  Frontend,  Rework based on feedback,  web,     10,     45

people.csv

Each line contains:

name
The name of the person
skills
A colon ":" separated list of skills the person has. Same labels as in the tasks CSV.
colour
An HTML-compatible colour specification. It could be a colour name, or a hex RGB colour spec (ie. #FFF for white, #F00 for red, ...)

For example:

name,    skills,      colour
Fred,    web:dev,     red
Rachel,  web:dba:dev, green
Nicole,  dba,         blue

done.csv

Contains a list of actual activities that have taken place (or are expected to take place) during the plan. Each line contains:

week
The week number that the activity took place.
day
The first day of the activity.
numdays
The number of days the activity took.
who
The name of the person performing the activity.
activity

The actual activity that took place. Can take one of two forms. The first is "task:N" where N is a task id. This anchors at least part of the task to the day(s) specified (and to the person specified).

The other form is an arbitrary label like "Public Holday" or "Gone Fishing". This is used to indicate that the person is not available for scheduling during the day(s) indicated.

For exmaple (one week into our project):

week, day,numdays,who,     activity
 1,   0,  1,      Rachel,  Public Holiday
 1,   0,  1,      Nicole,  Public Holiday
 1,   0,  1,      Fred,    Public Holiday

 5,   2,  3,      Rachel,  Zope 3 Sprint
 5,   2,  3,      Fred,    Zope 3 Sprint

 4,   0,  5,      Nicole,  Leave
 5,   0,  5,      Nicole,  Leave

 4,   0,  5,      Fred,    Leave

License

Copyright (c) 2004 Richard Jones (richard at mechanicalcat)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.