Пример #1
0
    def bottom_users(self):
        if self.__bottom_users:
            return self.__bottom_users

        user_db = get_user_database()
        users = user_db.root.values()
        bykarma = sort_list(users, lambda x: -(x.get_karma_score()),
            count=self._list_count)
        self.__bottom_users = bykarma
        return self.__bottom_users
Пример #2
0
 def recent_edits_by_author(self, author, count=10):
     """Return count pages most-recently edited by author."""
     edits = []
     for name, page in self.pages.items():
         version = page.latest_edit_by(author)
         if version:
             edits.append(page)
     
     edits = sort_list(edits, lambda x: x.watchable_last_change(), count=count)
     return edits        
Пример #3
0
    def biggest_bank(self):
        if self.__biggest_bank:
            return self.__biggest_bank

        user_db = get_user_database()
        users = user_db.root.values()
        bybank = sort_list(users,
            lambda x: x.get_karma_bank_balance(read_only=True),
            count=self._list_count)
        self.__biggest_bank = bybank
        return self.__biggest_bank
Пример #4
0
def highest_score_items(wikis, count=10):
    """Return list of highest scoring items across multiple wikis.
    
    The order in which tied items are returned is not defined.
    """
    wikis = coerce_to_list(wikis)
    items = []
    for wiki in wikis:
        items.extend(wiki.highest_score_items(count))
        
    bykarma = sort_list(items, lambda x: x.get_karma_score(), count=count)
    return bykarma
Пример #5
0
def highest_score_items(blogs, count=10):
    """Return list of highest scoring items across multiple blogs.
    
    The order in which tied items are returned is not defined.
    """
    blogs = coerce_to_list(blogs)
    items = []
    for blog in blogs:
        items.extend(blog.highest_score_items(count))
        
    items = sort_list(items, lambda x: x.get_karma_score())
    return items
Пример #6
0
    def most_friends(self):
        if self.__most_friends:
            return self.__most_friends

        user_db = get_user_database()
        users = user_db.root.values()

        # elim zeros
        users = [u for u in users if u.positive_karma_givers()]

        byfriends = sort_list(users,
            lambda x: len(x.positive_karma_givers()),
            count=self._list_count)
        self.__most_friends = byfriends
        return self.__most_friends
Пример #7
0
def recent_items_by_author(blogs, author, count=10, not_by=0):
    """Return list of recent items by author(s) across multiple blogs.
    
    If not_by is not zero, returns the complement (i.e., items not by
    the given author(s).
    
    author may be given as a single User instance or a list of Users.
    """
    blogs = coerce_to_list(blogs)
    items = []
    for blog in blogs:
        items.extend(blog.recent_items_by_author(author, count, not_by))
    
    items = sort_list(items, lambda x: x.last_modified(), count=count)
    return items
Пример #8
0
    def newest_users(self):
        if self.__newest_users:
            return self.__newest_users

        user_db = get_user_database()
        users = user_db.root.values()

        # elim unnamed users (so that we don't expose new users' email addresses)
        users = [u for u in users if u.contact_name]

        bydate = sort_list(users,
            lambda x: x.get_user_data().member_since(),
            count=self._list_count)

        self.__newest_users = bydate
        return self.__newest_users
Пример #9
0
    def most_critical(self):
        if self.__most_critical:
            return self.__most_critical

        user_db = get_user_database()
        users = user_db.root.values()

        # elim zeros
        users = [u for u in users if u.karma_minus_given()]

        bygiven = sort_list(users,
            lambda x: x.karma_minus_given(),
            count=self._list_count)

        self.__most_critical = bygiven
        return self.__most_critical
Пример #10
0
    def most_active(self):
        _days_cutoff = 3

        if self.__most_active:
            return self.__most_active

        user_db = get_user_database()
        users = user_db.root.values()

        # elim users who haven't even been on the site in the last 3 days
        cutoff_date = datetime.utcnow() - timedelta(days=_days_cutoff)
        users = [(u, u.get_activity().activity_count(_days_cutoff)) for u in users if u.last_hit and u.last_hit > cutoff_date]

        get_connection().cacheGC()

        byactivity = sort_list(users, lambda x: x[1], count=self._list_count)

        self.__most_active = byactivity
        return self.__most_active