Skip to content

Commit

Permalink
Remove warnings with Django 1.7 (Closes #195).
Browse files Browse the repository at this point in the history
Builds upon pull request by @shinuza:

- Properly import ``get_model``
- Run ``django.setup()`` before importing any models.
  • Loading branch information
rbarrois committed Apr 13, 2015
1 parent 16b414d commit e357919
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
17 changes: 15 additions & 2 deletions factory/django.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@
"""factory_boy extensions for use with the Django framework."""

try:
import django
from django.core import files as django_files
except ImportError as e: # pragma: no cover
django = None
django_files = None
import_failure = e

Expand All @@ -54,6 +56,18 @@ def require_django():
raise import_failure


if django is None:
def get_model(app, model):
raise import_failure

elif django.VERSION[:2] < (1, 7):
from django.db.models.loading import get_model

else:
from django import apps as django_apps
get_model = django_apps.apps.get_model


class DjangoOptions(base.FactoryOptions):
def _build_default_options(self):
return super(DjangoOptions, self)._build_default_options() + [
Expand Down Expand Up @@ -92,8 +106,7 @@ def _load_model_class(cls, definition):

if is_string(definition) and '.' in definition:
app, model = definition.split('.', 1)
from django.db.models import loading as django_loading
return django_loading.get_model(app, model)
return get_model(app, model)

return definition

Expand Down
4 changes: 2 additions & 2 deletions tests/test_django.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@
if django is not None:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tests.djapp.settings')

if django.VERSION >= (1, 7, 0):
django.setup()
from django import test as django_test
from django.conf import settings
from django.db import models as django_models
Expand All @@ -64,8 +66,6 @@
else:
django_test = unittest

if django is not None and django.VERSION >= (1, 7, 0):
django.setup()

test_state = {}

Expand Down

0 comments on commit e357919

Please sign in to comment.