allura
修訂 | c95fc286e3c99b09ebd8c5c5821f4a688cae96c5 (tree) |
---|---|
時間 | 2010-05-29 00:21:18 |
作者 | Jenny Steele <jsteele@geek...> |
Commiter | Jenny Steele |
[#430] Preferred number of results per page is now saved
@@ -57,7 +57,7 @@ | ||
57 | 57 | </table> |
58 | 58 | <p>Showing ${limit} results per page. </p> |
59 | 59 | <ul class="per_page"> |
60 | - <li py:for="per_page in [10, 25, 50, 100]"> | |
60 | + <li py:for="per_page in [25, 50, 100, 250]"> | |
61 | 61 | <a href="${tg.url(request.path_info, dict(q=q, limit=per_page))}" py:strip="limit == per_page">${per_page}</a> |
62 | 62 | </li> |
63 | 63 | </ul> |
@@ -421,6 +421,17 @@ class TestFunctionalController(TestController): | ||
421 | 421 | new_date = ticket.mod_date |
422 | 422 | assert new_date > old_date |
423 | 423 | |
424 | + def test_paging_prefs_saved(self): | |
425 | + req = self.app.get('/bugs/search/') | |
426 | + 'Showing 100 results per page' not in req | |
427 | + 'Showing 25 results per page' in req | |
428 | + req = self.app.get('/bugs/search/?limit=100') | |
429 | + 'Showing 100 results per page' in req | |
430 | + 'Showing 25 results per page' not in req | |
431 | + req = self.app.get('/bugs/search/') | |
432 | + 'Showing 100 results per page' in req | |
433 | + 'Showing 25 results per page' not in req | |
434 | + | |
424 | 435 | |
425 | 436 | def sidebar_contains(response, text): |
426 | 437 | sidebar_menu = response.html.find('ul', attrs={'id': 'sidebarmenu'}) |
@@ -8,6 +8,7 @@ from urllib import urlencode, unquote | ||
8 | 8 | # Non-stdlib imports |
9 | 9 | import pkg_resources |
10 | 10 | import Image |
11 | +import tg | |
11 | 12 | from tg import tmpl_context |
12 | 13 | from tg import expose, validate, redirect, flash |
13 | 14 | from tg import request, response |
@@ -211,7 +212,18 @@ class RootController(object): | ||
211 | 212 | count<=limit in the result |
212 | 213 | limit=-1 is NOT recognized as 'all'. 500 is a reasonable limit. |
213 | 214 | """ |
214 | - limit = limit or 10 | |
215 | + | |
216 | + if limit: | |
217 | + if c.user in (None, User.anonymous()): | |
218 | + tg.session['results_per_page'] = limit | |
219 | + tg.session.save() | |
220 | + else: | |
221 | + c.user.preferences.results_per_page = limit | |
222 | + else: | |
223 | + if c.user in (None, User.anonymous()): | |
224 | + limit = 'results_per_page' in tg.session and tg.session['results_per_page'] or 25 | |
225 | + else: | |
226 | + limit = c.user.preferences.results_per_page or 25 | |
215 | 227 | sort = sort or 'ticket_num_i desc' |
216 | 228 | page = max(page, 0) |
217 | 229 | start = page * limit |
@@ -150,6 +150,7 @@ class User(MappedClass): | ||
150 | 150 | password=FieldProperty(str) |
151 | 151 | projects=FieldProperty([S.ObjectId]) |
152 | 152 | preferences=FieldProperty(dict( |
153 | + results_per_page=int, | |
153 | 154 | email_address=str, |
154 | 155 | email_format=str)) |
155 | 156 | tool_preferences=FieldProperty({str:{str:None}}) # full mount point: prefs dict |