added search defaults mimicing old search behavior
This commit is contained in:
parent
856c34a3bf
commit
12afb3eaa6
@ -14,7 +14,7 @@ from .models import (Comment, CookLog, Food, Ingredient, InviteLink, Keyword,
|
|||||||
ShoppingList, ShoppingListEntry, ShoppingListRecipe,
|
ShoppingList, ShoppingListEntry, ShoppingListRecipe,
|
||||||
Space, Step, Storage, Sync, SyncLog, Unit, UserPreference,
|
Space, Step, Storage, Sync, SyncLog, Unit, UserPreference,
|
||||||
ViewLog, Supermarket, SupermarketCategory, SupermarketCategoryRelation,
|
ViewLog, Supermarket, SupermarketCategory, SupermarketCategoryRelation,
|
||||||
ImportLog, TelegramBot, BookmarkletImport, UserFile)
|
ImportLog, TelegramBot, BookmarkletImport, UserFile, SearchPreference)
|
||||||
|
|
||||||
from cookbook.managers import DICTIONARY
|
from cookbook.managers import DICTIONARY
|
||||||
|
|
||||||
@ -54,6 +54,19 @@ class UserPreferenceAdmin(admin.ModelAdmin):
|
|||||||
admin.site.register(UserPreference, UserPreferenceAdmin)
|
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):
|
class StorageAdmin(admin.ModelAdmin):
|
||||||
list_display = ('name', 'method')
|
list_display = ('name', 'method')
|
||||||
search_fields = ('name',)
|
search_fields = ('name',)
|
||||||
|
33
cookbook/migrations/0157_alter_searchpreference_trigram.py
Normal file
33
cookbook/migrations/0157_alter_searchpreference_trigram.py
Normal 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),
|
||||||
|
]
|
@ -843,7 +843,7 @@ class SearchFields(models.Model, PermissionModelMixin):
|
|||||||
|
|
||||||
|
|
||||||
def allSearchFields():
|
def allSearchFields():
|
||||||
return SearchFields.objects.values_list('id')
|
return list(SearchFields.objects.values_list('id', flat=True))
|
||||||
|
|
||||||
|
|
||||||
def nameSearchField():
|
def nameSearchField():
|
||||||
@ -871,7 +871,7 @@ class SearchPreference(models.Model, PermissionModelMixin):
|
|||||||
unaccent = models.ManyToManyField(SearchFields, related_name="unaccent_fields", blank=True, default=allSearchFields)
|
unaccent = models.ManyToManyField(SearchFields, related_name="unaccent_fields", blank=True, default=allSearchFields)
|
||||||
icontains = models.ManyToManyField(SearchFields, related_name="icontains_fields", blank=True, default=nameSearchField)
|
icontains = models.ManyToManyField(SearchFields, related_name="icontains_fields", blank=True, default=nameSearchField)
|
||||||
istartswith = models.ManyToManyField(SearchFields, related_name="istartswith_fields", blank=True)
|
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)
|
fulltext = models.ManyToManyField(SearchFields, related_name="fulltext_fields", blank=True)
|
||||||
trigram_threshold = models.DecimalField(default=0.1, decimal_places=2, max_digits=3)
|
trigram_threshold = models.DecimalField(default=0.1, decimal_places=2, max_digits=3)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user