import traceback

from django.apps import AppConfig
from django.conf import settings
from django.db import OperationalError, ProgrammingError
from django_scopes import scopes_disabled

from recipes.settings import DEBUG


class CookbookConfig(AppConfig):
    name = 'cookbook'

    def ready(self):
        import cookbook.signals  # noqa

        # if not settings.DISABLE_TREE_FIX_STARTUP:
        #     # when starting up run fix_tree to:
        #     #   a) make sure that nodes are sorted when switching between sort modes
        #     #   b) fix problems, if any, with tree consistency
        #     with scopes_disabled():
        #         try:
        #             from cookbook.models import Food, Keyword
        #             Keyword.fix_tree(fix_paths=True)
        #             Food.fix_tree(fix_paths=True)
        #         except OperationalError:
        #             if DEBUG:
        #                 traceback.print_exc()
        #             pass  # if model does not exist there is no need to fix it
        #         except ProgrammingError:
        #             if DEBUG:
        #                 traceback.print_exc()
        #             pass  # if migration has not been run database cannot be fixed yet
        #         except Exception:
        #             if DEBUG:
        #                 traceback.print_exc()
        #             pass  # dont break startup just because fix could not run, need to investigate cases when this happens
