citusdata / django-multitenant

Python/Django support for distributed multi-tenant databases like Postgres+Citus
MIT License
731 stars 118 forks source link

2.0.5 fails to import TenantQuerySet #46

Closed ajyong closed 5 years ago

ajyong commented 5 years ago

After installing 2.0.5, my application reports that django-multitenant can't import TenantQuerySet:

Traceback (most recent call last):
  File "/usr/local/bin/django-admin.py", line 5, in <module>
    management.execute_from_command_line()
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.6/dist-packages/django/core/management/__init__.py", line 347, in execute
    django.setup()
  File "/usr/local/lib/python3.6/dist-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/local/lib/python3.6/dist-packages/django/apps/registry.py", line 112, in populate
    app_config.import_models()
  File "/usr/local/lib/python3.6/dist-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/app/helm/invitations/models.py", line 25, in <module>
    from .base_invitation import AbstractBaseInvitation
  File "/app/helm/invitations/base_invitation.py", line 6, in <module>
    from .managers import BaseInvitationManager
  File "/app/helm/invitations/managers.py", line 8, in <module>
    from django_multitenant.django_multitenant import TenantManager
  File "/usr/local/lib/python3.6/dist-packages/django_multitenant/django_multitenant.py", line 14, in <module>
    from .models import TenantManager, TenantModel, TenantQuerySet
ImportError: cannot import name 'TenantQuerySet'

Checking models.py in 2.0.5, there's no longer an import for TenantQuerySet:

import logging

from django.db import models

from .mixins import (TenantManagerMixin,
                     TenantModelMixin)

from .utils import (
    set_current_tenant,
    get_current_tenant,
    get_model_by_db_table,
    get_tenant_column
)

logger = logging.getLogger(__name__)

class TenantManager(TenantManagerMixin, models.Manager):
    #Below is the manager related to the above class.
    pass

class TenantModel(TenantModelMixin, models.Model):
    #Abstract model which all the models related to tenant inherit.

    objects = TenantManager()

    class Meta:
        abstract = True

Reverting to 2.0.4 resolves the problem.

louiseGrandjonc commented 5 years ago

Hi ! Sorry for the delay, this is fixed in 2.0.7