'Registers the given model(s) with the given admin class.
The model(s) should be Model classes, not instances.
If an admin class isn\'t given, it will use ModelAdmin (the default
admin options). If keyword arguments are given -- e.g., list_display --
they\'ll be applied as options to the admin class.
If a model is already registered, this will raise AlreadyRegistered.
If a model is abstract, this will raise ImproperlyConfigured.'

def register(self, model_or_iterable, admin_class=None, **options):

    if (not admin_class):
        admin_class = ModelAdmin
    if (admin_class and settings.DEBUG):
        from django.contrib.admin.validation import validate
    else:
        validate = (lambda model, adminclass: None)
    if isinstance(model_or_iterable, ModelBase):
        model_or_iterable = [model_or_iterable]
    for model in model_or_iterable:
        if model._meta.abstract:
            raise ImproperlyConfigured(('The    model    %s    is    abstract,    so    it    cannot    be    registered    with    admin.' % model.__name__))
        if (model in self._registry):
            raise AlreadyRegistered(('The    model    %s    is    already    registered' % model.__name__))
        if (not model._meta.swapped):
            if options:
                options['__module__'] = __name__
                admin_class = type(('%sAdmin' % model.__name__), (admin_class,), options)
            validate(admin_class, model)
            self._registry[model] = admin_class(model, self)
