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 2021/09/19 12:57:04 UTC

[incubator-ponymail-foal] branch master updated: Allow for relative dates; sanitise stem once

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-foal.git


The following commit(s) were added to refs/heads/master by this push:
     new 07f5cf0  Allow for relative dates; sanitise stem once
07f5cf0 is described below

commit 07f5cf03a1df31b85779dbc81b1d3218e969b45e
Author: Sebb <se...@apache.org>
AuthorDate: Sun Sep 19 13:56:53 2021 +0100

    Allow for relative dates; sanitise stem once
---
 server/endpoints/mbox.py | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/server/endpoints/mbox.py b/server/endpoints/mbox.py
index 21a4f1c..815815f 100644
--- a/server/endpoints/mbox.py
+++ b/server/endpoints/mbox.py
@@ -69,7 +69,7 @@ async def process(
     lid = indata.get("list", "_")
     domain = indata.get("domain", "_")
     # may be provided as d= or date=
-    yyyymm = indata.get("d") or indata.get("date") # e.g. 2019-9
+    yyyymm = indata.get("d") or indata.get("date") # e.g. 2019-9; can also be lte=1M etc
 
     try:
         query_defuzzed = plugins.defuzzer.defuzz(indata, list_override="@" in lid and lid or None)
@@ -88,16 +88,15 @@ async def process(
         epoch_order="asc"
     )
 
-    # Figure out a sane filename (don't keep '.')
-    xlist = re.sub(r"[^-_a-z0-9]+", "_", lid)
-    xdomain = re.sub(r"[^-_a-z0-9]+", "_", domain)
     if yyyymm:
-        if len(yyyymm) == 6: # assume yyyy-m, convert to yyyy-mm
+        if len(yyyymm) == 6 and yyyymm[4] == '-': # assume yyyy-m, convert to yyyy-mm
             yyyymm = yyyymm[0:-1] + "0" + yyyymm[-1]
-        dlfile = f"{xlist}_{xdomain}_{yyyymm}.mbox"
+        dlstem = f"{lid}_{domain}_{yyyymm}"
     else:
-        dlfile = f"{xlist}_{xdomain}.mbox"
-    headers = {"Content-Type": "application/mbox", "Content-Disposition": f"attachment; filename={dlfile}"}
+        dlstem = f"{lid}_{domain}"
+    # Figure out a sane filename stem (don't keep '.')
+    dlstem = re.sub(r"[^-_a-z0-9]+", "_", dlstem)
+    headers = {"Content-Type": "application/mbox", "Content-Disposition": f"attachment; filename={dlstem}.mbox"}
 
     # Return mbox archive with filename as a stream
     response = aiohttp.web.StreamResponse(status=200, headers=headers)