=========
 projman
=========

Projman is a tool to help manage projects.

TODO: add complete list of functionnalities.


Definitions
***********

XML Views
----------

projman can report about a project by generating XML reports to be later
transformed into HTML or PDF.

TBD: when a task is partly done, it currently appears in tables for its full
cost and not the remaining cost. Is this the desired behavior ?


Projman DTD
-----------

what is a duration ? a number of days to work on a task ?


Pygantt DTD
-----------

what is a duration ? a number of days to work on a task ?


Pygantt conversion
------------------

if a pygantt task has two resources, it comes up in projman has
two the original duration. is this correct ?


Timestep
--------

what scale to use on diagrams ? days/weeks/months/quarters/semesters/year
instead of current "timestep" ?



Modle structure projet
***********************

Ce document prsente les diffrents objets qui seront utiliss pour la reprsentation d'une structure de projet dans Pygantt et Projman.

Milestone(VNode)
----------------

Cet objet dcrit un type de tche minimal, le jalon.

Attributs :

    * id : identifiant de la tche
    * title : nom de la tche
    * task_constraints : contraintes de tches
    * date_constraints : contraintes de dates

Mthodes :

Task(Milestone)
---------------

Cet objet dcrit toutes tches composant un projet. Les diffrences avec la prcedente version de Pygantt se situent dans la notion de description de projet. PGTask tel qu'il est dfini ci-dessous a pour fonction de dcrire un projet par les tches qui le composent et les contraintes en terme de dates, de priorits et de ressources qu'exige ce projet. La notion de ressource utilise disparait pour tre intgre  l'objet PGResource.

Attributs :

    * priority : priorit de la tche
    * duration : dure initialement prvue pour cette tche
    * progress : pourcentage de progression de la tche
    * resource_constraints : contraintes de ressource (une liste de triplet, chaque triplet reprsente le type de ressource exige, l'identifiant de la ressource affecte et le pourcentage d'usage de la ressource ncessaire pour cette tche)

Mthodes :

    * is_finished(self) : boolean # teste si une tche est termine
    * get_task(self, task_id) : PGTask # retourne l'objet tche associ  task_id
    * add_task_constraint(self, type, task_id) : # ajoute une contrainte de tche
    * add_date_constraint(self, type, date) : # ajoute une contrainte de date
    * add_resource_contraint(self, type, usage) : # ajoute une contrainte de ressource
    * relative_duration(self) : int # retourne une estimation du nombre de jours restants
    * get_status(self): string # retourne le statut de la tche (ready, in-progress, todo, done)
    * priorities_as_constraints(self) : # transforme les priorits en contrainte de tche de type begin-after-begin

Project(Task)
-------------

Cet objet dcrit la tche parent dans l'arborescence d'un projet. Il permet d'accder aux ressources que l'on peut affecter aux tches du projet.

Attributs:

    * resources : dictionnaire des ressources disponibles pour le projet indexes par type

Mthodes :

    * get_resource(self, r_id) : PGResource # retourne la ressource ayant l'identifiant r_id
    * get_resources(self, type) : [] # retourne la liste des ressources ayant le type exig
    * add_resource(self, resource) : # ajoute resource  la liste des ressources affectes au projet


Modle structure ressources
***************************

Ce document prsente les diffrents objets qui seront utiliss pour la reprsentation d'une structure de ressources dans Pygantt et Projman.

Resource
--------

Cette version propose un modle de ressource qui intgre la notion d'occupation des ressources via l'attribut allocations qui permet de savoir  quelle tche sont affectes les ressources et le pourcentage d'utilisation de la resource pour chaque tche affecte.

Attributs:

    * id : identifiant de la ressource
    * name : nom de la ressource
    * type : type de la ressource
    * timetable : calendrier associ  la ressource

Mthodes :

    * percent_usage_on(self) : # total du poucentage d'utilisation de la ressource
    * tasks_number_on(self) : # nombre de tches affectes  la ressource
    * work_on(self, datetime) : boolean # teste si la ressource est disponible d'aprs son timetable
    * is_busy(self) : boolean # retourne vrai si le ressource est utilise  plus de 100%
    * percent_free(self) : int # retourne le pourcentage de libert d'une ressource

TimeTable
---------

Cet objet dcrit le calendrier des disponibilits.

Attributs:

    * id : identifiant du calendrier
    * name : nom du calendrier
    * inherits : identifiant du calendrier dont l'objet courant hrite
    * onweekend : {} dictionnaire des jours de la semaine usuelle pour dfinir les jours de weekend et les jours de travail
    * aholidays : [] # liste des jours fris (date relative mm/jj)
    * onholidays : [] # liste des priodes de vacances [(datedebut, datefin)]
    * start_on : date de dbut du calendrier
    * stop_on : date de fin du calendrier

Mthodes:

    * add_timeoff(self, begindate, endate) : # ajoute une priode de vacances  la timetable
    * is_available(self, datetime) : boolean # retourne vrai si datetime n'est pas un jour d'indisponibilit
    * add_dayoff(self, type, date) : # ajoute un jour d'indisponibilit dans ce calendrier


Modle de structure activit
****************************

Ce modle dcrit l'ensemble des activits enregistres, une srie de rapports faits par les ressources pour rsumer leurs occupations.

Report
------

Cet objet dcrit un rapport d'activit d'une ressource.

Attributs :

    * begin : date de dbut de l'activit enregistre
    * end : date de fin de dbut de l'activit enregistre
    * tasks : tche sur laquelle l'activit est enregistre associe au pourcentage du temps pass sur cette tche {task_id:percentage_used}
    * res_id : ressource qui dclare son activit

Mthodes :

    * contains(self, datetime) : boolean # retourne vrai si datetime est contenu dans l'intervalle de temps entre begin et end
    * duration(self, futur=None) : int # retourne le nombre de jour pour lequels une activit a t enregistre

ReportsSet
----------

Cet objet dcrit l'ensemble des activits enregistres pour un projet.

Attributs :

    * reports : liste des Report associs  un PGProjet

Mthodes :

    * get_activities(self, res_id) : [] # retourne la liste des quadruplets (begin, end, task_id, percentage_used) enregistrs pour la ressource res_id
    * get_used_resources(self, task_id) : [] # retourne l'ensemble des ressources qui ont t utilises par cette tche


taskcoach

cousin trs loign de projman

L'adresse du lien est : http://members.chello.nl/f.niessink/

zepp

L'adresse du lien est : http://zepp.zeomega.com/
