Updated the search manager to not store recent empty queries

This commit is contained in:
Roberto Rosario
2011-07-02 19:42:07 -04:00
parent 2ac21bd032
commit 3503ad7ea1

View File

@@ -1,15 +1,25 @@
import urlparse
from datetime import datetime from datetime import datetime
from django.db import models from django.db import models
from django.utils.http import urlencode
from dynamic_search.conf.settings import RECENT_COUNT from dynamic_search.conf.settings import RECENT_COUNT
class RecentSearchManager(models.Manager): class RecentSearchManager(models.Manager):
def add_query_for_user(self, user, query, hits): def add_query_for_user(self, user, query, hits):
new_recent, created = self.model.objects.get_or_create(user=user, query=query, defaults={'hits': hits}) parsed_query = urlparse.parse_qs(query)
new_recent.hits = hits if ('q=' in query) and not parsed_query.get('q'):
new_recent.save() # Don't store empty simple searches
to_delete = self.model.objects.filter(user=user)[RECENT_COUNT:] return
for recent_to_delete in to_delete: else:
recent_to_delete.delete() parsed_query = {'q': u' '.join(parsed_query['q'])}
if parsed_query:
# 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:
recent_to_delete.delete()