summaryrefslogtreecommitdiffstats
path: root/middleware/pagesize.py
blob: bb6c7aa39fefa1e88fd50f2ace53b43c5759e323 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# used in questions
QUESTIONS_PAGE_SIZE = 10
class QuestionsPageSizeMiddleware(object):
    def process_request(self, request):
        # Set flag to False by default. If it is equal to True, then need to be saved.
        pagesize_changed = False
        # get pagesize from session, if failed then get default value
        user_page_size = request.session.get("pagesize", QUESTIONS_PAGE_SIZE)
        # set pagesize equal to logon user specified value in database
        if request.user.is_authenticated() and request.user.questions_per_page > 0:
            user_page_size = request.user.questions_per_page

        try:
            # get new pagesize from UI selection
            pagesize = int(request.GET.get('pagesize', user_page_size))
            if pagesize <> user_page_size:
                pagesize_changed = True

        except ValueError:
            pagesize  = user_page_size
        
        # save this pagesize to user database
        if pagesize_changed:
            if request.user.is_authenticated():
                user = request.user
                user.questions_per_page = pagesize
                user.save()
        # put pagesize into session
        request.session["pagesize"] = pagesize