Ticket #216: report.patch
| File report.patch, 4.1 KB (added by liris <liris.pp@…>, 20 months ago) |
|---|
-
trac/ticket/report.py
36 36 Chrome 37 37 from trac.wiki import IWikiSyntaxProvider, WikiParser 38 38 39 import math,urllib 39 40 40 41 class ReportModule(Component): 41 42 43 tickets_per_page = IntOption('ticket', 'default_per_page', default=10, 44 doc="The number of tickets shown per page in queries") 45 42 46 implements(INavigationContributor, IPermissionRequestor, IRequestHandler, 43 47 IWikiSyntaxProvider) 44 48 … … 322 326 header_groups.append([]) 323 327 header_group.append(header) 324 328 329 # Update/retrieve the number of tickets per page 330 perpage = int(req.args.get("per_page", 0)) 331 if not perpage: 332 perpage = req.session.get('tickets_perpage') 333 if not perpage: 334 perpage = self.tickets_per_page 335 else: 336 perpage = int(perpage) 337 else: 338 req.session['tickets_perpage'] = perpage 339 340 # Calculate number of pages and current page 341 numpages = int(math.ceil(len(results) * 1.0 / perpage)) 342 curpage = int(req.args.get('page', 1)) 343 if curpage <= 0 or curpage > numpages: 344 raise TracError, 'Invalid page %s'%(curpage) 345 346 # Calculate the start and end point 347 start = perpage * (curpage-1) 348 end = start + perpage 349 results = results[start:end] 350 351 page_query = {} 352 page_query['perpage'] = perpage 353 page_query['numpages'] = range(1, numpages+1) 354 page_query['curpage'] = curpage 355 params = {} 356 if req.args.has_key('sort'): 357 params['sort'] = req.args['sort'] 358 if req.args.has_key('asc'): 359 params['asc'] = req.args['asc'] 360 page_query['baseparams'] = urllib.urlencode(params) 361 362 325 363 # Structure the rows and cells: 326 364 # - group rows according to __group__ value, if defined 327 365 # - group cells the same way headers are grouped … … 377 415 'row_groups': row_groups, 378 416 'numrows': len(results), 379 417 'sorting_enabled': len(row_groups)==1, 380 'email_map': email_map}) 418 'email_map': email_map, 419 'page_query': page_query}) 381 420 382 421 if id: 383 422 self.add_alternate_links(req, args) -
trac/ticket/templates/report_view.html
27 27 </h1> 28 28 29 29 <div py:if="report.description" id="description">${wiki_to_html(context, report.description)}</div> 30 <div py:if="report.id != -1"> 31 <form id="query" method="get" action=""> 32 <p class="option"> 33 Page: 34 <py:for each="n in page_query.numpages"> 35 <py:if test="n == page_query.curpage"> 36 ${n} 37 </py:if> 38 <py:if test="n != page_query.curpage"> 39 <py:if test="page_query.baseparams"> 40 <a href="?${page_query.baseparams}&page=${n}">${n}</a> 41 </py:if> 42 <py:if test="not page_query.baseparams"> 43 <a href="?page=${n}">${n}</a> 44 </py:if> 45 </py:if> 46 </py:for> 47 </p> 48 <p class="option"> 49 <label>Ticket per page: 50 <input type="text" class="textwidget" name="per_page" value="${page_query.perpage}" size="6" /> 51 </label> 52 </p> 53 <div class="buttons"> 54 <input type="submit" name="update" value="Update" /> 55 </div> 56 </form> 57 </div> 30 58 31 59 <div py:if="report.id != -1 and report.perms" class="buttons"> 32 60 <form py:if="'MODIFY' in report.perms" action="" method="get">
