

def _register_model(admin, model):
    if (not hasattr(admin, 'revision_manager')):
        admin.revision_manager = default_revision_manager
    if (not hasattr(admin, 'reversion_format')):
        admin.reversion_format = 'json'
    if (not admin.revision_manager.is_registered(model)):
        inline_fields = []
        for inline in getattr(admin, 'inlines', []):
            inline_model = inline.model
            if getattr(inline, 'generic_inline', False):
                ct_field = getattr(inline, 'ct_field', 'content_type')
                ct_fk_field = getattr(inline, 'ct_fk_field', 'object_id')
                for field in model._meta.many_to_many:
                    if (isinstance(field, GenericRelation) and (field.rel.to == inline_model) and (field.object_id_field_name == ct_fk_field) and (field.content_type_field_name == ct_field)):
                        inline_fields.append(field.name)
                _autoregister(admin, inline_model)
            else:
                fk_name = getattr(inline, 'fk_name', None)
                if (not fk_name):
                    for field in inline_model._meta.fields:
                        if (isinstance(field, (models.ForeignKey, models.OneToOneField)) and issubclass(model, field.rel.to)):
                            fk_name = field.name
                _autoregister(admin, inline_model, follow=[fk_name])
                if (not inline_model._meta.get_field(fk_name).rel.is_hidden()):
                    accessor = inline_model._meta.get_field(fk_name).remote_field.get_accessor_name()
                    inline_fields.append(accessor)
        _autoregister(admin, model, inline_fields)

dataset/ETHPy150Open sshwsfc/xadmin/xadmin/plugins/xversion.py _register_model/original