from django.utils.module_loading import import_string
from django.conf import settings

from wagtail.wagtailembeds.finders.oembed import oembed
from wagtail.wagtailembeds.finders.embedly import embedly


MOVED_FINDERS = {
    'wagtail.wagtailembeds.embeds.embedly': 'wagtail.wagtailembeds.finders.embedly.embedly',
    'wagtail.wagtailembeds.embeds.oembed': 'wagtail.wagtailembeds.finders.oembed.oembed',
}


def get_default_finder():
    # Check if the user has set the embed finder manually
    if hasattr(settings, 'WAGTAILEMBEDS_EMBED_FINDER'):
        finder_name = settings.WAGTAILEMBEDS_EMBED_FINDER

        if finder_name in MOVED_FINDERS:
            finder_name = MOVED_FINDERS[finder_name]

        return import_string(finder_name)

    # Use embedly if the embedly key is set
    if hasattr(settings, 'WAGTAILEMBEDS_EMBEDLY_KEY'):
        return embedly

    # Fall back to oembed
    return oembed

from django.utils.module_loading import import_string
from django.conf import settings


MOVED_FINDERS = {
    'wagtail.wagtailembeds.embeds.embedly': 'wagtail.wagtailembeds.finders.embedly.embedly',
    'wagtail.wagtailembeds.embeds.oembed': 'wagtail.wagtailembeds.finders.oembed.oembed',
}


def get_default_finder():
    # Check if the user has set the embed finder manually
    if hasattr(settings, 'WAGTAILEMBEDS_EMBED_FINDER'):
        finder_name = settings.WAGTAILEMBEDS_EMBED_FINDER

        if finder_name in MOVED_FINDERS:
            finder_name = MOVED_FINDERS[finder_name]

    elif hasattr(settings, 'WAGTAILEMBEDS_EMBEDLY_KEY'):
        # Default to Embedly as an embedly key is set
        finder_name = 'wagtail.wagtailembeds.finders.embedly.embedly'

    else:
        # Default to oembed
        finder_name = 'wagtail.wagtailembeds.finders.oembed.oembed'

    return import_string(finder_name)

Refactor get_default_finder to work without importing finders
Refactor get_default_finder to work without importing finders

  from django.utils.module_loading import import_string
  from django.conf import settings
- 
- from wagtail.wagtailembeds.finders.oembed import oembed
- from wagtail.wagtailembeds.finders.embedly import embedly
  
  
  MOVED_FINDERS = {
      'wagtail.wagtailembeds.embeds.embedly': 'wagtail.wagtailembeds.finders.embedly.embedly',
      'wagtail.wagtailembeds.embeds.oembed': 'wagtail.wagtailembeds.finders.oembed.oembed',
  }
  
  
  def get_default_finder():
      # Check if the user has set the embed finder manually
      if hasattr(settings, 'WAGTAILEMBEDS_EMBED_FINDER'):
          finder_name = settings.WAGTAILEMBEDS_EMBED_FINDER
  
          if finder_name in MOVED_FINDERS:
              finder_name = MOVED_FINDERS[finder_name]
  
-         return import_string(finder_name)
+     elif hasattr(settings, 'WAGTAILEMBEDS_EMBEDLY_KEY'):
+         # Default to Embedly as an embedly key is set
+         finder_name = 'wagtail.wagtailembeds.finders.embedly.embedly'
  
-     # Use embedly if the embedly key is set
-     if hasattr(settings, 'WAGTAILEMBEDS_EMBEDLY_KEY'):
-         return embedly
+     else:
+         # Default to oembed
+         finder_name = 'wagtail.wagtailembeds.finders.oembed.oembed'
  
+     return import_string(finder_name)
-     # Fall back to oembed
-     return oembed
  
Refactor get_default_finder to work without importing finders
## Code Before:
from django.utils.module_loading import import_string
from django.conf import settings

from wagtail.wagtailembeds.finders.oembed import oembed
from wagtail.wagtailembeds.finders.embedly import embedly


MOVED_FINDERS = {
    'wagtail.wagtailembeds.embeds.embedly': 'wagtail.wagtailembeds.finders.embedly.embedly',
    'wagtail.wagtailembeds.embeds.oembed': 'wagtail.wagtailembeds.finders.oembed.oembed',
}


def get_default_finder():
    # Check if the user has set the embed finder manually
    if hasattr(settings, 'WAGTAILEMBEDS_EMBED_FINDER'):
        finder_name = settings.WAGTAILEMBEDS_EMBED_FINDER

        if finder_name in MOVED_FINDERS:
            finder_name = MOVED_FINDERS[finder_name]

        return import_string(finder_name)

    # Use embedly if the embedly key is set
    if hasattr(settings, 'WAGTAILEMBEDS_EMBEDLY_KEY'):
        return embedly

    # Fall back to oembed
    return oembed

## Instruction:
Refactor get_default_finder to work without importing finders
## Code After:
from django.utils.module_loading import import_string
from django.conf import settings


MOVED_FINDERS = {
    'wagtail.wagtailembeds.embeds.embedly': 'wagtail.wagtailembeds.finders.embedly.embedly',
    'wagtail.wagtailembeds.embeds.oembed': 'wagtail.wagtailembeds.finders.oembed.oembed',
}


def get_default_finder():
    # Check if the user has set the embed finder manually
    if hasattr(settings, 'WAGTAILEMBEDS_EMBED_FINDER'):
        finder_name = settings.WAGTAILEMBEDS_EMBED_FINDER

        if finder_name in MOVED_FINDERS:
            finder_name = MOVED_FINDERS[finder_name]

    elif hasattr(settings, 'WAGTAILEMBEDS_EMBEDLY_KEY'):
        # Default to Embedly as an embedly key is set
        finder_name = 'wagtail.wagtailembeds.finders.embedly.embedly'

    else:
        # Default to oembed
        finder_name = 'wagtail.wagtailembeds.finders.oembed.oembed'

    return import_string(finder_name)
