Projet

Général

Profil

0003-misc-add-site-option-to-force-lazy-evaluation-29951.patch

Frédéric Péters, 16 avril 2019 10:51

Télécharger (4,19 ko)

Voir les différences:

Subject: [PATCH 3/3] misc: add site option to force lazy evaluation (#29951)

 tests/test_form_pages.py   |  5 +++--
 tests/utilities.py         | 19 +++++++++++++------
 wcs/qommon/substitution.py |  4 +++-
 3 files changed, 19 insertions(+), 9 deletions(-)
tests/test_form_pages.py
58 58

  
59 59
def pytest_generate_tests(metafunc):
60 60
    if 'pub' in metafunc.fixturenames:
61
        metafunc.parametrize('pub', ['pickle', 'sql', 'pickle-templates'], indirect=True)
61
        metafunc.parametrize('pub', ['pickle', 'sql', 'pickle-templates', 'pickle-lazy'], indirect=True)
62 62

  
63 63
@pytest.fixture
64 64
def pub(request, emails):
65 65
    pub = create_temporary_pub(
66 66
            sql_mode=bool('sql' in request.param),
67
            templates_mode=bool('templates' in request.param)
67
            templates_mode=bool('templates' in request.param),
68
            lazy_mode=bool('lazy' in request.param),
68 69
            )
69 70
    pub.cfg['identification'] = {'methods': ['password']}
70 71
    pub.cfg['language'] = {'language': 'en'}
tests/utilities.py
37 37
    sql_app_dir = None
38 38
    sql_db_name = None
39 39
    templates_app_dir = None
40
    lazy_app_dir = None
40 41

  
41 42
known_elements = KnownElements()
42 43

  
43
def create_temporary_pub(sql_mode=False, templates_mode=False):
44
def create_temporary_pub(sql_mode=False, templates_mode=False, lazy_mode=False):
44 45
    if sql_mode is True:
45 46
        if pytest.config.getoption('without_postgresql_tests'):
46 47
            pytest.skip("unsupported configuration")
......
50 51
        cleanup()
51 52
    if templates_mode and known_elements.templates_app_dir:
52 53
        APP_DIR = known_elements.templates_app_dir
53
    elif (not sql_mode and not templates_mode) and known_elements.pickle_app_dir:
54
        APP_DIR = known_elements.pickle_app_dir
55
    elif sql_mode is True and known_elements.sql_app_dir:
54
    elif lazy_mode and known_elements.lazy_app_dir:
55
        APP_DIR = known_elements.lazy_app_dir
56
    elif sql_mode and known_elements.sql_app_dir:
56 57
        APP_DIR = known_elements.sql_app_dir
58
    elif not (templates_mode or lazy_mode or sql_mode) and known_elements.pickle_app_dir:
59
        APP_DIR = known_elements.pickle_app_dir
57 60
    else:
58 61
        APP_DIR = tempfile.mkdtemp()
59 62
        if templates_mode:
60 63
            known_elements.templates_app_dir = APP_DIR
61
        elif sql_mode is True:
64
        elif lazy_mode:
65
            known_elements.lazy_app_dir = APP_DIR
66
        elif sql_mode:
62 67
            known_elements.sql_app_dir = APP_DIR
63
        elif sql_mode is False:
68
        else:
64 69
            known_elements.pickle_app_dir = APP_DIR
65 70

  
66 71
    compat.CompatWcsPublisher.APP_DIR = APP_DIR
......
105 110
    fd.write('formdef-captcha-option = true\n')
106 111
    fd.write('formdef-appearance-keywords = true\n')
107 112
    fd.write('workflow-resubmit-action = true\n')
113
    if lazy_mode:
114
        fd.write('force-lazy-mode = true\n')
108 115
    if sql_mode:
109 116
        fd.write('postgresql = true\n')
110 117

  
wcs/qommon/substitution.py
104 104
    def get_context_variables(self, mode=None):
105 105
        if self._forced_mode:
106 106
            mode = self._forced_mode
107
        lazy = mode in get_publisher().get_lazy_variables_modes() if mode else False
107
        lazy = get_publisher().has_site_option('force-lazy-mode')
108
        if not lazy and mode:
109
            lazy = mode in get_publisher().get_lazy_variables_modes()
108 110
        d = getattr(self, '_cache_context_variables%r' % lazy, None)
109 111
        if d is not None:
110 112
            return d
111
-