Esempio n. 1
0
    def _recently_added(self, bl, user):
        """ Filtering key point: recently added.
            If more than self.NEXT_LIMIT books available, randomly pick some
            Otherwise, pick enough ones by the updated time
            @returns: a list of isbns
        """
        now = datetime.datetime.now()
        dt = datetime.timedelta(days=30)
        one_month_ago = now - dt
        month_list = bl.isbns_after(one_month_ago)

        if len(month_list) >= self.NEXT_LIMIT:
            # enough books for random
            return random.sample(month_list, self.NEXT_LIMIT)

        # otherwise, pick enough ones by the updated time
        helper = SortHelper(user)
        sorted_isbns = helper.by_updated_time(booklist.LIST_INTERESTED)
        return sorted_isbns[:self.NEXT_LIMIT]