Skip to content

Commit a5c9f0c

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

File tree

3 files changed

+70
-1
lines changed

3 files changed

+70
-1
lines changed

DjangoPlugin/tracdjangoplugin/plugins.py

+12
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,14 @@ 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+
def display_html(self, req, query):
202+
template_name, context = super().display_html(req, query)
203+
context["title"] = "View Tickets"
204+
return template_name, context

DjangoPlugin/tracdjangoplugin/tests.py

+56
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,56 @@ 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+
streaming = False
272+
charset = "utf8"
273+
274+
def __init__(self, request):
275+
self._request = request
276+
277+
@property
278+
def status_code(self):
279+
status_str, _ = self._request._status.split(" ", 1)
280+
return int(status_str)
281+
282+
@property
283+
def content(self):
284+
return self._request.response_sent.getvalue()
285+
286+
287+
class RenameQueryTitleComponentTestCase(TestCase):
288+
def setUp(self):
289+
self.env = EnvironmentStub(
290+
enable=[
291+
"trac.ticket.*",
292+
"trac.ticket.query.*",
293+
"trac.web.*",
294+
"tracdjangoplugin.plugins.renamequerytitlecomponent",
295+
],
296+
disable=[
297+
"trac.ticket.query.querymodule",
298+
],
299+
)
300+
self.request_factory = partial(MockRequest, self.env)
301+
self.dispatcher = RequestDispatcher(self.env)
302+
303+
def get_response(self, **kwargs):
304+
"""
305+
Build a request using the given kwargs and return a Django-like
306+
response object.
307+
"""
308+
request = self.request_factory(**kwargs)
309+
self.assertRaises(RequestDone, self.dispatcher.dispatch, request)
310+
return _TracRequestWrapper(request)
311+
312+
def test_new_title(self):
313+
response = self.get_response(path_info="/query")
314+
315+
self.assertContains(response, '<h1>View Tickets <span class="numrows">(0 matches)</span></h1>', html=True)
316+
self.assertNotContains(response, '<h1>Custom Query <span class="numrows">(0 matches)</span></h1>', html=True)

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)