diff options
| author | Jannis Leidel <jannis@leidel.info> | 2011-09-08 13:25:00 +0000 |
|---|---|---|
| committer | Jannis Leidel <jannis@leidel.info> | 2011-09-08 13:25:00 +0000 |
| commit | cf70c96ce08bec8834ada695451cc915f7558dbd (patch) | |
| tree | 5ccf9d96d88a692f161f64bd515e78ea95da7a3e /django | |
| parent | 414c762c3abfebb2670a3b26aba7028d62303cfe (diff) | |
Fixed #15997 -- Added `list_max_show_all` option to `ModelAdmin` in replacement for a global module level variable. Thanks, jsdalton.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16725 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/admin/options.py | 3 | ||||
| -rw-r--r-- | django/contrib/admin/validation.py | 5 | ||||
| -rw-r--r-- | django/contrib/admin/views/main.py | 9 |
3 files changed, 10 insertions, 7 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index cf7ea83c11..c9f2562142 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -278,6 +278,7 @@ class ModelAdmin(BaseModelAdmin): list_filter = () list_select_related = False list_per_page = 100 + list_max_show_all = 200 list_editable = () search_fields = () date_hierarchy = None @@ -1087,7 +1088,7 @@ class ModelAdmin(BaseModelAdmin): try: cl = ChangeList(request, self.model, list_display, self.list_display_links, self.list_filter, self.date_hierarchy, self.search_fields, - self.list_select_related, self.list_per_page, self.list_editable, self) + self.list_select_related, self.list_per_page, self.list_max_show_all, self.list_editable, self) except IncorrectLookupParameters: # Wacky lookup parameters were given, so redirect to the main # changelist page, without parameters, and pass an 'invalid=1' diff --git a/django/contrib/admin/validation.py b/django/contrib/admin/validation.py index 9a0c948120..733f89d06f 100644 --- a/django/contrib/admin/validation.py +++ b/django/contrib/admin/validation.py @@ -96,6 +96,11 @@ def validate(cls, model): raise ImproperlyConfigured("'%s.list_per_page' should be a integer." % cls.__name__) + # list_max_show_all + if hasattr(cls, 'list_max_show_all') and not isinstance(cls.list_max_show_all, int): + raise ImproperlyConfigured("'%s.list_max_show_all' should be an integer." + % cls.__name__) + # list_editable if hasattr(cls, 'list_editable') and cls.list_editable: check_isseq(cls, 'list_editable', cls.list_editable) diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index f741fd0764..616b24957a 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -12,10 +12,6 @@ from django.contrib.admin import FieldListFilter from django.contrib.admin.options import IncorrectLookupParameters from django.contrib.admin.util import quote, get_fields_from_path -# The system will display a "Show all" link on the change list only if the -# total result count is less than or equal to this setting. -MAX_SHOW_ALL_ALLOWED = 200 - # Changelist settings ALL_VAR = 'all' ORDER_VAR = 'o' @@ -44,7 +40,7 @@ def field_needs_distinct(field): class ChangeList(object): def __init__(self, request, model, list_display, list_display_links, list_filter, date_hierarchy, search_fields, list_select_related, - list_per_page, list_editable, model_admin): + list_per_page, list_max_show_all, list_editable, model_admin): self.model = model self.opts = model._meta self.lookup_opts = self.opts @@ -56,6 +52,7 @@ class ChangeList(object): self.search_fields = search_fields self.list_select_related = list_select_related self.list_per_page = list_per_page + self.list_max_show_all = list_max_show_all self.model_admin = model_admin # Get search parameters from the query string. @@ -145,7 +142,7 @@ class ChangeList(object): else: full_result_count = self.root_query_set.count() - can_show_all = result_count <= MAX_SHOW_ALL_ALLOWED + can_show_all = result_count <= self.list_max_show_all multi_page = result_count > self.list_per_page # Get the list of objects to display on this page. |
