source: extendedversionplugin/trunk/extendedversion/roadmap.py @ 13314

Last change on this file since 13314 was 13314, checked in by Ryan J Ollos, 11 years ago

Eliminate roadmap_navigation option and simplify code (Fixes #11199).

The equivalent of roadmap_navigation = true can now be obtained by setting [components] trac.ticket.roadmap.RoadmapModule = disabled.

File size: 2.1 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# Copyright (C) 2010-2011 Malcolm Studd <mestudd@gmail.com>
4# Copyright (C) 2012-2013 Ryan J Ollos <ryan.j.ollos@gmail.com>
5# All rights reserved.
6#
7# This software is licensed as described in the file COPYING, which
8# you should have received as part of this distribution.
9#
10
11from datetime import datetime
12
13from genshi.builder import tag
14from trac.core import Component, implements
15from trac.resource import Resource
16from trac.ticket import Version
17from trac.ticket.roadmap import RoadmapModule
18from trac.util.datefmt import utc
19from trac.util.translation import _
20from trac.web.api import IRequestHandler
21from trac.web.chrome import(
22    INavigationContributor, add_stylesheet
23)
24
25
26class ReleasesModule(Component):
27    implements(INavigationContributor, IRequestHandler)
28
29    # INavigationContributor methods
30
31    def get_active_navigation_item(self, req):
32        return 'versions'
33
34    def get_navigation_items(self, req):
35        if 'VERSION_VIEW' in req.perm:
36            if self.env.enabled[RoadmapModule]:
37                label = _("Versions")
38            else:
39                label = _("Roadmap")
40            yield ('mainnav', 'versions',
41                   tag.a(label, href=req.href.versions()))
42
43    # IRequestHandler methods
44
45    def match_request(self, req):
46        return req.path_info == '/versions'
47
48    def process_request(self, req):
49        req.perm.require('VERSION_VIEW')
50
51        showall = req.args.get('show') == 'all'
52
53        versions = []
54        for v in Version.select(self.env):
55            resource = Resource('version', v.name)
56            is_released = v.time and v.time < datetime.now(utc)
57
58            if (showall or not is_released) and \
59                    'VERSION_VIEW' in req.perm(resource):
60                v.is_released = is_released
61                v.resource = resource
62                versions.append(v)
63
64        versions.reverse()
65
66        data = {
67            'versions': versions,
68            'showall': showall,
69            'roadmap_navigation': not self.env.enabled[RoadmapModule]
70        }
71        add_stylesheet(req, 'common/css/roadmap.css')
72        return 'versions.html', data, None
Note: See TracBrowser for help on using the repository browser.