Skip to content

Commit 80ac116

Browse files
author
Clement Denoix
committed
fix(Index) Make the temp index name respect the suffix and prefix
1 parent ce9447c commit 80ac116

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

algoliasearch_django/models.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,13 +164,23 @@ def __init_index(self, client, model, settings):
164164
if not self.index_name:
165165
self.index_name = model.__name__
166166

167+
tmp_index_name = '{index_name}_tmp'.format(index_name=self.index_name)
168+
167169
if 'INDEX_PREFIX' in settings:
168170
self.index_name = settings['INDEX_PREFIX'] + '_' + self.index_name
171+
tmp_index_name = '{index_prefix}_{tmp_index_name}'.format(
172+
tmp_index_name=tmp_index_name,
173+
index_prefix=settings['INDEX_PREFIX']
174+
)
169175
if 'INDEX_SUFFIX' in settings:
170176
self.index_name += '_' + settings['INDEX_SUFFIX']
177+
tmp_index_name = '{tmp_index_name}_{index_suffix}'.format(
178+
tmp_index_name=tmp_index_name,
179+
index_suffix=settings['INDEX_SUFFIX']
180+
)
171181

172182
self.__index = client.init_index(self.index_name)
173-
self.__tmp_index = client.init_index(self.index_name + '_tmp')
183+
self.__tmp_index = client.init_index(tmp_index_name)
174184

175185
@staticmethod
176186
def _validate_geolocation(geolocation):

tests/test_index.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,54 @@ def test_index_name_settings(self):
8282
except AttributeError:
8383
self.assertRegexpMatches(self.index.index_name, regex)
8484

85+
def test_tmp_index_name(self):
86+
"""Test that the temporary index name should respect suffix and prefix settings"""
87+
88+
algolia_settings = dict(settings.ALGOLIA)
89+
90+
# With no suffix nor prefix
91+
del algolia_settings['INDEX_PREFIX']
92+
del algolia_settings['INDEX_SUFFIX']
93+
94+
with self.settings(ALGOLIA=algolia_settings):
95+
self.index = AlgoliaIndex(Website, self.client, settings.ALGOLIA)
96+
self.assertEqual(
97+
self.index._AlgoliaIndex__tmp_index.index_name,
98+
'Website_tmp'
99+
)
100+
101+
# With only a prefix
102+
algolia_settings['INDEX_PREFIX'] = 'prefix'
103+
104+
with self.settings(ALGOLIA=algolia_settings):
105+
self.index = AlgoliaIndex(Website, self.client, settings.ALGOLIA)
106+
self.assertEqual(
107+
self.index._AlgoliaIndex__tmp_index.index_name,
108+
'prefix_Website_tmp'
109+
)
110+
111+
# With only a suffix
112+
del algolia_settings['INDEX_PREFIX']
113+
algolia_settings['INDEX_SUFFIX'] = 'suffix'
114+
115+
with self.settings(ALGOLIA=algolia_settings):
116+
self.index = AlgoliaIndex(Website, self.client, settings.ALGOLIA)
117+
self.assertEqual(
118+
self.index._AlgoliaIndex__tmp_index.index_name,
119+
'Website_tmp_suffix'
120+
)
121+
122+
# With a prefix and a suffix
123+
algolia_settings['INDEX_PREFIX'] = 'prefix'
124+
algolia_settings['INDEX_SUFFIX'] = 'suffix'
125+
126+
with self.settings(ALGOLIA=algolia_settings):
127+
self.index = AlgoliaIndex(Website, self.client, settings.ALGOLIA)
128+
self.assertEqual(
129+
self.index._AlgoliaIndex__tmp_index.index_name,
130+
'prefix_Website_tmp_suffix'
131+
)
132+
85133
def test_reindex_with_replicas(self):
86134
self.index = AlgoliaIndex(Website, self.client, settings.ALGOLIA)
87135

0 commit comments

Comments
 (0)