From aae14009291e6782b0b10a9830959d4792043c26 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Fri, 13 Nov 2020 21:37:39 +1100 Subject: [PATCH] Mayyyyyyyyyyyyybe? --- InvenTree/common/models.py | 19 ++++++++++--------- InvenTree/common/test_views.py | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index 2563ee456b..97a0b024c4 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -9,7 +9,7 @@ from __future__ import unicode_literals import os from django.db import models -from django.db.utils import IntegrityError +from django.db.utils import IntegrityError, OperationalError from django.conf import settings import djmoney.settings @@ -17,7 +17,6 @@ from djmoney.models.fields import MoneyField from djmoney.contrib.exchange.models import convert_money from djmoney.contrib.exchange.exceptions import MissingRate -from django.db.utils import OperationalError from django.utils.translation import ugettext as _ from django.core.validators import MinValueValidator from django.core.exceptions import ValidationError @@ -284,16 +283,18 @@ class InvenTreeSetting(models.Model): setting = InvenTreeSetting.objects.filter(key__iexact=key).first() except (ValueError, InvenTreeSetting.DoesNotExist): setting = None - except (IntegrityError): + except (IntegrityError, OperationalError): setting = None + # Setting does not exist! (Try to create it) if not setting: - # Return a new setting object if it does not already exist - # Do not save it to the database, though - setting = InvenTreeSetting( - key=key, - value=InvenTreeSetting.get_setting_default(key) - ) + try: + # Attempt to create a new settin object + setting = InvenTreeSetting.objects.create(key=key, value=InvenTreeSetting.get_setting_default(key)) + except (IntegrityError, OperationalError): + # It might be the case that the database isn't created yet + # In such a case, return the object (but do not save it!) + setting = InvenTreeSetting(key=key, value=InvenTreeSetting.get_setting_default(key)) return setting diff --git a/InvenTree/common/test_views.py b/InvenTree/common/test_views.py index d948f93b02..0cd902d083 100644 --- a/InvenTree/common/test_views.py +++ b/InvenTree/common/test_views.py @@ -82,7 +82,7 @@ class SettingsViewTest(TestCase): url = self.get_url(setting.pk) - response = self.get(url) + self.get(url) new_name = 'A new instance name!'