Здравствуйте, мне необходимо сделать приложение для управления задачами, в этом приложении задачи будут разделены на проекты, в каждом проекте будут доступные статусы. В зависимости от проекта,текущего статуса и принадлежности к группе(или пользователю) будут доступны (чтение,запись,удаление,смена статуса не некоторые доступные статусы связанные с этим проектом) Основную сложность вызывают права, не знаю сделать это моделью или использовать что нибудь для row level acl типо (django-guardian) Вот что пока получилось с моделями, подскажите и посоветуйте пожалуйста https://gist.github.com/0xdeface/1e720780c68ad60df88fdf1139ea615a П.С как в админке в модели task возаращать статусы только связанные с Project?

from django.db import models
from django.utils.timezone import now
from django.contrib.auth.models import User, Group
# Create your models here.

class Project(models.Model):
    name = models.CharField(max_length=255, verbose_name="название проекта")
    purpose = models.CharField(max_length=255, verbose_name="цель")


class Task(models.Model):
    name = models.CharField(max_length=255, verbose_name="название")
    deadline = models.DateField(default=now())
    text = models.TextField(verbose_name="описание")
    status = models.ForeignKey('ProjectStatus', related_name='tasks')
    author = models.ForeignKey(User)
    perfomer = models.ForeignKey(User)


class TaskFile(models.Model):
    file = models.FileField(upload_to='tasks')
    task = models.ForeignKey(Task, related_name='files')


class ProjectStatus(models.Model):
    status = models.CharField(verbose_name="статус", max_length=150)
    project = models.ForeignKey(Project, related_name='statuses')


actions = (
    ('r', 'can read'),
    ('w', 'can change'),
    ('d', 'can delete'),
)


class Rule(models.Model):

    project = models.ForeignKey(Project)
    user = models.ForeignKey(User)
    group = models.ForeignKey(Group)
    current = models.ForeignKey(ProjectStatus) # if null
    new = models.ForeignKey(ProjectStatus) # create new
    can_delete = models.BooleanField(default=False, verbose_name="можно удалять")
    can_read = models.BooleanField(default=False, verbose_name="можно читать")
    can_write= models.BooleanField(default=False, verbose_name="можно изменять")


# rule (1,2,2,None,In work,


def get_rules():


def perm(project_id, user, group, status=None):
    return {'statues': (1, 2, 3), 'read': True, 'change': True, 'delete': False}