Mercurial > kallithea
changeset 8123:6fa658082c8e
summary: compute lang_stats consistently
Visiting a /statistics with py3 would fail with:
... in statistics
sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10]
TypeError: '<' not supported between instances of 'dict' and 'dict'
The "summary" computation didn't have that problem. And it put '?' as
description for unknown extensions. And it had stable output as it also sorted
on the file extension as secondary key. Just use that.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Thu, 02 Jan 2020 23:19:36 +0100 |
parents | bf009cb3a470 |
children | a553bc3a3d0e |
files | kallithea/controllers/summary.py |
diffstat | 1 files changed, 6 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/kallithea/controllers/summary.py Thu Jan 02 23:00:36 2020 +0100 +++ b/kallithea/controllers/summary.py Thu Jan 02 23:19:36 2020 +0100 @@ -139,12 +139,10 @@ if stats and stats.languages: lang_stats_d = ext_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.sort(key=lambda k: (-k[1]['count'], k[0])) - c.trending_languages = lang_stats[:10] else: c.trending_languages = [] @@ -188,17 +186,16 @@ .scalar() c.stats_percentage = 0 if stats and stats.languages: - lang_stats_d = ext_json.loads(stats.languages) c.commit_data = ext_json.loads(stats.commit_activity) c.overview_data = ext_json.loads(stats.commit_activity_combined) - lang_stats = ((x, {"count": y, - "desc": LANGUAGES_EXTENSIONS_MAP.get(x)}) - for x, y in lang_stats_d.items()) + lang_stats_d = ext_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.sort(key=lambda k: (-k[1]['count'], k[0])) + c.trending_languages = lang_stats[:10] - c.trending_languages = ( - sorted(lang_stats, reverse=True, key=lambda k: k[1])[:10] - ) last_rev = stats.stat_on_revision + 1 c.repo_last_rev = c.db_repo_scm_instance.count() \ if c.db_repo_scm_instance.revisions else 0