Projet

Général

Profil

0001-multitenant-enable-DISABLE_CRON_JOBS-for-a-specific-.patch

Emmanuel Cazenave, 09 septembre 2021 17:03

Télécharger (3,39 ko)

Voir les différences:

Subject: [PATCH] multitenant: enable DISABLE_CRON_JOBS for a specific tenant
 (#56595)

 .../management/commands/tenant_command.py     |  9 +++++-
 tests_multitenant/test_tenant_command.py      | 29 +++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)
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 not args_namespace.force_job and getattr(settings, 'DISABLE_CRON_JOBS', False):
137
                    if args_verbosity.verbosity > 1:
138
                        print(
139
                            '* Command %s is ignored on tenant %s because DISABLE_CRON_JOBS is set'
140
                            % (app_name, tenant.domain_url)
141
                        )
142
                    continue
135 143
                if args_verbosity.verbosity > 1:
136 144
                    print(u'* Running command on tenant %s' % tenant.domain_url)
137
                connection.set_tenant(tenant)
138 145
                error = run_command_from_argv(klass, args)
139 146
                if error:
140 147
                    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
-