Mercurial > kallithea
view scripts/shortlog.py @ 8276:fdde16d7cea0
celery: fix send_email to work with JSON encoding (Issue #363)
Long time ago, c935bcaf7086 introduced an optional User object parameter to the
send_email task and used the computed full_name_or_username property. Due to the
magic of pickle, that also worked when using Celery to run the task async.
Now, Celery 4 changed the default encoding from Pickle to JSON, which we
anticipated in e539db6cc0da. That broke send_email in some cases, for example
when a user comments on another user's changeset.
Fixed by passing the "From" name as string instead of passing the whole User
object.
Thanks to vyom for reporting.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Sat, 29 Feb 2020 16:06:30 +0100 |
parents | aa6f17a53b49 |
children | 96b43734025f |
line wrap: on
line source
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Kallithea script for generating a quick overview of contributors and their commit counts in a given revision set. """ import argparse import os from collections import Counter from . import contributor_data def main(): parser = argparse.ArgumentParser(description='Generate a list of committers and commit counts.') parser.add_argument('revset', help='revision set specifying the commits to count') args = parser.parse_args() repo_entries = [ (contributor_data.name_fixes.get(name) or contributor_data.name_fixes.get(name.rsplit('<', 1)[0].strip()) or name).rsplit('<', 1)[0].strip() for name in (line.strip() for line in os.popen("""hg log -r '%s' -T '{author}\n'""" % args.revset).readlines()) ] counter = Counter(repo_entries) for name, count in counter.most_common(): if name == '': continue print('%4s %s' % (count, name)) if __name__ == '__main__': main()