diff --git a/kallithea/controllers/summary.py b/kallithea/controllers/summary.py --- a/kallithea/controllers/summary.py +++ b/kallithea/controllers/summary.py @@ -136,13 +136,12 @@ class SummaryController(BaseRepoControll 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 = [] diff --git a/kallithea/tests/functional/test_summary.py b/kallithea/tests/functional/test_summary.py --- a/kallithea/tests/functional/test_summary.py +++ b/kallithea/tests/functional/test_summary.py @@ -158,12 +158,12 @@ class TestSummaryController(TestControll '["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): @@ -191,12 +191,12 @@ class TestSummaryController(TestControll '["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):