def save_search(self, page): """ Do not save if the user made this search recently, if the sort order is not the default one, if a filter is applied, or if it's a crawler """ # do not save if a filter is applied if self.request.GET.get('show-forks', False) == 'y': return # do not save if the sort order is not the default one sort = self.get_sort() if sort and sort['db_sort']: return # do not save if the request is from a user agent if is_crawler(self.request.META.get('HTTP_USER_AGENT', '')): return # do not save if we have a "/" in the request if "/" in self.query: return # check if this user did this search recently filter_user = None if self.request.user and self.request.user.is_authenticated(): filter_user = self.request.user count_recent = SavedSearch.objects.most_recent( user=filter_user, search_key=self.search_key, collapsed=False, ).filter(user_query=self.query, created__gt=datetime.utcnow() - timedelta(minutes=15)).count() if count_recent: return # nothing blocking, save the search return super(RepositorySearchView, self).save_search(page)
def save_search(self, page): """ Do not save if the user made this search recently, if the sort order is not the default one, if a filter is applied, or if it's a crawler """ # do not save if a filter is applied if self.request.GET.get("show-forks", False) == "y": return # do not save if the sort order is not the default one sort = self.get_sort() if sort and sort["db_sort"]: return # do not save if the request is from a user agent if is_crawler(self.request.META.get("HTTP_USER_AGENT", "")): return # do not save if we have a "/" in the request if "/" in self.query: return # check if this user did this search recently filter_user = None if self.request.user and self.request.user.is_authenticated(): filter_user = self.request.user count_recent = ( SavedSearch.objects.most_recent(user=filter_user, search_key=self.search_key, collapsed=False) .filter(user_query=self.query, created__gt=datetime.utcnow() - timedelta(minutes=15)) .count() ) if count_recent: return # nothing blocking, save the search return super(RepositorySearchView, self).save_search(page)
def test_identify_known_crawler_browsers(self): fails = [] for m in self.crawler: if not is_crawler(m): fails.append(m) self.assert_equals([], fails)
def test_identify_known_desktop_browsers(self): fails = [] for m in self.desktop: if is_crawler(m): fails.append(m) self.assert_equals([], fails)
def test_returns_false_for_unknown_browser(self): self.assert_false(is_crawler('Unknown'))
def test_returns_false_for_empty_user_agent(self): self.assert_false(is_crawler(''))