Procházet zdrojové kódy

Prettify alias log

Son NK před 5 roky
rodič
revize
f80de382fe

+ 15 - 8
app/dashboard/templates/dashboard/alias_log.html

@@ -108,25 +108,32 @@
     {% for log in logs %}
       <div class="col-12">
         <div class="my-2 p-2 card border-light">
-          <div class="font-weight-bold">{{ log.when | dt }}</div>
+          <div class="font-weight-bold">{{ log.when | dt }}
+            {% if log.bounced %}  ⚠️ {% endif %}
+          </div>
+
           <div>
-            <span class="mr-2">{{ log.website_from or log.website_email }}</span>
+            {% if log.bounced %}
+              <span class="mr-2">{{ log.website_from or log.website_email }}</span>
+              <img src="{{ url_for('static', filename='arrows/forward-arrow.svg') }}" class="arrow">
+              <span class="ml-2">{{ log.alias }}</span>
+              <img src="{{ url_for('static', filename='arrows/blocked-arrow.svg') }}" class="arrow">
+              <span class="ml-2">{{ log.mailbox }}</span>
+            {% else %}
+              <span class="mr-2">{{ log.website_from or log.website_email }}</span>
 
-            <span>
+              <span>
               {% if log.is_reply %}
                 <img src="{{ url_for('static', filename='arrows/reply-arrow.svg') }}" class="arrow">
               {% elif log.blocked %}
                 <img src="{{ url_for('static', filename='arrows/blocked-arrow.svg') }}" class="arrow">
-              {% elif log.bounced %}
-                <span class="text-danger"> --- Refused (or bounced) ---> </span>
               {% else %}
                 <img src="{{ url_for('static', filename='arrows/forward-arrow.svg') }}" class="arrow">
               {% endif %}
             </span>
 
-            <span class="ml-2">
-              {{ log.alias }}
-            </span>
+              <span class="ml-2">{{ log.alias }}</span>
+            {% endif %}
           </div>
         </div>
       </div>

+ 3 - 0
app/dashboard/views/alias_log.py

@@ -16,6 +16,7 @@ class AliasLog:
     is_reply: bool
     blocked: bool
     bounced: bool
+    mailbox: str
 
     def __init__(self, **kwargs):
         for k, v in kwargs.items():
@@ -62,6 +63,7 @@ def alias_log(alias_id, page_id):
 
 def get_alias_log(gen_email: GenEmail, page_id=0):
     logs: [AliasLog] = []
+    mailbox = gen_email.mailbox_email()
 
     q = (
         db.session.query(ForwardEmail, ForwardEmailLog)
@@ -81,6 +83,7 @@ def get_alias_log(gen_email: GenEmail, page_id=0):
             is_reply=fel.is_reply,
             blocked=fel.blocked,
             bounced=fel.bounced,
+            mailbox=mailbox
         )
         logs.append(al)
     logs = sorted(logs, key=lambda l: l.when, reverse=True)

+ 6 - 0
app/models.py

@@ -513,6 +513,12 @@ class GenEmail(db.Model, ModelMixin):
         random_email = generate_email(scheme=scheme, in_hex=in_hex)
         return GenEmail.create(user_id=user_id, email=random_email)
 
+    def mailbox_email(self):
+        if self.mailbox_id:
+            return self.mailbox.email
+        else:
+            return self.user.email
+
     def __repr__(self):
         return f"<GenEmail {self.id} {self.email}>"
 

+ 2 - 9
email_handler.py

@@ -250,11 +250,7 @@ def handle_forward(envelope, smtp: SMTP, msg: Message, rcpt_to: str) -> str:
             LOG.d("alias %s cannot be created on-the-fly, return 510", alias)
             return "510 Email not exist"
 
-    if gen_email.mailbox_id:
-        mailbox_email = gen_email.mailbox.email
-    else:
-        mailbox_email = gen_email.user.email
-
+    mailbox_email = gen_email.mailbox_email()
     forward_email = get_or_create_forward_email(msg["From"], gen_email)
     forward_log = ForwardEmailLog.create(forward_id=forward_email.id)
 
@@ -337,10 +333,7 @@ def handle_reply(envelope, smtp: SMTP, msg: Message, rcpt_to: str) -> str:
 
     gen_email = forward_email.gen_email
     user = gen_email.user
-    if gen_email.mailbox_id:
-        mailbox_email = gen_email.mailbox.email
-    else:
-        mailbox_email = gen_email.user.email
+    mailbox_email = gen_email.mailbox_email()
 
     # bounce email initiated by Postfix
     # can happen in case emails cannot be delivered to user-email