Add reverse_alias to GET /api/aliases/:alias_id/activities

This commit is contained in:
Son NK 2020-04-04 19:18:07 +02:00
parent 1c5d6e3299
commit 4d8040c80d
4 changed files with 16 additions and 8 deletions

View File

@ -951,13 +951,15 @@ If success, 200 with the list of activities, for example:
"action": "reply", "action": "reply",
"from": "yes_meo_chat@sl.local", "from": "yes_meo_chat@sl.local",
"timestamp": 1580903760, "timestamp": 1580903760,
"to": "marketing@example.com" "to": "marketing@example.com",
"reverse_alias": "\"marketing at example.com\" <reply@a.b>",
}, },
{ {
"action": "reply", "action": "reply",
"from": "yes_meo_chat@sl.local", "from": "yes_meo_chat@sl.local",
"timestamp": 1580903760, "timestamp": 1580903760,
"to": "marketing@example.com" "to": "marketing@example.com",
"reverse_alias": "\"marketing at example.com\" <reply@a.b>",
} }
] ]
} }

View File

@ -142,6 +142,7 @@ def get_alias_activities(alias_id):
- to - to
- timestamp - timestamp
- action: forward|reply|block - action: forward|reply|block
- reverse_alias
""" """
user = g.user user = g.user
@ -159,7 +160,10 @@ def get_alias_activities(alias_id):
activities = [] activities = []
for alias_log in alias_logs: for alias_log in alias_logs:
activity = {"timestamp": alias_log.when.timestamp} activity = {
"timestamp": alias_log.when.timestamp,
"reverse_alias": alias_log.reverse_alias,
}
if alias_log.is_reply: if alias_log.is_reply:
activity["from"] = alias_log.alias activity["from"] = alias_log.alias
activity["to"] = alias_log.website_from or alias_log.website_email activity["to"] = alias_log.website_from or alias_log.website_email

View File

@ -11,6 +11,7 @@ from app.models import Alias, EmailLog, Contact
class AliasLog: class AliasLog:
website_email: str website_email: str
website_from: str website_from: str
reverse_alias: str
alias: str alias: str
when: arrow.Arrow when: arrow.Arrow
is_reply: bool is_reply: bool
@ -78,6 +79,7 @@ def get_alias_log(alias: Alias, page_id=0):
al = AliasLog( al = AliasLog(
website_email=contact.website_email, website_email=contact.website_email,
website_from=contact.website_from, website_from=contact.website_from,
reverse_alias=contact.website_send_to(),
alias=alias.email, alias=alias.email,
when=email_log.created_at, when=email_log.created_at,
is_reply=email_log.is_reply, is_reply=email_log.is_reply,

View File

@ -1,11 +1,10 @@
import json from flask import url_for
from flask import url_for from flask import url_for
from app.config import EMAIL_DOMAIN, MAX_NB_EMAIL_FREE_PLAN, PAGE_LIMIT from app.config import PAGE_LIMIT
from app.extensions import db from app.extensions import db
from app.models import User, ApiKey, Alias, Contact, EmailLog from app.models import User, ApiKey, Alias, Contact, EmailLog
from app.utils import random_word
def test_get_aliases_error_without_pagination(flask_client): def test_get_aliases_error_without_pagination(flask_client):
@ -182,10 +181,11 @@ def test_alias_activities(flask_client):
assert r.status_code == 200 assert r.status_code == 200
assert len(r.json["activities"]) == PAGE_LIMIT assert len(r.json["activities"]) == PAGE_LIMIT
for ac in r.json["activities"]: for ac in r.json["activities"]:
assert ac["action"]
assert ac["from"] assert ac["from"]
assert ac["to"]
assert ac["timestamp"]
assert ac["action"] assert ac["action"]
assert ac["action"] assert ac["reverse_alias"]
# second page, should return 1 or 2 results only # second page, should return 1 or 2 results only
r = flask_client.get( r = flask_client.get(