added search defaults mimicing old search behavior

This commit is contained in:
vabene1111 2021-09-29 09:04:46 +02:00
parent 856c34a3bf
commit 12afb3eaa6
3 changed files with 49 additions and 3 deletions

View File

@ -14,7 +14,7 @@ from .models import (Comment, CookLog, Food, Ingredient, InviteLink, Keyword,
ShoppingList, ShoppingListEntry, ShoppingListRecipe,
Space, Step, Storage, Sync, SyncLog, Unit, UserPreference,
ViewLog, Supermarket, SupermarketCategory, SupermarketCategoryRelation,
ImportLog, TelegramBot, BookmarkletImport, UserFile)
ImportLog, TelegramBot, BookmarkletImport, UserFile, SearchPreference)
from cookbook.managers import DICTIONARY
@ -54,6 +54,19 @@ class UserPreferenceAdmin(admin.ModelAdmin):
admin.site.register(UserPreference, UserPreferenceAdmin)
class SearchPreferenceAdmin(admin.ModelAdmin):
list_display = ('name', 'search', 'trigram_threshold',)
search_fields = ('user__username',)
list_filter = ('search',)
@staticmethod
def name(obj):
return obj.user.get_user_name()
admin.site.register(SearchPreference, SearchPreferenceAdmin)
class StorageAdmin(admin.ModelAdmin):
list_display = ('name', 'method')
search_fields = ('name',)

View File

@ -0,0 +1,33 @@
# Generated by Django 3.2.7 on 2021-09-29 06:37
from django_scopes import scopes_disabled
from django.db import migrations, models
from cookbook.models import nameSearchField
def add_default_trigram(apps, schema_editor):
with scopes_disabled():
SearchFields = apps.get_model('cookbook', 'SearchFields')
SearchPreference = apps.get_model('cookbook', 'SearchPreference')
name_field = SearchFields.objects.get(name='Name')
for p in SearchPreference.objects.all():
if not p.trigram.all() and p.search == 'plain':
p.trigram.add(name_field)
p.save()
class Migration(migrations.Migration):
dependencies = [
('cookbook', '0156_searchpreference_trigram_threshold'),
]
operations = [
migrations.AlterField(
model_name='searchpreference',
name='trigram',
field=models.ManyToManyField(blank=True, default=nameSearchField, related_name='trigram_fields', to='cookbook.SearchFields'),
),
migrations.RunPython(add_default_trigram),
]

View File

@ -843,7 +843,7 @@ class SearchFields(models.Model, PermissionModelMixin):
def allSearchFields():
return SearchFields.objects.values_list('id')
return list(SearchFields.objects.values_list('id', flat=True))
def nameSearchField():
@ -871,7 +871,7 @@ class SearchPreference(models.Model, PermissionModelMixin):
unaccent = models.ManyToManyField(SearchFields, related_name="unaccent_fields", blank=True, default=allSearchFields)
icontains = models.ManyToManyField(SearchFields, related_name="icontains_fields", blank=True, default=nameSearchField)
istartswith = models.ManyToManyField(SearchFields, related_name="istartswith_fields", blank=True)
trigram = models.ManyToManyField(SearchFields, related_name="trigram_fields", blank=True)
trigram = models.ManyToManyField(SearchFields, related_name="trigram_fields", blank=True,default=nameSearchField)
fulltext = models.ManyToManyField(SearchFields, related_name="fulltext_fields", blank=True)
trigram_threshold = models.DecimalField(default=0.1, decimal_places=2, max_digits=3)