Skip to content

Commit 4fc14c6

Browse files
newforms-admin: Backwards-incompatible change: Removed undocumented Admin.manager option in favor of Admin.change_list_queryset() method
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@4342 bcc190cf-cafb-0310-a4f2-bffc1f526a37
1 parent 08328ea commit 4fc14c6

File tree

4 files changed

+10
-11
lines changed

4 files changed

+10
-11
lines changed

django/contrib/admin/options.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ def has_delete_permission(self, request, object_id):
9595
opts = self.opts
9696
return request.user.has_perm(opts.app_label + '.' + opts.get_delete_permission())
9797

98+
def change_list_queryset(self, request):
99+
return self.model._default_manager.get_query_set()
100+
98101
def add_view(self, request, show_delete=False, form_url='', post_url=None, post_url_continue='../%s/', object_id_override=None):
99102
"The 'add' admin view for this model."
100103
from django.contrib.admin.views.main import render_change_form
@@ -280,7 +283,7 @@ def change_list_view(self, request):
280283
raise PermissionDenied
281284
try:
282285
cl = ChangeList(request, self.model, self.list_display, self.list_display_links, self.list_filter,
283-
self.date_hierarchy, self.search_fields, self.list_select_related, self.list_per_page)
286+
self.date_hierarchy, self.search_fields, self.list_select_related, self.list_per_page, self)
284287
except IncorrectLookupParameters:
285288
# Wacky lookup parameters were given, so redirect to the main
286289
# changelist page, without parameters, and pass an 'invalid=1'

django/contrib/admin/views/main.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -293,11 +293,11 @@ def _get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current
293293
perms_needed.add(related.opts.verbose_name)
294294

295295
class ChangeList(object):
296-
def __init__(self, request, model, list_display, list_display_links, list_filter, date_hierarchy, search_fields, list_select_related, list_per_page):
296+
def __init__(self, request, model, list_display, list_display_links, list_filter, date_hierarchy, search_fields, list_select_related, list_per_page, model_admin):
297297
self.model = model
298298
self.opts = model._meta
299299
self.lookup_opts = self.opts
300-
self.manager = self.opts.admin.manager
300+
self.root_query_set = model_admin.change_list_queryset(request)
301301
self.list_display = list_display
302302
self.list_display_links = list_display_links
303303
self.list_filter = list_filter
@@ -372,7 +372,7 @@ def get_results(self, request):
372372
if isinstance(self.query_set._filters, models.Q) and not self.query_set._filters.kwargs:
373373
full_result_count = result_count
374374
else:
375-
full_result_count = self.manager.count()
375+
full_result_count = self.root_query_set.count()
376376

377377
can_show_all = result_count <= MAX_SHOW_ALL_ALLOWED
378378
multi_page = result_count > self.list_per_page
@@ -424,7 +424,7 @@ def get_ordering(self):
424424
return order_field, order_type
425425

426426
def get_query_set(self):
427-
qs = self.manager.get_query_set()
427+
qs = self.root_query_set
428428
lookup_params = self.params.copy() # a dictionary of the query string
429429
for i in (ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR):
430430
if lookup_params.has_key(i):

django/db/models/base.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ def add_to_class(cls, name, value):
137137
# of ModelAdmin.
138138
cls._meta.ModelAdmin = type('ModelAdmin', (value, ModelAdmin), {})
139139
# This AdminOptions stuff is legacy and will eventually be removed.
140-
value = AdminOptions(**dict([(k, v) for k, v in value.__dict__.items() if not k.startswith('_') and k not in ('list_display', 'list_display_links', 'list_filter', 'date_hierarchy', 'save_as', 'search_fields', 'list_select_related', 'list_per_page', 'ordering', 'save_on_top', 'js')]))
140+
value = AdminOptions(**dict([(k, v) for k, v in value.__dict__.items() if not k.startswith('_') and k not in ('list_display', 'list_display_links', 'list_filter', 'date_hierarchy', 'save_as', 'search_fields', 'list_select_related', 'list_per_page', 'ordering', 'save_on_top', 'js', 'manager')]))
141141
value.contribute_to_class(cls, name)
142142
elif hasattr(value, 'contribute_to_class'):
143143
value.contribute_to_class(cls, name)

django/db/models/options.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from django.db.models.fields import AutoField, FieldDoesNotExist
55
from django.db.models.loading import get_models
66
from django.db.models.query import orderlist2sql
7-
from django.db.models import Manager
87
from bisect import bisect
98
import re
109

@@ -199,9 +198,8 @@ def has_field_type(self, field_type, follow=None):
199198
return self._field_types[field_type]
200199

201200
class AdminOptions(object):
202-
def __init__(self, fields=None, manager=None):
201+
def __init__(self, fields=None):
203202
self.fields = fields
204-
self.manager = manager or Manager()
205203

206204
def get_field_sets(self, opts):
207205
"Returns a list of AdminFieldSet objects for this AdminOptions object."
@@ -220,8 +218,6 @@ def get_field_sets(self, opts):
220218

221219
def contribute_to_class(self, cls, name):
222220
cls._meta.admin = self
223-
# Make sure the admin manager has access to the model
224-
self.manager.model = cls
225221

226222
class AdminFieldSet(object):
227223
def __init__(self, name, classes, field_locator_func, line_specs, description):

0 commit comments

Comments
 (0)