mirror of
https://github.com/jazzband/django-admin2.git
synced 2026-03-17 06:30:25 +00:00
implemented ModelAdminBase2 metaclass.
This commit is contained in:
parent
7a0f29f2c6
commit
b44c66e301
2 changed files with 31 additions and 1 deletions
|
|
@ -1,6 +1,8 @@
|
|||
from django.test import TestCase
|
||||
from django.views.generic import View
|
||||
|
||||
from ..types import immutable_admin_factory
|
||||
from ..types import ModelAdmin2, immutable_admin_factory
|
||||
from ..views import AdminView
|
||||
|
||||
|
||||
class ModelAdmin(object):
|
||||
|
|
@ -34,3 +36,18 @@ class ImmutableAdminFactoryTests(TestCase):
|
|||
with self.assertRaises(AttributeError):
|
||||
# 'ImmutableAdmin' object has no attribute 'd'
|
||||
self.immutable_admin.d
|
||||
|
||||
|
||||
class ModelAdminTest(TestCase):
|
||||
|
||||
def setUp(self):
|
||||
class MyModelAdmin(ModelAdmin2):
|
||||
my_view = AdminView(r'^$', View)
|
||||
|
||||
self.model_admin = MyModelAdmin
|
||||
|
||||
def test_views(self):
|
||||
self.assertEquals(
|
||||
self.model_admin.views[0],
|
||||
self.model_admin.my_view
|
||||
)
|
||||
|
|
|
|||
|
|
@ -17,11 +17,23 @@ from .forms import modelform_factory
|
|||
logger = logging.getLogger('djadmin2')
|
||||
|
||||
|
||||
class ModelAdminBase2(type):
|
||||
|
||||
def __new__(cls, name, bases, attrs):
|
||||
view_list = []
|
||||
for attr in attrs.values():
|
||||
if isinstance(attr, views.AdminView):
|
||||
view_list.append(attr)
|
||||
attrs['views'] = view_list
|
||||
return super(ModelAdminBase2, cls).__new__(cls, name, bases, attrs)
|
||||
|
||||
|
||||
class ModelAdmin2(object):
|
||||
"""
|
||||
Warning: This class is targeted for reduction.
|
||||
It's bloated and ugly.
|
||||
"""
|
||||
__metaclass__ = ModelAdminBase2
|
||||
|
||||
list_display = ('__str__',)
|
||||
list_display_links = ()
|
||||
|
|
@ -75,6 +87,7 @@ class ModelAdmin2(object):
|
|||
update_view = views.ModelEditFormView
|
||||
detail_view = views.ModelDetailView
|
||||
delete_view = views.ModelDeleteView
|
||||
views = []
|
||||
|
||||
# API configuration
|
||||
api_serializer_class = None
|
||||
|
|
|
|||
Loading…
Reference in a new issue