Fixed error causing the cached _schema to not be updated.

- This was causing conflicts between tests, causing some to fail
  by that.
This commit is contained in:
Jorge C. Leitão 2014-05-10 21:49:16 +02:00
parent 7f3702a4a2
commit 8e0b982af9
1 changed files with 10 additions and 4 deletions

View File

@ -155,19 +155,25 @@ class XapianSearchBackend(BaseSearchBackend):
self.flags = connection_options.get('FLAGS', DEFAULT_XAPIAN_FLAGS)
self.language = getattr(settings, 'HAYSTACK_XAPIAN_LANGUAGE', 'english')
self._fields = None
self._schema = None
self._content_field_name = None
def _get_schema_and_content_field_name(self):
fields = connections[self.connection_alias].get_unified_index().all_searchfields()
if self._fields != fields:
self._fields = fields
self._content_field_name, self._schema = self.build_schema(self._fields)
return self._content_field_name, self._schema
@property
def schema(self):
if not self._schema:
self._content_field_name, self._schema = self.build_schema(connections[self.connection_alias].get_unified_index().all_searchfields())
_, self._schema = self._get_schema_and_content_field_name()
return self._schema
@property
def content_field_name(self):
if not self._content_field_name:
self._content_field_name, self._schema = self.build_schema(connections[self.connection_alias].get_unified_index().all_searchfields())
self._content_field_name, _ = self._get_schema_and_content_field_name()
return self._content_field_name
def update(self, index, iterable):