Посмотрите на Roundup Issue Tracker.
Несколько лет назад, до выхода Trac, я написал несколько трекеров для поддержки пользователей и разработчиков. Настроить схему базы данных и создать новые шаблоны html-страниц очень и очень просто.
Чтобы управлять иерархическими задачами, вы в основном определяете класс задач на основе IssueClass следующим образом:
task = IssueClass(db, "task",
dependson=Multilink("task"), # here, you link tasks to other tasks
assignedto=Link("user"),
keyword=Multilink("keyword"),
priority=Link("priority"),
status=Link("status"))
В документации Roundup есть рецепт, который показывает, как создавать проблемы с «блокировщиками», что означает, что вы не можете закрыть проблему, если одна из связанных с ней проблем не закрыта:
http://www.roundup -tracker.org / Docs / customizing.html # блокирующие-вопросы, что-зависит-на-других-вопросов