Merge pull request #386 from tyrion/patch-2

Fixed ModelAdminBase2 to allow overriding existent views.
This commit is contained in:
Andrews Medina 2015-01-10 18:35:31 -02:00
commit ff3cbd413a
2 changed files with 8 additions and 7 deletions

View file

@ -53,10 +53,11 @@ class ModelAdminTest(TestCase):
self.model_admin = MyModelAdmin
def test_views(self):
self.assertIn(
self.model_admin.my_view,
self.model_admin.views
)
views = [self.model_admin.my_view] + ModelAdmin2.views
self.assertListEqual(self.model_admin.views, views)
def test_views_not_same(self):
self.assertIsNot(self.model_admin.views, ModelAdmin2.views)
def test_get_index_kwargs(self):
admin_instance = ModelAdmin2(BigThing, Admin2)

View file

@ -28,15 +28,15 @@ class ModelAdminBase2(type):
def __new__(cls, name, bases, attrs):
new_class = super(ModelAdminBase2, cls).__new__(cls, name,
bases, attrs)
view_list = getattr(new_class, 'views', [])
view_list = []
for key, value in attrs.items():
if isinstance(value, views.AdminView):
if not value.name:
value.name = key
view_list.append(value)
setattr(new_class, 'views', view_list)
view_list.extend(getattr(new_class, 'views', []))
new_class.views = view_list
return new_class