Skip to content

Commit

Permalink
Fix #7: Catch psycopg2 not install error
Browse files Browse the repository at this point in the history
  • Loading branch information
bhch committed Nov 7, 2021
1 parent 497cfc0 commit 74cc565
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
11 changes: 10 additions & 1 deletion django_jsonform/forms/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import django
from django.db import models
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured

if django.VERSION[0] >= 3 and django.VERSION[1] >= 1:
# Django >= 3.1
Expand All @@ -13,7 +14,12 @@
else:
from django_jsonform.forms.compat import JSONFormField as DjangoJSONFormField

from django.contrib.postgres.forms import SimpleArrayField
try:
from django.contrib.postgres.forms import SimpleArrayField
except ImportError:
class SimpleArrayField:
mock_field = True

from django_jsonform.widgets import JSONFormWidget

from django.forms.widgets import TextInput
Expand All @@ -31,6 +37,9 @@ def __init__(

class ArrayFormField(SimpleArrayField):
def __init__(self, base_field, **kwargs):
if hasattr(SimpleArrayField, 'mock_field'):
raise ImproperlyConfigured('ArrayField requires psycopg2 to be installed.')

self.base_field = base_field
self.max_items = kwargs.get('max_length', kwargs.get('size', None))
self.min_items = kwargs.get('min_length')
Expand Down
11 changes: 10 additions & 1 deletion django_jsonform/models/fields.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import django
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured

if django.VERSION[0] >= 3 and django.VERSION[1] >= 1:
# Django >= 3.1
Expand All @@ -11,7 +12,12 @@
else:
from django_jsonform.models.compat import JSONField as DjangoJSONField

from django.contrib.postgres.fields import ArrayField as DjangoArrayField
try:
from django.contrib.postgres.fields import ArrayField as DjangoArrayField
except ImportError:
class DjangoArrayField:
mock_field = True

from django_jsonform.forms.fields import JSONFormField
from django_jsonform.forms.fields import ArrayFormField

Expand All @@ -32,6 +38,9 @@ def formfield(self, **kwargs):

class ArrayField(DjangoArrayField):
def __init__(self, *args, **kwargs):
if hasattr(DjangoArrayField, 'mock_field'):
raise ImproperlyConfigured('ArrayField requires psycopg2 to be installed.')

self.nested = kwargs.pop('nested', False)
super().__init__(*args, **kwargs)

Expand Down

0 comments on commit 74cc565

Please sign in to comment.