Manage multiple user projects with one Trac instance
This plugin lets you easily manage multiple user projects with one Trac instance or, respectively, one Trac database (.db file).
This is not a meta project in front of several other Trac projects. It implements the idea of wiki:TracMultipleProjects/SingleEnvironment.
- Milestones and versions are assigned to their projects, and both are displayed on the roadmap.
- On the roadmap page and timeline page it is possible to apply filters to show only projects that meet certain criteria.
- Components can be assigned to all or only certain projects.
- 'New Ticket' will just offer the associated milestones, versions and components of the chosen project. This requires a new custom-ticket field 'project'.
- Restrict access to certain milestones, versions and tickets by defining members or non-members of a project.
This plugin is already running stable in production environments.
Note: The Multiple Project feature in the sense of having a meta Trac project on top of several Trac projects is discussed in T:#11025 (formerly T:#130) and the unscheduled milestone Trac topic-multiproject.
Integration with other plugins
MultiProjectBacklogPlugin integrates with this plugin allowing you to maintain project specific backlogs in your agile process.
(falkb: I'm currently not active anymore because I'm quite sufficiently satisfied with what the plugin achieves, but I'm available for hotfixes)
In testing state:
Work in progress:
Still just an idea:
Technical implementation details
This plugin adds a new resource 'project' implemented by database table:
- smp_project: a list of all defined projects
Actually, most database tables of Trac core related to resources would need a new column 'project_id'. This way tickets, components, milestones, versions or even wikis could attach to certain projects. Since a plugin just adds stuff but cannot change the core structure, it implements the new dimension 'project' not by adding a new column to each resource table but rather by adding several mapping tables smp_[resource]_project, each one mapping a certain resource to projects:
- smp_milestone_project: the association of milestones to projects
- smp_version_project: the association of versions to projects
- smp_component_project: the association of components to projects
All actions are also possible with the trac-admin script. See trac-admin <your-trac-env> project help for the list of available commands.
Add project summary and description. This is displayed on the roadmap page as follows:
Associate a milestone with a project:
- Mapping milestones and versions to a project is supported:
- via main menu item "Admin" -> "Ticket System" -> "Milestones" / "Versions".
- Another way is doing it from the Roadmap page:
- From the Roadmap Page, find the desired milestone/version and click it.
- Scroll to bottom of page and "Edit" the page. Select the project from the given combobox.
- via trac-admin project script.
- Note: "New Ticket" with a chosen project only offers milestones and versions mapped to that certain project.
Group milestones and versions on the roadmap by project, show project summary and description in the header of the project box, and display only projects chosen in the filter box:
Display only tickets in the timeline of projects chosen in the filter box (adapted from TimelineComponentFilterPlugin):
You also can include the Project Name in your Ticket Queries by adding a join to the
SELECT p.value AS __color__, id AS ticket, summary, tc.value AS 'Project-Name', -- display the Project Name in the Ticket Overview version, milestone, t.type AS type, owner, status, time AS created, changetime AS _changetime, description AS _description, reporter AS _reporter FROM ticket t LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' LEFT JOIN ticket_custom tc ON t.id = tc.ticket AND tc.name = 'project' -- join to ticket_custom and only select the Project-Name WHERE status <> 'closed' ORDER BY CAST(p.value AS integer), milestone, t.type, time
If you have any issues, create a new ticket.
Download the zipped source from here.
The current release version is V0.5.1 in the tags directory. The trunk version works but may lack some documentation.
- Add a custom ticket field 'project' in your
trac.inifile to give tickets the information to which project they belong. Milestones selection depends on that as well:
[ticket-custom] project = select project.label = Project project.value =
- Generate the plugin .egg file from sources:
python setup.py bdist_egg
- Copy the plugin to the plugins directory of your Trac installation:
cp dist/SimpleMultiProject-0.0.1-py2.6.egg /instance_trac/plugins/
- Restart Apache: after installation of this plugin Trac needs a database upgrade:
trac-admin /instance_trac/ upgrade
- Give permissions to certain users. Available permissions are:
PROJECT_SETTINGS_VIEW- you can see the list of projects with their description and their component mapping on the Admin panel
PROJECT_ADMIN- full access, you can also create and delete projects, and map to milestones, versions and components
- Since plugin version 0.4 we support project-wise restriction of resources to a subset of users (#11367). Switch on the plugin component ProjectTicketsPolicy to activate it, and add the following to your
trac.inifile:Define a comma-separated list of users or groups in 'Admin' -> 'Manage Projects' -> 'Projects' -> '<project name>' -> 'Restrict to users' to limit the access to certain projects, such as milestones, versions and tickets. For example, set
[trac] permission_policies = ProjectTicketsPolicy, ... any other ...
john, mary, group1, authenticatedto restrict to this set of users
!, bob, anonymous, group2to exclude from the project.
The plugin comes with sane default values, but if you have specific requirements you may change some configuration options.
When ExtendedVersionPlugin is installed an additional column with version information is added to the milestone table on the admin page. You may remove this column just by disabling the plugin
SmpAddExtendedVersionColumn. Use the plugin admin panel or add the following line to your configuration file:
[components] simplemultiprojectplugin.admin_filter.SmpAddExtendedVersionColumn = disabled
There are some
trac.ini options to control association of projects with milestones and components.
- Creation of milestones is only possible when a project is chosen. You may disable this behaviour by setting the following in
[simple-multi-project] milestone_without_project = True
- To ensure only a single project is associated with each milestone set the following in
[simple-multi-project] single_project_milestones = True
- Creation of versions is only possible when a project is chosen. You may disable this behaviour by setting the following in
[simple-multi-project] version_without_project = True
- To ensure only a single project is associated with each version set the following in
[simple-multi-project] single_project_versions = True
- 16229 by rjollos on 2017-02-12 02:51:49
0.5.2dev: Fix milestone progress bars too narrow on roadmap
The issue was seen with Trac 1.2.
Patch by mzeedijk.
- 15965 by rjollos on 2016-11-15 06:42:43
0.5.2dev: Fix failing tests
- 15952 by rjollos on 2016-11-11 21:37:59
0.5.2dev: Run tests using
python setup.py test
- 15523 by Cinc-th on 2016-04-30 20:18:21
SimpleMultiProjectPlugin: bumped version to V0.5.2dev.
- 15522 by Cinc-th on 2016-04-30 20:12:17
The following new features are available:
- associate projects and components using the components panel of Trac
- new plugin to add a column to the milestone table with version information if ExtendedVersionPlugin is installed and enabled
- allow hiding of completed milestones on milestone admin page
- allow filtering of milestones by project on milestone admin page
- allow hiding of completed versions on version admin page
- allow filtering of versions by project on version admin page
The following bugs were fixed:
- UnicodeError: source returned bytes, but no encoding specified when using Genshi 0.7
- IndexError: list index out of range
- Duplicate of #12568
Some minor fixes not tracked by tickets were applied.
See log:simplemultiprojectplugin@15018:15521 for full changelog since V0.5.0.
project_admin.png (43.1 KB) - added by 5 years ago.
Project admin Interfaz
edit_project.png (33.9 KB) - added by 5 years ago.
edit_milestone.png (26.3 KB) - added by 5 years ago.
roadmap_projects.png (35.9 KB) - added by 5 years ago.
roadmap_projects_filter.png (54.7 KB) - added by 5 years ago.
roadmap can display project summary+description; project filter displays milestones and versions of certain projects, only
admin_projects_modify.png (30.4 KB) - added by 5 years ago.
write project summary and description
admin_project.png (31.4 KB) - added by 5 years ago.
project admin interface
timeline_projects_filter.png (35.5 KB) - added by 5 years ago.
timeline filter demo
Download all attachments as: .zip