Example #1
0
    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)
Example #2
0
    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)
Example #3
0
 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)
Example #4
0
 def test_identify_known_desktop_browsers(self):
     fails = []
     for m in self.desktop:
         if is_crawler(m):
             fails.append(m)
     self.assert_equals([], fails)
Example #5
0
 def test_returns_false_for_unknown_browser(self):
     self.assert_false(is_crawler('Unknown'))
Example #6
0
 def test_returns_false_for_empty_user_agent(self):
     self.assert_false(is_crawler(''))
 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(''))