mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Moved admin options into inner "class Admin." Also refactored the model code so
that models.fields.Admin became models.options.AdminOptions. This means that old code that uses "admin = models.Admin()" will now break until it's replaced with the new syntax. (You can still use "admin = meta.AdminOptions(...)" if you care to, but I don't see why.) git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@1864 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -9,7 +9,7 @@ from django.utils.text import capfirst
|
||||
from django.db.models.loading import get_installed_models, get_installed_model_modules
|
||||
from django.db.models.query import Q
|
||||
from django.db.models.manager import Manager
|
||||
from django.db.models.base import Model
|
||||
from django.db.models.base import Model, AdminOptions
|
||||
|
||||
from django.db.models.fields import *
|
||||
from django.db.models.fields.related import *
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import django.db.models.manipulators
|
||||
import django.db.models.manager
|
||||
from django.db.models.fields import AutoField, ImageField, Admin
|
||||
from django.db.models.fields import AutoField, ImageField
|
||||
from django.db.models.fields.related import OneToOne, ManyToOne
|
||||
from django.db.models.related import RelatedObject
|
||||
from django.db.models.query import orderlist2sql
|
||||
from django.db.models.options import Options
|
||||
from django.db.models.options import Options, AdminOptions
|
||||
from django.db import connection, backend
|
||||
from django.db.models import signals
|
||||
from django.dispatch import dispatcher
|
||||
@@ -20,7 +20,7 @@ import os
|
||||
if not hasattr(__builtins__, 'set'):
|
||||
from sets import Set as set
|
||||
|
||||
attribute_transforms = {'Admin': lambda cls: Admin(**cls.__dict__)}
|
||||
attribute_transforms = {'Admin': lambda cls: AdminOptions(**dict([(k,v) for (k,v) in cls.__dict__.items() if not k.startswith('_')]))}
|
||||
|
||||
class ModelBase(type):
|
||||
"Metaclass for all models"
|
||||
|
||||
@@ -790,35 +790,3 @@ class FieldSet(object):
|
||||
|
||||
def __len__(self):
|
||||
return len(self.field_lines)
|
||||
|
||||
class Admin:
|
||||
def __init__(self, fields=None, js=None, list_display=None, list_filter=None, date_hierarchy=None,
|
||||
save_as=False, ordering=None, search_fields=None, save_on_top=False, list_select_related=False):
|
||||
self.fields = fields
|
||||
self.js = js or []
|
||||
self.list_display = list_display or ['__repr__']
|
||||
self.list_filter = list_filter 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
|
||||
self.list_select_related = list_select_related
|
||||
|
||||
def get_field_sets(self, opts):
|
||||
if self.fields is None:
|
||||
field_struct = ((None, {
|
||||
'fields': [f.name for f in opts.fields + opts.many_to_many if f.editable and not isinstance(f, AutoField)]
|
||||
}),)
|
||||
else:
|
||||
field_struct = self.fields
|
||||
new_fieldset_list = []
|
||||
for fieldset in field_struct:
|
||||
name = fieldset[0]
|
||||
fs_options = fieldset[1]
|
||||
classes = fs_options.get('classes', ())
|
||||
line_specs = fs_options['fields']
|
||||
new_fieldset_list.append(FieldSet(name, classes, opts.get_field, line_specs))
|
||||
return new_fieldset_list
|
||||
|
||||
def contribute_to_class(self, cls, name):
|
||||
cls._meta.admin = self
|
||||
@@ -1,6 +1,6 @@
|
||||
from django.db.models.related import RelatedObject
|
||||
from django.db.models.fields.related import ManyToMany
|
||||
from django.db.models.fields import AutoField
|
||||
from django.db.models.fields import AutoField, FieldSet
|
||||
from django.db.models.loading import get_installed_model_modules
|
||||
from django.db.models.query import orderlist2sql
|
||||
from django.db.models.exceptions import FieldDoesNotExist
|
||||
@@ -216,3 +216,36 @@ class Options:
|
||||
else:
|
||||
self._field_types[field_type] = False
|
||||
return self._field_types[field_type]
|
||||
|
||||
|
||||
class AdminOptions:
|
||||
def __init__(self, fields=None, js=None, list_display=None, list_filter=None, date_hierarchy=None,
|
||||
save_as=False, ordering=None, search_fields=None, save_on_top=False, list_select_related=False):
|
||||
self.fields = fields
|
||||
self.js = js or []
|
||||
self.list_display = list_display or ['__repr__']
|
||||
self.list_filter = list_filter 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
|
||||
self.list_select_related = list_select_related
|
||||
|
||||
def get_field_sets(self, opts):
|
||||
if self.fields is None:
|
||||
field_struct = ((None, {
|
||||
'fields': [f.name for f in opts.fields + opts.many_to_many if f.editable and not isinstance(f, AutoField)]
|
||||
}),)
|
||||
else:
|
||||
field_struct = self.fields
|
||||
new_fieldset_list = []
|
||||
for fieldset in field_struct:
|
||||
name = fieldset[0]
|
||||
fs_options = fieldset[1]
|
||||
classes = fs_options.get('classes', ())
|
||||
line_specs = fs_options['fields']
|
||||
new_fieldset_list.append(FieldSet(name, classes, opts.get_field, line_specs))
|
||||
return new_fieldset_list
|
||||
|
||||
def contribute_to_class(self, cls, name):
|
||||
cls._meta.admin = self
|
||||
Reference in New Issue
Block a user