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()
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
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)
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)
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
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
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)
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
def _set_tenant(instance, **kwargs): instance.tenant = get_current_tenant()
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
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
def save(self, *args, **kwargs): self.tenant = get_current_tenant() super().save(*args, **kwargs)
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)]
def test_get_and_set_current_tenant_thread_local(db): tenant = StoreTenant.objects.create() set_current_tenant(tenant) assert tenant == get_current_tenant()
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