Django

Code

Show
Ignore:
Timestamp:
07/10/08 15:47:18 (6 months ago)
Author:
brosner
Message:

newforms-admin: Merged from trunk up to [7877].

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/newforms-admin

    • Property svnmerge-integrated changed from /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7852 to /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7880
  • django/branches/newforms-admin/django/core/paginator.py

    r7830 r7881  
    11class InvalidPage(Exception): 
     2    pass 
     3 
     4class PageNotAnInteger(InvalidPage): 
     5    pass 
     6 
     7class EmptyPage(InvalidPage): 
    28    pass 
    39 
     
    1521            number = int(number) 
    1622        except ValueError: 
    17             raise InvalidPage('That page number is not an integer') 
     23            raise PageNotAnInteger('That page number is not an integer') 
    1824        if number < 1: 
    19             raise InvalidPage('That page number is less than 1') 
     25            raise EmptyPage('That page number is less than 1') 
    2026        if number > self.num_pages: 
    2127            if number == 1 and self.allow_empty_first_page: 
    2228                pass 
    2329            else: 
    24                 raise InvalidPage('That page contains no results') 
     30                raise EmptyPage('That page contains no results') 
    2531        return number 
    2632 
     
    3743        "Returns the total number of objects, across all pages." 
    3844        if self._count is None: 
    39             self._count = len(self.object_list) 
     45            from django.db.models.query import QuerySet 
     46            if isinstance(self.object_list, QuerySet): 
     47                self._count = self.object_list.count() 
     48            else: 
     49                self._count = len(self.object_list) 
    4050        return self._count 
    4151    count = property(_get_count) 
     
    6272    page_range = property(_get_page_range) 
    6373 
    64 class QuerySetPaginator(Paginator): 
    65     """ 
    66     Like Paginator, but works on QuerySets. 
    67     """ 
    68     def _get_count(self): 
    69         if self._count is None: 
    70             self._count = self.object_list.count() 
    71         return self._count 
    72     count = property(_get_count) 
     74QuerySetPaginator = Paginator # For backwards-compatibility. 
    7375 
    7476class Page(object): 
     
    134136            page_number = int(page_number) + 1 
    135137        except ValueError: 
    136             raise InvalidPage 
     138            raise PageNotAnInteger 
    137139        return self.validate_number(page_number) 
    138140 
     
    141143            page_number = int(page_number) + 1 
    142144        except ValueError: 
    143             raise InvalidPage 
     145            raise PageNotAnInteger 
    144146        return self.page(page_number).object_list 
    145147