Let's see if I understand your proposal correctly: Workflow and Step act as 
template and are used to define the structure of different workflows. 
Project and Task 'implement' the template and are used as for actual work 
flows. So I formulate things that are fixed using the template and for the 
rest I use Project and Task models.

I adapted your code a bit: For each Step one can specify an assignee and a 
deadline that act as suggestions for the same data of the task model. So 
when a task is created, it is at first filled using the information in the 
Step model. In addition I added some more information to the Project.

from django.db import models
from django.contrib.auth.models import User

class Workflow(models.Model):
    name = models.charfield(max_length = 200)
    description = models.TextField()

class Step(models.Model):
    workflow = models.ForeignKeyField(Workflow)
    name = models.charfield()
    order = models.SmallIntegerField()
    taskdescription = models.TextField()

    # suggestions for deadline / assignee
    deadline = # implement as number of days from project.start_date or as 
number of days from start of current step. How?
    assigned_to = models.ForeignKeyField(User, blank=True, null=True)

class Project(models.Model):
    name = models.charfield()
    workflow = models.ForeignKeyField(Workflow)
    
    creation_date = models.DatetimeField(auto_now_add = True)
    creator = models.ForeignKeyField(User)

    start_date = models.DatetimeField() # in case start of project differs 
from creation date, default: creation date

class Task(models.Model):
    project = models.ForeignKeyField(Project)
    step = models.ForeignKeyField(Step)
    deadline = models.DatetimeField() # initially computed from 
project.start_date, may be postponed by the user
    assigned_to  = models.ForeignKeyField(User, blank=True, null=True) # 
initially as given by Step, may be changed later
    start = models.DatetimeField(blank=True, null=True)                     
                   
    finish = models.DatetimeField(blank=True, null=True)                   
                    





-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/b940920b-31b3-42d2-99cb-0ba3cbc1d1f7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to