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]