87 lines
3.3 KiB
Python
87 lines
3.3 KiB
Python
# Generated by Django 3.1.7 on 2021-04-07 20:00
|
|
from django.conf import settings
|
|
from django.contrib.postgres.indexes import GinIndex
|
|
from django.contrib.postgres.search import SearchVectorField, SearchVector
|
|
from django.db import migrations
|
|
from django_scopes import scopes_disabled
|
|
from django.utils import translation
|
|
from cookbook.managers import DICTIONARY
|
|
from cookbook.models import Recipe, Step, Index
|
|
|
|
|
|
|
|
|
|
def set_default_search_vector(apps, schema_editor):
|
|
if settings.DATABASES['default']['ENGINE'] not in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']:
|
|
return
|
|
language = DICTIONARY.get(translation.get_language(), 'simple')
|
|
with scopes_disabled():
|
|
# TODO this approach doesn't work terribly well if multiple languages are in use
|
|
Recipe.objects.all().update(
|
|
name_search_vector=SearchVector('name__unaccent', weight='A', config=language),
|
|
desc_search_vector=SearchVector('description__unaccent', weight='B', config=language)
|
|
)
|
|
Step.objects.all().update(search_vector=SearchVector('instruction__unaccent', weight='B'))
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
dependencies = [
|
|
('cookbook', '0121_auto_20210518_1638'),
|
|
]
|
|
operations = [
|
|
migrations.AddField(
|
|
model_name='recipe',
|
|
name='desc_search_vector',
|
|
field=SearchVectorField(null=True),
|
|
),
|
|
migrations.AddField(
|
|
model_name='recipe',
|
|
name='name_search_vector',
|
|
field=SearchVectorField(null=True),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='recipe',
|
|
index=GinIndex(fields=['name_search_vector', 'desc_search_vector'], name='cookbook_re_name_se_bdf3ca_gin'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='step',
|
|
name='search_vector',
|
|
field=SearchVectorField(null=True),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='step',
|
|
index=GinIndex(fields=['search_vector'], name='cookbook_st_search__2ef7fa_gin'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='cooklog',
|
|
index=Index(fields=['id', 'recipe', '-created_at', 'rating'], name='cookbook_co_id_37485a_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='food',
|
|
index=Index(fields=['id', 'name'], name='cookbook_fo_id_22b733_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='ingredient',
|
|
index=Index(fields=['id', 'food', 'unit'], name='cookbook_in_id_3368be_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='keyword',
|
|
index=Index(fields=['id', 'name'], name='cookbook_ke_id_ebc03f_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='recipe',
|
|
index=Index(fields=['id', 'name', 'description'], name='cookbook_re_id_e4c2d4_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='recipebook',
|
|
index=Index(fields=['name', 'description'], name='cookbook_re_name_bbe446_idx'),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='viewlog',
|
|
index=Index(fields=['recipe', '-created_at'], name='cookbook_vi_recipe__5cd178_idx'),
|
|
),
|
|
migrations.RunPython(
|
|
set_default_search_vector
|
|
),
|
|
]
|