• R/O
  • HTTP
  • SSH
  • HTTPS

提交

標籤
無標籤

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

allura


Commit MetaInfo

修訂c95fc286e3c99b09ebd8c5c5821f4a688cae96c5 (tree)
時間2010-05-29 00:21:18
作者Jenny Steele <jsteele@geek...>
CommiterJenny Steele

Log Message

[#430] Preferred number of results per page is now saved

Change Summary

差異

--- a/ForgeTracker/forgetracker/templates/search.html
+++ b/ForgeTracker/forgetracker/templates/search.html
@@ -57,7 +57,7 @@
5757 </table>
5858 <p>Showing ${limit} results per page. </p>
5959 <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]">
6161 <a href="${tg.url(request.path_info, dict(q=q, limit=per_page))}" py:strip="limit == per_page">${per_page}</a>
6262 </li>
6363 </ul>
--- a/ForgeTracker/forgetracker/tests/functional/test_root.py
+++ b/ForgeTracker/forgetracker/tests/functional/test_root.py
@@ -421,6 +421,17 @@ class TestFunctionalController(TestController):
421421 new_date = ticket.mod_date
422422 assert new_date > old_date
423423
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+
424435
425436 def sidebar_contains(response, text):
426437 sidebar_menu = response.html.find('ul', attrs={'id': 'sidebarmenu'})
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -8,6 +8,7 @@ from urllib import urlencode, unquote
88 # Non-stdlib imports
99 import pkg_resources
1010 import Image
11+import tg
1112 from tg import tmpl_context
1213 from tg import expose, validate, redirect, flash
1314 from tg import request, response
@@ -211,7 +212,18 @@ class RootController(object):
211212 count<=limit in the result
212213 limit=-1 is NOT recognized as 'all'. 500 is a reasonable limit.
213214 """
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
215227 sort = sort or 'ticket_num_i desc'
216228 page = max(page, 0)
217229 start = page * limit
--- a/pyforge/pyforge/model/auth.py
+++ b/pyforge/pyforge/model/auth.py
@@ -150,6 +150,7 @@ class User(MappedClass):
150150 password=FieldProperty(str)
151151 projects=FieldProperty([S.ObjectId])
152152 preferences=FieldProperty(dict(
153+ results_per_page=int,
153154 email_address=str,
154155 email_format=str))
155156 tool_preferences=FieldProperty({str:{str:None}}) # full mount point: prefs dict