Skip to content

Commit

Permalink
Fix inline imports
Browse files Browse the repository at this point in the history
  • Loading branch information
shosca committed Jan 4, 2019
1 parent 3588867 commit cb2dc7f
Show file tree
Hide file tree
Showing 11 changed files with 53 additions and 30 deletions.
10 changes: 10 additions & 0 deletions django_sorcery/db/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,8 +143,18 @@

from __future__ import absolute_import, print_function, unicode_literals

from . import middleware
from .sqlalchemy import SQLAlchemy # noqa
from .utils import dbdict


databases = dbdict()


class SQLAlchemyMiddleware(middleware.SQLAlchemyDBMiddleware):

db = databases


# For backwards compat, we set it back to the middleware module
middleware.SQLAlchemyMiddleware = SQLAlchemyMiddleware
6 changes: 3 additions & 3 deletions django_sorcery/db/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
from django.core import validators as django_validators
from django.forms import fields as djangofields

from .. import fields as sorceryfields


__all__ = [
"BigIntegerField",
Expand Down Expand Up @@ -208,9 +210,7 @@ def get_type(self, type_class, type_kwargs):

def get_form_class(self, kwargs):
if self.type.enum_class:
from ..fields import EnumField

return EnumField
return sorceryfields.EnumField

return djangofields.TypedChoiceField

Expand Down
33 changes: 28 additions & 5 deletions django_sorcery/db/meta/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,32 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals
import sys
import types


if True: # skipping importanize, imports need to be in this order for py2
from .column import * # noqa
from .model import * # noqa
from .composite import * # noqa
from .relations import * # noqa
class lazy_module(types.ModuleType):
def __init__(self, name, old_module, origins):
super(lazy_module, self).__init__(name)
self.origins = origins or {}
self.__dict__.update(
{
"__file__": old_module.__file__,
"__package__": old_module.__package__,
"__path__": old_module.__path__,
"__doc__": old_module.__doc__,
}
)

def __getattr__(self, name):
if name in self.origins:
module = __import__(self.__name__ + "." + self.origins[name], None, None, [name])
return getattr(module, name)
return types.ModuleType.__getattribute__(self, name)


old_module = sys.modules[__name__]
sys.modules[__name__] = lazy_module(
__name__,
old_module,
{"model_info": "model", "Identity": "model", "relation_info": "relations", "column_info": "column"},
)
4 changes: 2 additions & 2 deletions django_sorcery/db/meta/relations.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

from django.core.exceptions import ImproperlyConfigured

from ...fields import ModelChoiceField, ModelMultipleChoiceField


class relation_info(object):
"""
Expand Down Expand Up @@ -114,8 +116,6 @@ def formfield(self, form_class=None, **kwargs):
return form_class(self.related_model, **field_kwargs)

def get_form_class(self):
from ...fields import ModelChoiceField, ModelMultipleChoiceField

if self.uselist:
return ModelMultipleChoiceField

Expand Down
6 changes: 0 additions & 6 deletions django_sorcery/db/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from __future__ import absolute_import, print_function, unicode_literals
import logging

from . import databases
from .signals import all_signals


Expand Down Expand Up @@ -78,8 +77,3 @@ def commit(self, request, response):

def remove(self, request, response):
self.db.remove()


class SQLAlchemyMiddleware(SQLAlchemyDBMiddleware):

db = databases
5 changes: 2 additions & 3 deletions django_sorcery/db/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

from django.utils.text import camel_case_to_spaces

from ..forms import model_to_dict as real_model_to_dict
from . import meta, signals
from .mixins import CleanMixin

Expand Down Expand Up @@ -39,9 +40,7 @@ def get_identity_key(model, kwargs):

def model_to_dict(instance, fields=None, exclude=None):
warnings.warn("Deprecated, use django_sorcery.forms.model_to_dict instead.", DeprecationWarning)
from ..forms import model_to_dict

return model_to_dict(instance, fields=fields, exclude=exclude)
return real_model_to_dict(instance, fields=fields, exclude=exclude)


def simple_repr(instance, fields=None):
Expand Down
3 changes: 1 addition & 2 deletions django_sorcery/db/sqlalchemy.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from ..utils import make_args
from . import fields
from .composites import BaseComposite, CompositeField
from .middleware import SQLAlchemyDBMiddleware
from .models import Base, BaseMeta
from .query import Query, QueryProperty
from .relations import RelationsMixin
Expand Down Expand Up @@ -239,8 +240,6 @@ def make_middleware(self):
"""
Creates a middleware to be used in a django application
"""
from .middleware import SQLAlchemyDBMiddleware

return type(str("{}SQLAlchemyMiddleware".format(self.alias)), (SQLAlchemyDBMiddleware,), {"db": self})

def args(self, *args, **kwargs):
Expand Down
2 changes: 1 addition & 1 deletion django_sorcery/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
from django.forms import fields as djangofields
from django.utils.translation import gettext_lazy

from .db import meta
from .utils import suppress


Expand Down Expand Up @@ -110,7 +111,6 @@ def __init__(

self._choices = None
self.model = model
from .db import meta

self.model_info = meta.model_info(model)
self.session = session
Expand Down
6 changes: 2 additions & 4 deletions django_sorcery/validators/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals


if True:
from .runner import ValidationRunner # noqa
from .base import * # noqa
from .base import * # noqa
from .runner import ValidationRunner # noqa
4 changes: 2 additions & 2 deletions django_sorcery/validators/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
from django.core.exceptions import ValidationError
from django.utils.translation import gettext_lazy as _

from ..db import meta


class ValidateTogetherModelFields(object):
"""
Expand Down Expand Up @@ -67,8 +69,6 @@ def __init__(self, session, *args, **kwargs):
def __call__(self, m):
clauses = [getattr(m.__class__, attr) == getattr(m, attr) for attr in self.attrs]

from ..db import meta

info = meta.model_info(m)
state = info.sa_state(m)
if state.persistent:
Expand Down
4 changes: 2 additions & 2 deletions tests/db/meta/test_column.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,12 @@ def test_column_info_enum(self):
def test_column_info_enum_from_class_from_info(self):
col = sa.Column(sa.Enum(VehicleType), info={"form_class": djangofields.IntegerField})
info = meta.column_info(col, name="test")
self.assertIsInstance(info, meta.enum_column_info)
self.assertIsInstance(info, meta.column.enum_column_info)
self.assertEqual(info.form_class, djangofields.IntegerField)

def test_column_info_boolean_from_class_from_info(self):
info = meta.column_info(sa.Column(sa.Boolean(), info={"form_class": djangofields.IntegerField}), name="test")
self.assertIsInstance(info, meta.boolean_column_info)
self.assertIsInstance(info, meta.column.boolean_column_info)
self.assertEqual(info.form_class, djangofields.IntegerField)

def test_column_info_validators(self):
Expand Down

0 comments on commit cb2dc7f

Please sign in to comment.