# Django 1.8.18.dev20170123152445 documentation

# Source code for django.contrib.admin.decorators

    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):
            admin_site = kwargs.pop('site', site)

            if not isinstance(admin_site, AdminSite):
                raise ValueError('site must subclass AdminSite')

            if not issubclass(admin_class, ModelAdmin):
                raise ValueError('Wrapped class must subclass ModelAdmin.')

            admin_site.register(models, admin_class=admin_class)

            return admin_class
        return _model_admin_wrapper