forked from django/code.djangoproject.com
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path__init__.py
93 lines (71 loc) · 2.97 KB
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
from trac.core import Component, implements
from trac.web.chrome import INavigationContributor
from trac.web.api import IRequestFilter, IRequestHandler
from trac.wiki.web_ui import WikiModule
from trac.util import Markup
from trac.util.html import tag
from tracext.github import GitHubBrowser
class CustomTheme(Component):
implements(IRequestFilter)
def pre_process_request(self, req, handler):
return handler
def post_process_request(self, req, template, data, metadata):
req.chrome["theme"] = "django_theme.html"
return template, data, metadata
class CustomWikiModule(WikiModule):
"""Works in combination with the CustomNavigationBar and replaces
the default wiki module. Has a different logic for active item
handling.
"""
def get_active_navigation_item(self, req):
pagename = req.args.get("page")
if pagename == "Reports":
return "custom_reports"
return "wiki"
class CustomNewTicket(Component):
"""Hide certain options for the new ticket page"""
implements(IRequestFilter, IRequestHandler)
hidden_fields = frozenset(
["stage", "needs_tests", "needs_docs", "needs_better_patch"]
)
def match_request(self, req):
return req.path_info == "/simpleticket"
def process_request(self, req):
req.redirect(req.href.newticket())
def pre_process_request(self, req, handler):
return handler
def post_process_request(self, req, template, data, metadata):
if data is None:
data = {}
if req.path_info == "/newticket" and not data.get("preview_mode", False):
simple_interface = "TICKET_BATCH_MODIFY" not in req.perm
if simple_interface and "fields" in data:
data["fields"] = [
f for f in data["fields"] if f["name"] not in self.hidden_fields
]
data["simple_interface"] = simple_interface
template = "custom_ticket.html"
return template, data, metadata
class CustomNavigationBar(Component):
"""Implements some more items for the navigation bar."""
implements(INavigationContributor)
def get_active_navigation_item(self, req):
return "custom_reports"
def get_navigation_items(self, req):
return [
(
"mainnav",
"custom_reports",
Markup('<a href="%s">Reports</a>' % req.href.wiki("Reports")),
),
]
class GitHubBrowserWithSVNChangesets(GitHubBrowser):
def _format_changeset_link(self, formatter, ns, chgset, label, fullmatch=None):
# Dead-simple version for SVN changesets.
if chgset.isnumeric():
href = formatter.href.changeset(chgset, None, "/")
return tag.a(label, class_="changeset", href=href)
# Fallback to the default implementation.
return super(GitHubBrowserWithSVNChangesets, self)._format_changeset_link(
formatter, ns, chgset, label, fullmatch
)