Example #1
0
    def _GetNewRankings(self, mr):
        """Compute new issue reference rankings."""
        missing = False
        if not (mr.target_id):
            logging.info('No target_id.')
            missing = True
        if not (mr.moved_ids):
            logging.info('No moved_ids.')
            missing = True
        if mr.split_above is None:
            logging.info('No split_above.')
            missing = True
        if missing:
            return

        untouched_items = [(item.issue_id, item.rank)
                           for item in mr.hotlist.items
                           if item.issue_id not in mr.moved_ids]

        # Note: The original reranking methods were written for reranking lists
        # sorted High to Low. Hotlist issues are reranked when they are sorted
        # Low to High so the mr.split_above must be flipped.
        lower, higher = features_bizobj.SplitHotlistIssueRanks(
            mr.target_id, not mr.split_above, untouched_items)
        return rerank_helpers.GetInsertRankings(lower, higher, mr.moved_ids)
Example #2
0
 def testGetInsertRankings_NoRoom(self):
     max_ranking, rerank_helpers.MAX_RANKING = rerank_helpers.MAX_RANKING, 1
     lower = [(1, 0)]
     higher = [(2, 1)]
     moved_ids = [3]
     ret = rerank_helpers.GetInsertRankings(lower, higher, moved_ids)
     self.assertIsNone(ret)
     rerank_helpers.MAX_RANKING = max_ranking
Example #3
0
 def testGetInsertRankings_NoLower(self):
     lower = []
     higher = [(1, 1)]
     moved_ids = [2]
     ret = rerank_helpers.GetInsertRankings(lower, higher, moved_ids)
     self.assertEqual(ret, [(2, 3), (1, 8)])
Example #4
0
 def testGetInsertRankings_SplitHigh(self):
     lower = [(1, 0), (2, 4)]
     higher = [(3, 5), (4, 10)]
     moved_ids = [5]
     ret = rerank_helpers.GetInsertRankings(lower, higher, moved_ids)
     self.assertEqual(ret, [(5, 6), (3, 9)])
Example #5
0
 def testGetInsertRankings_Multiple(self):
     lower = [(1, 0)]
     higher = [(2, 10)]
     moved_ids = [3, 4, 5]
     ret = rerank_helpers.GetInsertRankings(lower, higher, moved_ids)
     self.assertEqual(ret, [(3, 2), (4, 5), (5, 8)])
Example #6
0
 def testGetInsertRankings_Above(self):
     lower = [(1, 0)]
     higher = []
     moved_ids = [2]
     ret = rerank_helpers.GetInsertRankings(lower, higher, moved_ids)
     self.assertEqual(ret, [(2, 5)])