0001-multitenant-enable-DISABLE_CRON_JOBS-for-a-specific-.patch
hobo/multitenant/management/commands/tenant_command.py | ||
---|---|---|
132 | 132 |
if args_namespace.all_tenants: |
133 | 133 |
errors = [] |
134 | 134 |
for tenant in TenantMiddleware.get_tenants(): |
135 |
connection.set_tenant(tenant) |
|
136 |
if getattr(settings, 'DISABLE_CRON_JOBS', False): |
|
137 |
if args_verbosity.verbosity > 1 or args_namespace.force_job: |
|
138 |
msg = 'Command %s is ignored on tenant %s because DISABLE_CRON_JOBS is set' % ( |
|
139 |
app_name, |
|
140 |
tenant.domain_url, |
|
141 |
) |
|
142 |
prefix = '* ' |
|
143 |
if args_namespace.force_job: |
|
144 |
prefix = '* WARNING : ' |
|
145 |
print(prefix + msg) |
|
146 |
continue |
|
135 | 147 |
if args_verbosity.verbosity > 1: |
136 | 148 |
print(u'* Running command on tenant %s' % tenant.domain_url) |
137 |
connection.set_tenant(tenant) |
|
138 | 149 |
error = run_command_from_argv(klass, args) |
139 | 150 |
if error: |
140 | 151 |
errors.append(error) |
tests_multitenant/test_tenant_command.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 | |
3 |
import json |
|
3 | 4 |
import os |
4 | 5 |
import sys |
5 | 6 | |
... | ... | |
45 | 46 |
) |
46 | 47 | |
47 | 48 | |
49 |
@mock.patch('django.contrib.sessions.management.commands.clearsessions.Command.handle') |
|
50 |
def test_all_tenants_disable_cron(handle, tenants, settings): |
|
51 |
from django.core.management import execute_from_command_line |
|
52 | ||
53 |
settings.DISABLE_CRON_JOBS = True |
|
54 |
handle.side_effect = RecordTenant() |
|
55 |
execute_from_command_line(['manage.py', 'tenant_command', 'clearsessions', '--all-tenants']) |
|
56 |
assert handle.call_count == 0 |
|
57 |
assert len(handle.side_effect.tenants) == 0 |
|
58 | ||
59 | ||
60 |
@mock.patch('django.contrib.sessions.management.commands.clearsessions.Command.handle') |
|
61 |
def test_all_tenants_disable_cron_for_specific_tenant(handle, tenants, settings): |
|
62 |
from django.core.management import execute_from_command_line |
|
63 | ||
64 |
settings.clear_tenants_settings() |
|
65 |
disabled_tenant = tenants[0] |
|
66 |
with open(os.path.join(disabled_tenant.get_directory(), 'settings.json'), 'w') as fd: |
|
67 |
json.dump( |
|
68 |
{'DISABLE_CRON_JOBS': True}, |
|
69 |
fd, |
|
70 |
) |
|
71 |
handle.side_effect = RecordTenant() |
|
72 |
execute_from_command_line(['manage.py', 'tenant_command', 'clearsessions', '--all-tenants']) |
|
73 |
assert handle.call_count == 1 |
|
74 |
assert len(handle.side_effect.tenants) == 1 |
|
75 | ||
76 | ||
48 | 77 |
@mock.patch('django.contrib.sessions.management.commands.clearsessions.Command.handle') |
49 | 78 |
def test_one_tenant(handle, tenants, tenant_in_call=None): |
50 | 79 |
from django.core.management import execute_from_command_line |
51 |
- |