Beispiel #1
0
def test_tenant_context(db):
    tenant1 = StoreTenant.objects.create()
    tenant2 = StoreTenant.objects.create()
    set_current_tenant(tenant1)

    with tenant_context(tenant2):
        assert tenant2 == get_current_tenant()

    assert tenant1 == get_current_tenant()
Beispiel #2
0
def test_set_current_tenant(logged_client):
    store = StoreTenant.objects.create()
    url = resolve_url('easy_tenants:set-current-tenant', pk=store.id)
    response = logged_client.post(url)

    assert store == get_current_tenant()
    assert response.status_code == 410
Beispiel #3
0
        def bulk_create(self, objs):
            tenant = get_current_tenant()

            for obj in objs:
                if hasattr(obj, 'tenant_id'):
                    obj.tenant = tenant

            return super().bulk_create(objs)
Beispiel #4
0
    def get_queryset(self):
        state = get_state()

        if not state.get("enabled", True):
            return super().get_queryset()

        current_tenant = get_current_tenant()
        return super().get_queryset().filter(tenant=current_tenant)
Beispiel #5
0
    def as_sqlite(self, compiler, connection):
        lhs, lhs_params = self.process_lhs(compiler, connection)
        tenant = get_current_tenant()
        params = lhs_params
        # fix uuid(id) fields, char(32) without '-'
        tenant_id = str(tenant.id).replace('-', '')

        return "%s = '%s'" % (lhs, tenant_id), params
Beispiel #6
0
    def test_post(self, logged_client, settings):
        settings.EASY_TENANTS_SUCCESS_URL = ''
        store = StoreTenant.objects.create()
        url = resolve_url('easy_tenants:set-current-tenant', pk=store.id)
        response = logged_client.post(url)

        assert store == get_current_tenant()
        assert response.status_code == 410
def test_bulk_create(tenant_ctx):
    objs = [
        Product(name='prod1'),
        Product(name='prod2'),
    ]
    Product.objects.bulk_create(objs)
    tenant = get_current_tenant()

    assert Product.objects.count() == 2
    assert objs[0].tenant == tenant
    assert objs[1].tenant == tenant
Beispiel #8
0
    def url(self, name):
        """
        Return an absolute URL joined with a tenant context where the file's
        contents can be accessed directly by a Web browser.
        """
        with suppress(AttributeError):
            tenant = get_current_tenant()
            # TODO: Change tenant attr with function
            name = '{0}/{1}'.format(str(tenant.id), name)

        return super().url(name)
Beispiel #9
0
    def path(self, name):
        """
        Return a local filesystem path joined with a tenant context
        """
        try:
            tenant = get_current_tenant()
            # TODO: Change tenant attr with function
            location = safe_join(self.location, str(tenant.id))
        except AttributeError:
            location = self.location

        path = safe_join(location, name)

        return path
Beispiel #10
0
def _set_tenant(instance, **kwargs):
    instance.tenant = get_current_tenant()
Beispiel #11
0
    def get_relative_tenant_url(self):
        with suppress(AttributeError):
            tenant = get_current_tenant()
            return urljoin(settings.MEDIA_URL, str(tenant.id) + "/")

        return settings.MEDIA_URL
Beispiel #12
0
    def get_relative_tenant_location(self):
        with suppress(AttributeError):
            tenant = get_current_tenant()
            return os.path.join(settings.MEDIA_ROOT, str(tenant.id))

        return settings.MEDIA_ROOT
Beispiel #13
0
 def save(self, *args, **kwargs):
     self.tenant = get_current_tenant()
     super().save(*args, **kwargs)
Beispiel #14
0
 def as_sql(self, compiler, connection, *args, **kwargs):
     current_tenant = get_current_tenant()
     tenant_id = str(current_tenant.id)
     value = self.output_field.get_db_prep_value(tenant_id, connection)
     return "%s", [str(value)]
Beispiel #15
0
def test_get_and_set_current_tenant_thread_local(db):
    tenant = StoreTenant.objects.create()
    set_current_tenant(tenant)

    assert tenant == get_current_tenant()
Beispiel #16
0
    def as_sql(self, compiler, connection):
        lhs, lhs_params = self.process_lhs(compiler, connection)
        tenant = get_current_tenant()
        params = lhs_params

        return "%s = '%s'" % (lhs, tenant.id), params