Skip to content

Commit

Permalink
1.7.1dev: merge [17774] from 1.6-stable (fix for #13740)
Browse files Browse the repository at this point in the history
git-svn-id: http://trac.edgewall.org/intertrac/log:/trunk@17775 af82e41b-90c4-0310-8c96-b1721e28e2e2
  • Loading branch information
jomae committed Apr 19, 2024
2 parents a30c5f8 + ec5672e commit 81bd9ee
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
2 changes: 1 addition & 1 deletion trac/ticket/templates/query.html
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ <h1>${title} <span class="numrows">(${
</form>

# include 'query_results.html'
# if tickets:
# if tickets and batch_modify:
# include 'batch_modify.html' ignore missing
# endif

Expand Down
42 changes: 37 additions & 5 deletions trac/ticket/tests/batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,18 @@
from datetime import datetime, timedelta

from trac.core import Component, implements
from trac.perm import DefaultPermissionPolicy, DefaultPermissionStore, \
PermissionSystem
from trac.perm import (
DefaultPermissionPolicy, DefaultPermissionGroupProvider,
DefaultPermissionStore, PermissionSystem,
)
from trac.test import EnvironmentStub, MockRequest, makeSuite
from trac.ticket import api, default_workflow, model, web_ui
from trac.ticket.batch import BatchModifyModule
from trac.ticket.test import insert_ticket
from trac.ticket.query import QueryModule
from trac.util.datefmt import datetime_now, utc
from trac.web.api import HTTPBadRequest, RequestDone
from trac.web.chrome import web_context
from trac.web.chrome import Chrome, web_context
from trac.web.session import DetachedSession


Expand Down Expand Up @@ -183,8 +186,9 @@ def tearDownClass(cls):
def setUp(self):
self.env = EnvironmentStub(default_data=True, enable=[
default_workflow.ConfigurableTicketWorkflow,
DefaultPermissionPolicy, DefaultPermissionStore,
BatchModifyModule, api.TicketSystem, web_ui.TicketModule
DefaultPermissionPolicy, DefaultPermissionGroupProvider,
DefaultPermissionStore, Chrome, QueryModule,
BatchModifyModule, api.TicketSystem, web_ui.TicketModule,
])
self.env.config.set('trac', 'permission_policies',
'DefaultPermissionPolicy')
Expand Down Expand Up @@ -234,6 +238,17 @@ def _insert_component(self, name):
component.name = name
component.insert()

def _process_query_request(self, req):
query_mod = QueryModule(self.env)
self.assertTrue(query_mod.match_request(req))
batch_mod = BatchModifyModule(self.env)
batch_mod.pre_process_request(req, query_mod)
template, data = query_mod.process_request(req)
return batch_mod.post_process_request(req, template, data, {})

def _render_fragment(self, req, template, data):
return Chrome(self.env).render_fragment(req, template, data)

def test_require_post_method(self):
"""Request must use POST method."""
module = BatchModifyModule(self.env)
Expand Down Expand Up @@ -779,6 +794,23 @@ def test_post_process_request_error_handling(self):
self.assertEqual((None, None, None),
module.post_process_request(req, None, None, None))

def test_view_without_batch_modify(self):
req = MockRequest(self.env, path_info='/query', authname='user1',
args={'status': '!closed'})
template, data, metadata = self._process_query_request(req)
self.assertNotIn('batch_modify', data)
fragment = self._render_fragment(req, template, data)
self.assertNotIn('<form id="batchmod_form"', fragment)

def test_view_with_batch_modify(self):
req = MockRequest(self.env, path_info='/query', authname='has_bm',
args={'status': '!closed'})
template, data, metadata = self._process_query_request(req)
self.assertIn('batch_modify', set(data))
self.assertTrue(data['batch_modify'])
fragment = self._render_fragment(req, template, data)
self.assertIn('<form id="batchmod_form"', fragment)


def test_suite():
suite = unittest.TestSuite()
Expand Down

0 comments on commit 81bd9ee

Please sign in to comment.