Skip to content

Commit 0558483

Browse files
committed
Changed title of /query page to manage navigation menu
1 parent 1a835a9 commit 0558483

File tree

3 files changed

+80
-1
lines changed

3 files changed

+80
-1
lines changed

DjangoPlugin/tracdjangoplugin/plugins.py

+13
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from trac.web.api import IRequestFilter, IRequestHandler, RequestDone
77
from trac.web.auth import LoginModule
88
from trac.wiki.web_ui import WikiModule
9+
from trac.ticket.query import QueryModule
910
from trac.util.html import tag
1011
from tracext.github import GitHubLoginModule, GitHubBrowser
1112

@@ -190,3 +191,15 @@ def force_logout_and_redirect(self, req):
190191

191192
def post_process_request(self, req, template, data, metadata):
192193
return template, data, metadata # required by Trac to exist
194+
195+
196+
class RenameQueryTitleComponent(QueryModule):
197+
"""
198+
Change the title of the /query page so that the navmenu entry matches the
199+
page's <h1>.
200+
"""
201+
202+
def display_html(self, req, query):
203+
template_name, context = super().display_html(req, query)
204+
context["title"] = "View Tickets"
205+
return template_name, context

DjangoPlugin/tracdjangoplugin/tests.py

+65
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,10 @@
1212
ReStructuredTextRenderer, # noqa: needed for RSTWikiTestCase to work
1313
)
1414
from trac.test import EnvironmentStub, MockRequest
15+
from trac.ticket.web_ui import TicketModule # Imported for side effects
16+
from trac.ticket.query import QueryModule # Imported for side effects
1517
from trac.web.api import RequestDone
18+
from trac.web.main import RequestDispatcher
1619

1720
from tracdjangoplugin.middlewares import DjangoDBManagementMiddleware
1821
from tracdjangoplugin.plugins import PlainLoginComponent, ReservedUsernamesComponent
@@ -258,3 +261,65 @@ def test_wiki_can_render_rst(self):
258261
str(output),
259262
'<div class="document" id="test"><h1 class="title">TEST</h1></div>',
260263
)
264+
265+
266+
class _TracRequestWrapper:
267+
"""
268+
Wrap a Trac request object to make it look like a Django response (so it
269+
can be used with assertContains)
270+
"""
271+
272+
streaming = False
273+
charset = "utf8"
274+
275+
def __init__(self, request):
276+
self._request = request
277+
278+
@property
279+
def status_code(self):
280+
status_str, _ = self._request._status.split(" ", 1)
281+
return int(status_str)
282+
283+
@property
284+
def content(self):
285+
return self._request.response_sent.getvalue()
286+
287+
288+
class RenameQueryTitleComponentTestCase(TestCase):
289+
def setUp(self):
290+
self.env = EnvironmentStub(
291+
enable=[
292+
"trac.ticket.*",
293+
"trac.ticket.query.*",
294+
"trac.web.*",
295+
"tracdjangoplugin.plugins.renamequerytitlecomponent",
296+
],
297+
disable=[
298+
"trac.ticket.query.querymodule",
299+
],
300+
)
301+
self.request_factory = partial(MockRequest, self.env)
302+
self.dispatcher = RequestDispatcher(self.env)
303+
304+
def get_response(self, **kwargs):
305+
"""
306+
Build a request using the given kwargs and return a Django-like
307+
response object.
308+
"""
309+
request = self.request_factory(**kwargs)
310+
self.assertRaises(RequestDone, self.dispatcher.dispatch, request)
311+
return _TracRequestWrapper(request)
312+
313+
def test_new_title(self):
314+
response = self.get_response(path_info="/query")
315+
316+
self.assertContains(
317+
response,
318+
'<h1>View Tickets <span class="numrows">(0 matches)</span></h1>',
319+
html=True,
320+
)
321+
self.assertNotContains(
322+
response,
323+
'<h1>Custom Query <span class="numrows">(0 matches)</span></h1>',
324+
html=True,
325+
)

trac-env/conf/trac.ini

+2-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ wiki_format_messages = enabled
1313
trac.about.* = disabled
1414
trac.admin.web_ui.PluginAdminPanel = disabled
1515
trac.ticket.query.* = enabled
16-
trac.ticket.query.querymodule = enabled
16+
# replaced by tracdjangoplugin.plugins.RenameQueryTitleComponent
17+
trac.ticket.query.querymodule = disabled
1718
trac.ticket.query.ticketquerymacro = enabled
1819
trac.ticket.report.* = disabled
1920
trac.ticket.report.reportmodule = disabled

0 commit comments

Comments
 (0)