You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ponymail.apache.org by se...@apache.org on 2019/08/12 14:18:47 UTC

[incubator-ponymail] branch master updated: Enh: move generator selection to generator.py

This is an automated email from the ASF dual-hosted git repository.

sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ponymail.git


The following commit(s) were added to refs/heads/master by this push:
     new a00f698  Enh: move generator selection to generator.py
a00f698 is described below

commit a00f698db59d1bb6dfc183e7127bd96f332e79be
Author: Sebb <se...@apache.org>
AuthorDate: Mon Aug 12 15:18:36 2019 +0100

    Enh: move generator selection to generator.py
    
    This fixes #504
---
 CHANGELOG.md        |  1 +
 tools/archiver.py   |  9 +--------
 tools/generators.py | 17 +++++++++++++++++
 3 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index c529eb9..9b32835 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,5 @@
 ## Changes in 0.12:
+- Enh: move generator selection to generator.py (#504)
 - Bug: Bug: parser fails to extract inline attachments (#501)
 - Bug: Google OAuth used with wrong response_type (#500)
 - Bug: Composer uses wrong format in FROM/From headers (#496)
diff --git a/tools/archiver.py b/tools/archiver.py
index aed1d0f..d965b71 100755
--- a/tools/archiver.py
+++ b/tools/archiver.py
@@ -344,14 +344,7 @@ class Archiver(object): # N.B. Also used by import-mbox.py
         if body is not None or attachments:
             pmid = mid
             try:
-                if archiver_generator == "full":
-                    mid = generators.full(msg, body, lid, attachments)
-                elif archiver_generator == "medium":
-                    mid = generators.medium(msg, body, lid, attachments)
-                elif archiver_generator == "cluster":
-                    mid = generators.cluster(msg, body, lid, attachments)
-                else:
-                    mid = generators.legacy(msg, body, lid, attachments)
+                mid = generators.generate(archiver_generator, msg, body, lid, attachments)
             except Exception as err:
                 if logger:
                     logger.warning("Could not generate MID: %s", err)
diff --git a/tools/generators.py b/tools/generators.py
index ab090d6..d561dfe 100644
--- a/tools/generators.py
+++ b/tools/generators.py
@@ -191,3 +191,20 @@ def legacy(msg, body, lid, _attachments):
         pass
     mid = "%s@%s@%s" % (hashlib.sha224(body if type(body) is bytes else body.encode('ascii', 'ignore')).hexdigest(), uid_mdate, lid)
     return mid
+
+__GENERATORS={
+    'full': full,
+    'medium': medium,
+    'cluster': cluster,
+    'legacy': legacy,
+}
+
+def generator(name):
+    try:
+        return __GENERATORS[name]
+    except:
+        print("WARN: generator %s not found, defaulting to 'legacy'" % name)
+        return legacy
+
+def generate(name, msg, body, lid, attachments):
+    return generator(name)(msg, body, lid, attachments)