rebuild recipe index from admin site

This commit is contained in:
smilerz
2021-04-11 19:42:22 -05:00
parent 833353b23e
commit f9f8dbd64a
2 changed files with 16 additions and 1 deletions

View File

@ -1,6 +1,9 @@
from django.conf import settings
from django.contrib import admin from django.contrib import admin
from django.contrib.postgres.search import SearchVector
from django.contrib.auth.admin import UserAdmin from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User, Group from django.contrib.auth.models import User, Group
from django_scopes import scopes_disabled
from .models import (Comment, CookLog, Food, Ingredient, InviteLink, Keyword, from .models import (Comment, CookLog, Food, Ingredient, InviteLink, Keyword,
MealPlan, MealType, NutritionInformation, Recipe, MealPlan, MealType, NutritionInformation, Recipe,
@ -82,6 +85,15 @@ class StepAdmin(admin.ModelAdmin):
admin.site.register(Step, StepAdmin) admin.site.register(Step, StepAdmin)
@admin.action(description='Rebuild index for selected recipes')
def rebuild_index(modeladmin, request, queryset):
with scopes_disabled():
search_vector = (
SearchVector('name', weight='A')
+ SearchVector('description', weight='B'))
queryset.update(search_vector=search_vector)
class RecipeAdmin(admin.ModelAdmin): class RecipeAdmin(admin.ModelAdmin):
list_display = ('name', 'internal', 'created_by', 'storage') list_display = ('name', 'internal', 'created_by', 'storage')
@ -89,6 +101,9 @@ class RecipeAdmin(admin.ModelAdmin):
def created_by(obj): def created_by(obj):
return obj.created_by.get_user_name() return obj.created_by.get_user_name()
if settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']:
actions = [rebuild_index]
admin.site.register(Recipe, RecipeAdmin) admin.site.register(Recipe, RecipeAdmin)

View File

@ -1,6 +1,6 @@
from django.conf import settings from django.conf import settings
from django.contrib.postgres.search import SearchVector from django.contrib.postgres.search import SearchVector
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand
from django_scopes import scopes_disabled from django_scopes import scopes_disabled
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _