Changeset - 5bfda9c04db5
[Not reviewed]
default
0 2 0
Mads Kiilerich - 6 years ago 2019-07-22 01:18:14
mads@kiilerich.com
summary: simplify sorting of language stats - avoid comparing dicts

Make the ordering well defined as primarily decreasing count, secondarily
extension - thus some slight changes in test output.
2 files changed with 14 insertions and 15 deletions:
0 comments (0 inline, 0 general)
kallithea/controllers/summary.py
Show inline comments
 
@@ -133,19 +133,18 @@ class SummaryController(BaseRepoControll
 
        c.stats_percentage = 0
 

	
 
        if stats and stats.languages:
 
            c.no_data = False is c.db_repo.enable_statistics
 
            lang_stats_d = json.loads(stats.languages)
 

	
 
            lang_stats = ((x, {"count": y,
 
                               "desc": LANGUAGES_EXTENSIONS_MAP.get(x)})
 
                          for x, y in lang_stats_d.items())
 
            lang_stats = [(x, {"count": y,
 
                               "desc": LANGUAGES_EXTENSIONS_MAP.get(x, '?')})
 
                          for x, y in lang_stats_d.items()]
 
            lang_stats.sort(key=lambda k: (-k[1]['count'], k[0]))
 

	
 
            c.trending_languages = (
 
                sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10]
 
            )
 
            c.trending_languages = lang_stats[:10]
 
        else:
 
            c.no_data = True
 
            c.trending_languages = []
 

	
 
        c.enable_downloads = c.db_repo.enable_downloads
 
        c.readme_data, c.readme_file = \
kallithea/tests/functional/test_summary.py
Show inline comments
 
@@ -155,18 +155,18 @@ class TestSummaryController(TestControll
 
                                    repo_name=HG_REPO))
 
        response.mustcontain(
 
            '[["py", {"count": 68, "desc": ["Python"]}], '
 
            '["rst", {"count": 16, "desc": ["Rst"]}], '
 
            '["css", {"count": 2, "desc": ["Css"]}], '
 
            '["sh", {"count": 2, "desc": ["Bash"]}], '
 
            '["yml", {"count": 1, "desc": ["Yaml"]}], '
 
            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}], '
 
            '["bat", {"count": 1, "desc": ["Batch"]}], '
 
            '["cfg", {"count": 1, "desc": ["Ini"]}], '
 
            '["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}], '
 
            '["ini", {"count": 1, "desc": ["Ini"]}], '
 
            '["js", {"count": 1, "desc": ["Javascript"]}], '
 
            '["cfg", {"count": 1, "desc": ["Ini"]}], '
 
            '["ini", {"count": 1, "desc": ["Ini"]}], '
 
            '["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}]]'
 
            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}]]',
 
        )
 

	
 
    def test_index_statistics(self):
 
        self.log_user()
 
        # codes stats
 
        self._enable_stats(HG_REPO)
 
@@ -188,18 +188,18 @@ class TestSummaryController(TestControll
 
                                    repo_name=GIT_REPO))
 
        response.mustcontain(
 
            '[["py", {"count": 68, "desc": ["Python"]}], '
 
            '["rst", {"count": 16, "desc": ["Rst"]}], '
 
            '["css", {"count": 2, "desc": ["Css"]}], '
 
            '["sh", {"count": 2, "desc": ["Bash"]}], '
 
            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}], '
 
            '["js", {"count": 1, "desc": ["Javascript"]}], '
 
            '["bat", {"count": 1, "desc": ["Batch"]}], '
 
            '["cfg", {"count": 1, "desc": ["Ini"]}], '
 
            '["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}], '
 
            '["ini", {"count": 1, "desc": ["Ini"]}], '
 
            '["html", {"count": 1, "desc": ["EvoqueHtml", "Html"]}], '
 
            '["bat", {"count": 1, "desc": ["Batch"]}]]'
 
            '["js", {"count": 1, "desc": ["Javascript"]}], '
 
            '["makefile", {"count": 1, "desc": ["Makefile", "Makefile"]}]]',
 
        )
 

	
 
    def test_index_statistics_git(self):
 
        self.log_user()
 
        # codes stats
 
        self._enable_stats(GIT_REPO)
0 comments (0 inline, 0 general)