Ignore accents while searching for users
[cds-indico.git] / migrations / versions / 201506051421_4074211727ba_add_indico_unaccent_function.py
blobdda3c0607269da09aac543496846ba83e5352958
1 """Add indico_unaccent function
3 Revision ID: 4074211727ba
4 Revises: 3f3a9554a6da
5 Create Date: 2015-06-05 14:21:52.752777
6 """
8 from alembic import op
10 # revision identifiers, used by Alembic.
11 revision = '4074211727ba'
12 down_revision = '3f3a9554a6da'
14 SQL_FUNCTION_TEMPLATE = '''
15 CREATE FUNCTION indico_unaccent(value TEXT)
16 RETURNS TEXT
17 AS $$
18 BEGIN
19 RETURN {return_value};
20 END;
22 LANGUAGE plpgsql;
23 '''
26 def upgrade():
27 conn = op.get_bind()
28 unaccent_extension_installed = conn.execute("""
29 SELECT EXISTS(SELECT TRUE FROM pg_extension WHERE extname = 'unaccent')
30 """).scalar()
32 if unaccent_extension_installed:
33 conn.execute(SQL_FUNCTION_TEMPLATE.format(return_value='unaccent(value)'))
34 else:
35 conn.execute(SQL_FUNCTION_TEMPLATE.format(return_value='value'))
38 def downgrade():
39 conn = op.get_bind()
40 conn.execute("DROP FUNCTION indico_unaccent(TEXT)")