multitenant: enable DISABLE_CRON_JOBS for a specific tenant (#56595)
This commit is contained in:
parent
4d2d6a05d1
commit
f9de8f6f6d
|
@ -132,9 +132,20 @@ class Command(InteractiveTenantOption, BaseCommand):
|
|||
if args_namespace.all_tenants:
|
||||
errors = []
|
||||
for tenant in TenantMiddleware.get_tenants():
|
||||
connection.set_tenant(tenant)
|
||||
if getattr(settings, 'DISABLE_CRON_JOBS', False):
|
||||
if args_verbosity.verbosity > 1 or args_namespace.force_job:
|
||||
msg = 'Command %s is ignored on tenant %s because DISABLE_CRON_JOBS is set' % (
|
||||
app_name,
|
||||
tenant.domain_url,
|
||||
)
|
||||
prefix = '* '
|
||||
if args_namespace.force_job:
|
||||
prefix = '* WARNING: '
|
||||
print(prefix + msg)
|
||||
continue
|
||||
if args_verbosity.verbosity > 1:
|
||||
print(u'* Running command on tenant %s' % tenant.domain_url)
|
||||
connection.set_tenant(tenant)
|
||||
error = run_command_from_argv(klass, args)
|
||||
if error:
|
||||
errors.append(error)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
@ -45,6 +46,34 @@ def test_all_tenants(handle, tenants):
|
|||
)
|
||||
|
||||
|
||||
@mock.patch('django.contrib.sessions.management.commands.clearsessions.Command.handle')
|
||||
def test_all_tenants_disable_cron(handle, tenants, settings):
|
||||
from django.core.management import execute_from_command_line
|
||||
|
||||
settings.DISABLE_CRON_JOBS = True
|
||||
handle.side_effect = RecordTenant()
|
||||
execute_from_command_line(['manage.py', 'tenant_command', 'clearsessions', '--all-tenants'])
|
||||
assert handle.call_count == 0
|
||||
assert len(handle.side_effect.tenants) == 0
|
||||
|
||||
|
||||
@mock.patch('django.contrib.sessions.management.commands.clearsessions.Command.handle')
|
||||
def test_all_tenants_disable_cron_for_specific_tenant(handle, tenants, settings):
|
||||
from django.core.management import execute_from_command_line
|
||||
|
||||
settings.clear_tenants_settings()
|
||||
disabled_tenant = tenants[0]
|
||||
with open(os.path.join(disabled_tenant.get_directory(), 'settings.json'), 'w') as fd:
|
||||
json.dump(
|
||||
{'DISABLE_CRON_JOBS': True},
|
||||
fd,
|
||||
)
|
||||
handle.side_effect = RecordTenant()
|
||||
execute_from_command_line(['manage.py', 'tenant_command', 'clearsessions', '--all-tenants'])
|
||||
assert handle.call_count == 1
|
||||
assert len(handle.side_effect.tenants) == 1
|
||||
|
||||
|
||||
@mock.patch('django.contrib.sessions.management.commands.clearsessions.Command.handle')
|
||||
def test_one_tenant(handle, tenants, tenant_in_call=None):
|
||||
from django.core.management import execute_from_command_line
|
||||
|
|
Loading…
Reference in New Issue