'Register 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, use ModelAdmin (the default admin
options). If keyword arguments are given -- e.g., list_display --
apply them as options to the admin class.
If a model is already registered, raise AlreadyRegistered.
If a model is abstract, raise ImproperlyConfigured.'

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

    if (not admin_class):
        admin_class = ModelAdmin
    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)
            self._registry[model] = admin_class(model, self)
