2012-12-18 08:04:10 +08:00
|
|
|
def register(*models, **kwargs):
|
|
|
|
"""
|
|
|
|
Registers the given model(s) classes and wrapped ModelAdmin class with
|
|
|
|
admin site:
|
|
|
|
|
|
|
|
@register(Author)
|
|
|
|
class AuthorAdmin(admin.ModelAdmin):
|
|
|
|
pass
|
|
|
|
|
|
|
|
A kwarg of `site` can be passed as the admin site, otherwise the default
|
|
|
|
admin site will be used.
|
|
|
|
"""
|
|
|
|
from django.contrib.admin import ModelAdmin
|
|
|
|
from django.contrib.admin.sites import site, AdminSite
|
|
|
|
|
|
|
|
def _model_admin_wrapper(admin_class):
|
2015-11-06 14:21:29 +08:00
|
|
|
if not models:
|
|
|
|
raise ValueError('At least one model must be passed to register.')
|
|
|
|
|
2012-12-18 08:04:10 +08:00
|
|
|
admin_site = kwargs.pop('site', site)
|
|
|
|
|
|
|
|
if not isinstance(admin_site, AdminSite):
|
|
|
|
raise ValueError('site must subclass AdminSite')
|
|
|
|
|
|
|
|
if not issubclass(admin_class, ModelAdmin):
|
2013-09-19 18:24:12 +08:00
|
|
|
raise ValueError('Wrapped class must subclass ModelAdmin.')
|
2012-12-18 08:04:10 +08:00
|
|
|
|
|
|
|
admin_site.register(models, admin_class=admin_class)
|
|
|
|
|
|
|
|
return admin_class
|
|
|
|
return _model_admin_wrapper
|