<pre style='margin:0'>
Rainer Müller (raimue) pushed a commit to branch master
in repository trac.macports.org.

</pre>
<p><a href="https://github.com/macports/trac.macports.org/commit/5b6df91036f68c7eeebfe7600f2040bc331c4533">https://github.com/macports/trac.macports.org/commit/5b6df91036f68c7eeebfe7600f2040bc331c4533</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 5b6df91036f68c7eeebfe7600f2040bc331c4533
</span>Author: Rainer Müller <raimue@macports.org>
AuthorDate: Tue Nov 15 22:40:04 2016 +0100

<span style='display:block; white-space:pre;color:#404040;'>    trac-github-update: fake date and time of emails
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/52890
</span>---
 plugins/hooks/trac-github-update.py | 26 +++++++++++++++++++++++++-
 1 file changed, 25 insertions(+), 1 deletion(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/plugins/hooks/trac-github-update.py b/plugins/hooks/trac-github-update.py
</span><span style='display:block; white-space:pre;color:#808080;'>index d1fec81..6d618f5 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/plugins/hooks/trac-github-update.py
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/plugins/hooks/trac-github-update.py
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,10 +5,13 @@
</span> import sys
 import os
 import json
<span style='display:block; white-space:pre;background:#e0ffe0;'>+import time
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+from datetime import datetime
</span> 
 import git_multimail
 from git_multimail import GenericEnvironment, Config, ConfigurationException, \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                          OutputMailer, ReferenceChange, Revision, Push
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                          OutputMailer, ReferenceChange, Revision, Push, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                          IncrementalDateTime, read_git_output
</span> from github import Github
 import trac.env
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -48,6 +51,21 @@ git_multimail.LINK_HTML_TEMPLATE = """\
</span> <p><a href="%(browse_url)s">%(browse_url)s</a></p>
 """
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+### CLASSES ###
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+class IncrementalDateTimeWithStartTime(IncrementalDateTime):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    """Simple wrapper to give incremental date/times.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    Each call will result in a date/time a second later than the previous call,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    starting at the time set with set_time(). This can be used to falsify email
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    headers, to increase the likelihood that email clients sort the emails
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    correctly."""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    start_time = time.time()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    def __init__(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        super(IncrementalDateTimeWithStartTime, self).__init__()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        self.time = IncrementalDateTimeWithStartTime.start_time
</span> 
 ### MAIN ###
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -252,6 +270,12 @@ def run_as_github_webhook(environment, mailer):
</span> 
     change = ReferenceChange.create(environment, oldrev, newrev, refname)
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    # get committer time of the newest revision that was pushed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    timestamp = read_git_output(['log', '--no-walk', '--format=%ct', change.new.sha1])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # monkey patch it into git_multimail
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    IncrementalDateTimeWithStartTime.start_time = float(timestamp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    git_multimail.IncrementalDateTime = IncrementalDateTimeWithStartTime
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     push = Push(environment, [change])
     push.send_emails(mailer, body_filter=environment.filter_body)
 
</pre><pre style='margin:0'>

</pre>