diff --git a/apps/dynamic_search/managers.py b/apps/dynamic_search/managers.py index e825bc7350..7e3923da7e 100644 --- a/apps/dynamic_search/managers.py +++ b/apps/dynamic_search/managers.py @@ -9,7 +9,8 @@ from dynamic_search.conf.settings import RECENT_COUNT class RecentSearchManager(models.Manager): def add_query_for_user(self, user, query, hits): - parsed_query = urlparse.parse_qs(query) + parsed_query = urlparse.parse_qs(urlencode(dict(query.items()))) + for key, value in parsed_query.items(): parsed_query[key] = ' '.join(value) @@ -25,8 +26,9 @@ class RecentSearchManager(models.Manager): if parsed_query and not isinstance(user, AnonymousUser): # If the URL query has at least one variable with a value new_recent, created = self.model.objects.get_or_create(user=user, query=urlencode(parsed_query), defaults={'hits': hits}) - new_recent.hits = hits - new_recent.save() - to_delete = self.model.objects.filter(user=user)[RECENT_COUNT:] - for recent_to_delete in to_delete: + if not created: + new_recent.hits = hits + new_recent.save() + + for recent_to_delete in self.model.objects.filter(user=user)[RECENT_COUNT:]: recent_to_delete.delete()