View Revisions: Issue #25641

Summary 0025641: Refactor project hierarchy
Revision 2019-03-23 07:30 by cproensa
Description

I open this issue to track the changes proposed in PR :
https://github.com/mantisbt/mantisbt/pull/1480

This is a rewrite of the core logic to represent the projects/subprojects hierarchy.
A new class ProjectGraph is created to contain all the logic to build and inspect the hierarchy.
It implements a graph of relations between projects, and provides a tool to traverse this graph in the context of parents, children, inheritance.
This way, all the complexity is abstracted, and all needed details, future changes and quirks are contained in one single point, with consistent behaviour.

A number of other apis have been touched. A lot of cleaning of recurrent code that deals with project/subprojects, is now unnecessary and delegated to the hierarchy_api/graph class.

This is a work in progress, and posted for feedback.

There are still some points to clear up regarding behaviour of inheritance, disabled projects, etc. I have created some issues in the tracker as i found them. This could be a good time to discuss those and set a ruling for those scenarios.

This issue can be linked to other individual, related, issues, regarding projects/hierarchy problems and inconsistencies

Revision 2019-03-23 07:29 by cproensa
Description

I open this issue to track the changes proposed in PR :
https://github.com/mantisbt/mantisbt/pull/1480

This is a rewrite of the core logic to represent the projects/subprojects hierarchy.
A new class ProjectGraph is created to contain all the logic to build and inspect the hierarchy.
It implements a graph of relations between projects, and provides a tool to traverse this graph in the context of parents, children, inheritance.
This way, all the complexity is abstracted, and all needed details, future changes and quirks are contained in one single point, with consistent behaviour.

A number of other apis have been touched. A lot of cleaning of recurrent code that deals with project/subprojects, is now unnecessary and delegated to the hierarchy_api/graph class.

This is a work in progress, and posted for feedback.

There are still some points to clear up regarding behaviour of inheritance, disabled projects, etc. I have created some issues in the tracker as i found them. This could be a good time to discuss those and set a ruling for those scenarios.

This issue can be liked to other individual, related, issues, regarding projects/hierarchy problems and inconsistencies