summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/admin/options.py4
-rw-r--r--django/contrib/admin/templatetags/admin_list.py4
-rw-r--r--django/contrib/admin/views/main.py3
-rw-r--r--django/core/management.py6
-rw-r--r--django/db/models/base.py2
-rw-r--r--django/db/models/options.py3
6 files changed, 12 insertions, 10 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index e6431f218e..035c3684d7 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -36,6 +36,7 @@ class ModelAdmin(object):
list_display = ('__str__',)
list_display_links = ()
list_filter = ()
+ date_hierarchy = None
def __init__(self, model):
self.model = model
@@ -271,7 +272,8 @@ class ModelAdmin(object):
if not self.has_change_permission(request, None):
raise PermissionDenied
try:
- cl = ChangeList(request, self.model, self.list_display, self.list_display_links, self.list_filter)
+ cl = ChangeList(request, self.model, self.list_display, self.list_display_links, self.list_filter,
+ self.date_hierarchy)
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/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py
index 1594db0112..86b11c39db 100644
--- a/django/contrib/admin/templatetags/admin_list.py
+++ b/django/contrib/admin/templatetags/admin_list.py
@@ -193,8 +193,8 @@ def result_list(cl):
result_list = register.inclusion_tag("admin/change_list_results.html")(result_list)
def date_hierarchy(cl):
- if cl.lookup_opts.admin.date_hierarchy:
- field_name = cl.lookup_opts.admin.date_hierarchy
+ if cl.date_hierarchy:
+ field_name = cl.date_hierarchy
year_field = '%s__year' % field_name
month_field = '%s__month' % field_name
day_field = '%s__day' % field_name
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 16f12e253b..2a4b58d1ce 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -292,7 +292,7 @@ def _get_deleted_objects(deleted_objects, perms_needed, user, obj, opts, current
perms_needed.add(related.opts.verbose_name)
class ChangeList(object):
- def __init__(self, request, model, list_display, list_display_links, list_filter):
+ def __init__(self, request, model, list_display, list_display_links, list_filter, date_hierarchy):
self.model = model
self.opts = model._meta
self.lookup_opts = self.opts
@@ -300,6 +300,7 @@ class ChangeList(object):
self.list_display = list_display
self.list_display_links = list_display_links
self.list_filter = list_filter
+ self.date_hierarchy = date_hierarchy
# Get search parameters from the query string.
try:
diff --git a/django/core/management.py b/django/core/management.py
index 202f2d27e3..812f00021d 100644
--- a/django/core/management.py
+++ b/django/core/management.py
@@ -1019,11 +1019,11 @@ def get_validation_errors(outfile, app=None):
except models.FieldDoesNotExist:
e.add(opts, '"admin.list_filter" refers to %r, which isn\'t a field.' % fn)
# date_hierarchy
- if opts.admin.date_hierarchy:
+ if opts.ModelAdmin.date_hierarchy:
try:
- f = opts.get_field(opts.admin.date_hierarchy)
+ f = opts.get_field(opts.ModelAdmin.date_hierarchy)
except models.FieldDoesNotExist:
- e.add(opts, '"admin.date_hierarchy" refers to %r, which isn\'t a field.' % opts.admin.date_hierarchy)
+ e.add(opts, '"admin.date_hierarchy" refers to %r, which isn\'t a field.' % opts.ModelAdmin.date_hierarchy)
# Check ordering attribute.
if opts.ordering:
diff --git a/django/db/models/base.py b/django/db/models/base.py
index b1c603de3e..bcdc1185a0 100644
--- a/django/db/models/base.py
+++ b/django/db/models/base.py
@@ -137,7 +137,7 @@ class Model(object):
# of ModelAdmin.
cls._meta.ModelAdmin = type('ModelAdmin', (value, ModelAdmin), {})
# This AdminOptions stuff is legacy and will eventually be removed.
- 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')]))
+ 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')]))
value.contribute_to_class(cls, name)
elif hasattr(value, 'contribute_to_class'):
value.contribute_to_class(cls, name)
diff --git a/django/db/models/options.py b/django/db/models/options.py
index 8f6f6b0b55..ae26e5f009 100644
--- a/django/db/models/options.py
+++ b/django/db/models/options.py
@@ -200,11 +200,10 @@ class Options(object):
class AdminOptions(object):
def __init__(self, fields=None, js=None,
- date_hierarchy=None, save_as=False, ordering=None, search_fields=None,
+ save_as=False, ordering=None, search_fields=None,
save_on_top=False, list_select_related=False, manager=None, list_per_page=100):
self.fields = fields
self.js = js or []
- self.date_hierarchy = date_hierarchy
self.save_as, self.ordering = save_as, ordering
self.search_fields = search_fields or []
self.save_on_top = save_on_top