search: allow failures to enable unaccent extension (#40024)
This commit is contained in:
parent
e2348d6977
commit
3004989cdc
|
@ -2,8 +2,9 @@
|
|||
# Generated by Django 1.11.17 on 2020-02-19 08:20
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
from django.db import migrations, transaction
|
||||
from django.db.migrations.operations.base import Operation
|
||||
from django.db.utils import InternalError, OperationalError, ProgrammingError
|
||||
|
||||
|
||||
class TextSearchConfiguration(Operation):
|
||||
|
@ -15,12 +16,26 @@ class TextSearchConfiguration(Operation):
|
|||
def database_forwards(self, app_label, schema_editor, from_state, to_state):
|
||||
if schema_editor.connection.vendor != 'postgresql':
|
||||
return
|
||||
schema_editor.execute('CREATE EXTENSION IF NOT EXISTS unaccent SCHEMA public')
|
||||
try:
|
||||
with transaction.atomic():
|
||||
try:
|
||||
schema_editor.execute('CREATE EXTENSION IF NOT EXISTS unaccent SCHEMA public')
|
||||
except (OperationalError, ProgrammingError):
|
||||
# OperationalError if the extension is not available
|
||||
# ProgrammingError in case of denied permission
|
||||
dictionaries = 'french_stem'
|
||||
else:
|
||||
dictionaries = 'public.unaccent, french_stem'
|
||||
except InternalError:
|
||||
# InternalError (current transaction is aborted, commands ignored
|
||||
# until end of transaction block) would be raised when django-
|
||||
# tenant-schemas set search_path.
|
||||
pass
|
||||
schema_editor.execute('CREATE TEXT SEARCH CONFIGURATION french_unaccent( COPY = french )')
|
||||
schema_editor.execute(
|
||||
'ALTER TEXT SEARCH CONFIGURATION french_unaccent '
|
||||
'ALTER MAPPING FOR hword, hword_part, word '
|
||||
'WITH public.unaccent, french_stem')
|
||||
'WITH %s' % dictionaries)
|
||||
|
||||
def database_backwards(self, app_label, schema_editor, from_state, to_state):
|
||||
if schema_editor.connection.vendor != 'postgresql':
|
||||
|
|
Loading…
Reference in New Issue