diff options
author | Daniel Axtens <dja@axtens.net> | 2016-08-09 14:27:36 +1000 |
---|---|---|
committer | Stephen Finucane <stephenfinucane@hotmail.com> | 2016-08-20 19:18:20 +0100 |
commit | 231966452f22dd344eabdd4f0722ce5463d1469a (patch) | |
tree | f00b68f2eb1b99d49fe1577625b757c5d7469b13 | |
parent | ab5eb273f00a90bad035f6189b8fff7ac4d07fbf (diff) | |
download | patchwork-231966452f22dd344eabdd4f0722ce5463d1469a.tar patchwork-231966452f22dd344eabdd4f0722ce5463d1469a.tar.gz |
Fix failure to start with uninitalised database
An OptionalModelChoiceField will attempt to query the database to get choices
in its __init__ method. This fails if the database hasn't been initialised
yet. So, put that in a try/catch block. This lets things work through the
migration and loading of data from fixtures.
Signed-off-by: Daniel Axtens <dja@axtens.net>
Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Reviewed-by: Stephen Finucane <stephenfinucane@hotmail.com>
-rw-r--r-- | patchwork/forms.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/patchwork/forms.py b/patchwork/forms.py index 3f876b7..1897093 100644 --- a/patchwork/forms.py +++ b/patchwork/forms.py @@ -21,6 +21,7 @@ from __future__ import absolute_import from django.contrib.auth.models import User from django import forms +from django.db.utils import ProgrammingError from patchwork.models import Patch, State, Bundle, UserProfile @@ -165,8 +166,14 @@ class OptionalModelChoiceField(forms.ModelChoiceField): __init__(initial=self.no_change_choice[0], *args, **kwargs) def _get_choices(self): - choices = list( - super(OptionalModelChoiceField, self)._get_choices()) + # _get_choices queries the database, which can fail if the db + # hasn't been initialised yet. catch that and give an empty + # set of choices for now. + try: + choices = list( + super(OptionalModelChoiceField, self)._get_choices()) + except ProgrammingError: + choices = [] choices.append(self.no_change_choice) return choices |