moved fix tree to apps ready hook and wrapped in catch for non existing models
This commit is contained in:
parent
32657949e2
commit
26ef66f4e1
@ -1,5 +1,7 @@
|
|||||||
from django.apps import AppConfig
|
from django.apps import AppConfig
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
from django.db import OperationalError
|
||||||
|
from django_scopes import scopes_disabled
|
||||||
|
|
||||||
|
|
||||||
class CookbookConfig(AppConfig):
|
class CookbookConfig(AppConfig):
|
||||||
@ -9,3 +11,14 @@ class CookbookConfig(AppConfig):
|
|||||||
# post_save signal is only necessary if using full-text search on postgres
|
# post_save signal is only necessary if using full-text search on postgres
|
||||||
if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']:
|
if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']:
|
||||||
import cookbook.signals # noqa
|
import cookbook.signals # noqa
|
||||||
|
|
||||||
|
# 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 Keyword, Food
|
||||||
|
Keyword.fix_tree(fix_paths=True)
|
||||||
|
Food.fix_tree(fix_paths=True)
|
||||||
|
except OperationalError:
|
||||||
|
pass # if model does not exist there is no need to fix it
|
||||||
|
@ -358,13 +358,6 @@ class Keyword(ExportModelOperationsMixin('keyword'), TreeModel, PermissionModelM
|
|||||||
indexes = (Index(fields=['id', 'name']),)
|
indexes = (Index(fields=['id', 'name']),)
|
||||||
|
|
||||||
|
|
||||||
# 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():
|
|
||||||
Keyword.fix_tree(fix_paths=True)
|
|
||||||
|
|
||||||
|
|
||||||
class Unit(ExportModelOperationsMixin('unit'), models.Model, PermissionModelMixin):
|
class Unit(ExportModelOperationsMixin('unit'), models.Model, PermissionModelMixin):
|
||||||
name = models.CharField(max_length=128, validators=[MinLengthValidator(1)])
|
name = models.CharField(max_length=128, validators=[MinLengthValidator(1)])
|
||||||
description = models.TextField(blank=True, null=True)
|
description = models.TextField(blank=True, null=True)
|
||||||
@ -412,13 +405,6 @@ class Food(ExportModelOperationsMixin('food'), TreeModel, PermissionModelMixin):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# 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():
|
|
||||||
Food.fix_tree(fix_paths=True)
|
|
||||||
|
|
||||||
|
|
||||||
class Ingredient(ExportModelOperationsMixin('ingredient'), models.Model, PermissionModelMixin):
|
class Ingredient(ExportModelOperationsMixin('ingredient'), models.Model, PermissionModelMixin):
|
||||||
# a pre-delete signal on Food checks if the Ingredient is part of a Step, if it is raises a ProtectedError instead of cascading the delete
|
# a pre-delete signal on Food checks if the Ingredient is part of a Step, if it is raises a ProtectedError instead of cascading the delete
|
||||||
food = models.ForeignKey(Food, on_delete=models.CASCADE, null=True, blank=True)
|
food = models.ForeignKey(Food, on_delete=models.CASCADE, null=True, blank=True)
|
||||||
|
Loading…
Reference in New Issue
Block a user