Updated the search manager to not store recent empty queries
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user