You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ponymail.apache.org by hu...@apache.org on 2021/09/18 22:35:00 UTC
[incubator-ponymail-foal] branch humbedooh/monthly_stats created
(now f16ead4)
This is an automated email from the ASF dual-hosted git repository.
humbedooh pushed a change to branch humbedooh/monthly_stats
in repository https://gitbox.apache.org/repos/asf/incubator-ponymail-foal.git.
at f16ead4 refactor get_years, add activity stats and rename
This branch includes the following new commits:
new f16ead4 refactor get_years, add activity stats and rename
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[incubator-ponymail-foal] 01/01: refactor get_years,
add activity stats and rename
Posted by hu...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
humbedooh pushed a commit to branch humbedooh/monthly_stats
in repository https://gitbox.apache.org/repos/asf/incubator-ponymail-foal.git
commit f16ead4003fcb4417e4e8cd01252c76832feb0f3
Author: Daniel Gruno <hu...@apache.org>
AuthorDate: Sat Sep 18 17:34:54 2021 -0500
refactor get_years, add activity stats and rename
---
server/plugins/messages.py | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/server/plugins/messages.py b/server/plugins/messages.py
index cd3ed7b..e1077ba 100644
--- a/server/plugins/messages.py
+++ b/server/plugins/messages.py
@@ -411,8 +411,8 @@ async def get_list_stats(session, maxage="90d", admin=False):
return lists
-async def get_years(session, query_defuzzed):
- """ Fetches the oldest and youngest email, returns the years between them """
+async def get_activity_span(session, query_defuzzed):
+ """ Fetches the activity span of a search as well as active months within that span """
# Fetch any private lists included in search results
fuzz_private_only = dict(query_defuzzed)
@@ -445,7 +445,7 @@ async def get_years(session, query_defuzzed):
{"bool": {"should": [{"term": {"private": False}}, {"terms": {"list_raw": private_lists_accessible}}]}}
]
- # Get oldest and youngest doc in single scan
+ # Get oldest and youngest doc in single scan, as well as a monthly histogram
res = await session.database.search(
index=session.database.dbs.mbox,
size=0,
@@ -453,18 +453,28 @@ async def get_years(session, query_defuzzed):
"aggs": {
"first": {"min": {"field": "epoch"}},
"last": {"max": {"field": "epoch"}},
+ "active_months": {
+ "date_histogram": {
+ "field": "date",
+ "calendar_interval": "month",
+ "format": "yyyy-MM"
+ }
+ }
},
}
)
oldest = datetime.datetime.fromtimestamp(0)
youngest = datetime.datetime.fromtimestamp(0)
+ monthly_activity = {}
if res["aggregations"]:
aggs = res["aggregations"]
oldest = datetime.datetime.fromtimestamp(aggs["first"]["value"] or 0)
youngest = datetime.datetime.fromtimestamp(aggs["last"]["value"] or 0)
+ for bucket in aggs["active_months"].get("buckets", []):
+ monthly_activity[bucket["key_as_string"]] = bucket["doc_count"]
- return oldest.year, youngest.year, oldest.month, youngest.month
+ return oldest, youngest, monthly_activity
class ThreadConstructor: