remove unused imports, variables and commented code
from tests
This commit is contained in:
@ -14,7 +14,6 @@ from cookbook.models import (CookLog, CustomFilter, Food, Keyword, Recipe, Searc
|
||||
from recipes import settings
|
||||
|
||||
|
||||
# TODO create extensive tests to make sure ORs ANDs and various filters, sorting, etc work as expected
|
||||
# TODO consider creating a simpleListRecipe API that only includes minimum of recipe info and minimal filtering
|
||||
class RecipeSearch():
|
||||
_postgres = settings.DATABASES['default']['ENGINE'] in ['django.db.backends.postgresql_psycopg2', 'django.db.backends.postgresql']
|
||||
@ -162,7 +161,7 @@ class RecipeSearch():
|
||||
else:
|
||||
order = []
|
||||
# TODO add userpreference for default sort order and replace '-favorite'
|
||||
default_order = ['-name']
|
||||
default_order = ['name']
|
||||
# recent and new_recipe are always first; they float a few recipes to the top
|
||||
if self._num_recent:
|
||||
order += ['-recent']
|
||||
@ -580,218 +579,3 @@ class RecipeSearch():
|
||||
.annotate(sibling_onhand=Exists(sibling_onhand_subquery))
|
||||
.filter(sibling_onhand=True)
|
||||
)
|
||||
|
||||
|
||||
# class RecipeFacet():
|
||||
# class CacheEmpty(Exception):
|
||||
# pass
|
||||
|
||||
# def __init__(self, request, queryset=None, hash_key=None, cache_timeout=3600):
|
||||
# if hash_key is None and queryset is None:
|
||||
# raise ValueError(_("One of queryset or hash_key must be provided"))
|
||||
|
||||
# self._request = request
|
||||
# self._queryset = queryset
|
||||
# self.hash_key = hash_key or str(hash(self._queryset.query))
|
||||
# self._SEARCH_CACHE_KEY = f"recipes_filter_{self.hash_key}"
|
||||
# self._cache_timeout = cache_timeout
|
||||
# self._cache = caches['default'].get(self._SEARCH_CACHE_KEY, {})
|
||||
# if self._cache is None and self._queryset is None:
|
||||
# raise self.CacheEmpty("No queryset provided and cache empty")
|
||||
|
||||
# self.Keywords = self._cache.get('Keywords', None)
|
||||
# self.Foods = self._cache.get('Foods', None)
|
||||
# self.Books = self._cache.get('Books', None)
|
||||
# self.Ratings = self._cache.get('Ratings', None)
|
||||
# # TODO Move Recent to recipe annotation/serializer: requrires change in RecipeSearch(), RecipeSearchView.vue and serializer
|
||||
# self.Recent = self._cache.get('Recent', None)
|
||||
|
||||
# if self._queryset is not None:
|
||||
# self._recipe_list = list(
|
||||
# self._queryset.values_list('id', flat=True))
|
||||
# self._search_params = {
|
||||
# 'keyword_list': self._request.query_params.getlist('keywords', []),
|
||||
# 'food_list': self._request.query_params.getlist('foods', []),
|
||||
# 'book_list': self._request.query_params.getlist('book', []),
|
||||
# 'search_keywords_or': str2bool(self._request.query_params.get('keywords_or', True)),
|
||||
# 'search_foods_or': str2bool(self._request.query_params.get('foods_or', True)),
|
||||
# 'search_books_or': str2bool(self._request.query_params.get('books_or', True)),
|
||||
# 'space': self._request.space,
|
||||
# }
|
||||
# elif self.hash_key is not None:
|
||||
# self._recipe_list = self._cache.get('recipe_list', [])
|
||||
# self._search_params = {
|
||||
# 'keyword_list': self._cache.get('keyword_list', None),
|
||||
# 'food_list': self._cache.get('food_list', None),
|
||||
# 'book_list': self._cache.get('book_list', None),
|
||||
# 'search_keywords_or': self._cache.get('search_keywords_or', None),
|
||||
# 'search_foods_or': self._cache.get('search_foods_or', None),
|
||||
# 'search_books_or': self._cache.get('search_books_or', None),
|
||||
# 'space': self._cache.get('space', None),
|
||||
# }
|
||||
|
||||
# self._cache = {
|
||||
# **self._search_params,
|
||||
# 'recipe_list': self._recipe_list,
|
||||
# 'Ratings': self.Ratings,
|
||||
# 'Recent': self.Recent,
|
||||
# 'Keywords': self.Keywords,
|
||||
# 'Foods': self.Foods,
|
||||
# 'Books': self.Books
|
||||
|
||||
# }
|
||||
# caches['default'].set(self._SEARCH_CACHE_KEY,
|
||||
# self._cache, self._cache_timeout)
|
||||
|
||||
# def get_facets(self, from_cache=False):
|
||||
# if from_cache:
|
||||
# return {
|
||||
# 'cache_key': self.hash_key or '',
|
||||
# 'Ratings': self.Ratings or {},
|
||||
# 'Recent': self.Recent or [],
|
||||
# 'Keywords': self.Keywords or [],
|
||||
# 'Foods': self.Foods or [],
|
||||
# 'Books': self.Books or []
|
||||
# }
|
||||
# return {
|
||||
# 'cache_key': self.hash_key,
|
||||
# 'Ratings': self.get_ratings(),
|
||||
# 'Recent': self.get_recent(),
|
||||
# 'Keywords': self.get_keywords(),
|
||||
# 'Foods': self.get_foods(),
|
||||
# 'Books': self.get_books()
|
||||
# }
|
||||
|
||||
# def set_cache(self, key, value):
|
||||
# self._cache = {**self._cache, key: value}
|
||||
# caches['default'].set(
|
||||
# self._SEARCH_CACHE_KEY,
|
||||
# self._cache,
|
||||
# self._cache_timeout
|
||||
# )
|
||||
|
||||
# def get_books(self):
|
||||
# if self.Books is None:
|
||||
# self.Books = []
|
||||
# return self.Books
|
||||
|
||||
# def get_keywords(self):
|
||||
# if self.Keywords is None:
|
||||
# if self._search_params['search_keywords_or']:
|
||||
# keywords = Keyword.objects.filter(
|
||||
# space=self._request.space).distinct()
|
||||
# else:
|
||||
# keywords = Keyword.objects.filter(Q(recipe__in=self._recipe_list) | Q(
|
||||
# depth=1)).filter(space=self._request.space).distinct()
|
||||
|
||||
# # set keywords to root objects only
|
||||
# keywords = self._keyword_queryset(keywords)
|
||||
# self.Keywords = [{**x, 'children': None}
|
||||
# if x['numchild'] > 0 else x for x in list(keywords)]
|
||||
# self.set_cache('Keywords', self.Keywords)
|
||||
# return self.Keywords
|
||||
|
||||
# def get_foods(self):
|
||||
# if self.Foods is None:
|
||||
# # # if using an OR search, will annotate all keywords, otherwise, just those that appear in results
|
||||
# if self._search_params['search_foods_or']:
|
||||
# foods = Food.objects.filter(
|
||||
# space=self._request.space).distinct()
|
||||
# else:
|
||||
# foods = Food.objects.filter(Q(ingredient__step__recipe__in=self._recipe_list) | Q(
|
||||
# depth=1)).filter(space=self._request.space).distinct()
|
||||
|
||||
# # set keywords to root objects only
|
||||
# foods = self._food_queryset(foods)
|
||||
|
||||
# self.Foods = [{**x, 'children': None}
|
||||
# if x['numchild'] > 0 else x for x in list(foods)]
|
||||
# self.set_cache('Foods', self.Foods)
|
||||
# return self.Foods
|
||||
|
||||
# def get_ratings(self):
|
||||
# if self.Ratings is None:
|
||||
# if not self._request.space.demo and self._request.space.show_facet_count:
|
||||
# if self._queryset is None:
|
||||
# self._queryset = Recipe.objects.filter(
|
||||
# id__in=self._recipe_list)
|
||||
# rating_qs = self._queryset.annotate(rating=Round(Avg(Case(When(
|
||||
# cooklog__created_by=self._request.user, then='cooklog__rating'), default=Value(0)))))
|
||||
# self.Ratings = dict(Counter(r.rating for r in rating_qs))
|
||||
# else:
|
||||
# self.Rating = {}
|
||||
# self.set_cache('Ratings', self.Ratings)
|
||||
# return self.Ratings
|
||||
|
||||
# def get_recent(self):
|
||||
# if self.Recent is None:
|
||||
# # TODO make days of recent recipe a setting
|
||||
# recent_recipes = ViewLog.objects.filter(created_by=self._request.user, space=self._request.space, created_at__gte=timezone.now() - timedelta(days=14)
|
||||
# ).values_list('recipe__pk', flat=True)
|
||||
# self.Recent = list(recent_recipes)
|
||||
# self.set_cache('Recent', self.Recent)
|
||||
# return self.Recent
|
||||
|
||||
# def add_food_children(self, id):
|
||||
# try:
|
||||
# food = Food.objects.get(id=id)
|
||||
# nodes = food.get_ancestors()
|
||||
# except Food.DoesNotExist:
|
||||
# return self.get_facets()
|
||||
# foods = self._food_queryset(food.get_children(), food)
|
||||
# deep_search = self.Foods
|
||||
# for node in nodes:
|
||||
# index = next((i for i, x in enumerate(
|
||||
# deep_search) if x["id"] == node.id), None)
|
||||
# deep_search = deep_search[index]['children']
|
||||
# index = next((i for i, x in enumerate(
|
||||
# deep_search) if x["id"] == food.id), None)
|
||||
# deep_search[index]['children'] = [
|
||||
# {**x, 'children': None} if x['numchild'] > 0 else x for x in list(foods)]
|
||||
# self.set_cache('Foods', self.Foods)
|
||||
# return self.get_facets()
|
||||
|
||||
# def add_keyword_children(self, id):
|
||||
# try:
|
||||
# keyword = Keyword.objects.get(id=id)
|
||||
# nodes = keyword.get_ancestors()
|
||||
# except Keyword.DoesNotExist:
|
||||
# return self.get_facets()
|
||||
# keywords = self._keyword_queryset(keyword.get_children(), keyword)
|
||||
# deep_search = self.Keywords
|
||||
# for node in nodes:
|
||||
# index = next((i for i, x in enumerate(
|
||||
# deep_search) if x["id"] == node.id), None)
|
||||
# deep_search = deep_search[index]['children']
|
||||
# index = next((i for i, x in enumerate(deep_search)
|
||||
# if x["id"] == keyword.id), None)
|
||||
# deep_search[index]['children'] = [
|
||||
# {**x, 'children': None} if x['numchild'] > 0 else x for x in list(keywords)]
|
||||
# self.set_cache('Keywords', self.Keywords)
|
||||
# return self.get_facets()
|
||||
|
||||
# def _recipe_count_queryset(self, field, depth=1, steplen=4):
|
||||
# return Recipe.objects.filter(**{f'{field}__path__startswith': OuterRef('path'), f'{field}__depth__gte': depth}, id__in=self._recipe_list, space=self._request.space
|
||||
# ).annotate(count=Coalesce(Func('pk', function='Count'), 0)).values('count')
|
||||
|
||||
# def _keyword_queryset(self, queryset, keyword=None):
|
||||
# depth = getattr(keyword, 'depth', 0) + 1
|
||||
# steplen = depth * Keyword.steplen
|
||||
|
||||
# if not self._request.space.demo and self._request.space.show_facet_count:
|
||||
# return queryset.annotate(count=Coalesce(Subquery(self._recipe_count_queryset('keywords', depth, steplen)), 0)
|
||||
# ).filter(depth=depth, count__gt=0
|
||||
# ).values('id', 'name', 'count', 'numchild').order_by(Lower('name').asc())[:200]
|
||||
# else:
|
||||
# return queryset.filter(depth=depth).values('id', 'name', 'numchild').order_by(Lower('name').asc())
|
||||
|
||||
# def _food_queryset(self, queryset, food=None):
|
||||
# depth = getattr(food, 'depth', 0) + 1
|
||||
# steplen = depth * Food.steplen
|
||||
|
||||
# if not self._request.space.demo and self._request.space.show_facet_count:
|
||||
# return queryset.annotate(count=Coalesce(Subquery(self._recipe_count_queryset('steps__ingredients__food', depth, steplen)), 0)
|
||||
# ).filter(depth__lte=depth, count__gt=0
|
||||
# ).values('id', 'name', 'count', 'numchild').order_by(Lower('name').asc())[:200]
|
||||
# else:
|
||||
# return queryset.filter(depth__lte=depth).values('id', 'name', 'numchild').order_by(Lower('name').asc())
|
||||
|
Reference in New Issue
Block a user