email tem work now need uses to create the system with rback
parent
d48048bb7a
commit
caab412f96
|
|
@ -1 +1,32 @@
|
|||
"""Inbox helpers — attachment loading and other non-routing checks."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import base64
|
||||
from pathlib import Path
|
||||
|
||||
from inbox.models import Inbox_Messages
|
||||
|
||||
|
||||
def load_message_files(message: Inbox_Messages) -> list[dict]:
|
||||
"""Read files from file_path when they exist on disk."""
|
||||
if not message.file_path:
|
||||
return []
|
||||
|
||||
files: list[dict] = []
|
||||
for path_str in message.file_path.split(","):
|
||||
path = Path(path_str.strip())
|
||||
if not path.is_file():
|
||||
continue
|
||||
try:
|
||||
raw = path.read_bytes()
|
||||
except OSError:
|
||||
continue
|
||||
files.append(
|
||||
{
|
||||
"file_name": path.name,
|
||||
"content_base64": base64.b64encode(raw).decode("ascii"),
|
||||
"size": len(raw),
|
||||
}
|
||||
)
|
||||
return files
|
||||
|
|
|
|||
|
|
@ -17,8 +17,10 @@ def serialize_message(message: Inbox_Messages) -> dict:
|
|||
sender_name = name
|
||||
|
||||
attachment_name = None
|
||||
if message.file_path:
|
||||
attachment_name = Path(message.file_path).name
|
||||
if message.file_name:
|
||||
attachment_name = message.file_name.split(",")[0].strip() or None
|
||||
elif message.file_path:
|
||||
attachment_name = Path(message.file_path.split(",")[0].strip()).name or None
|
||||
|
||||
return {
|
||||
"id": str(message.id),
|
||||
|
|
@ -31,6 +33,7 @@ def serialize_message(message: Inbox_Messages) -> dict:
|
|||
"unread": not message.message_read,
|
||||
"attachment": message.attachment,
|
||||
"attachment_name": attachment_name,
|
||||
"file_name": message.file_name,
|
||||
"message_to": message.message_to,
|
||||
"message_cc": message.message_cc,
|
||||
"message_bcc": message.message_bcc,
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
import httpx,os,uuid
|
||||
import httpx,os
|
||||
from fastapi import HTTPException
|
||||
from inbox.models import Inbox_Messages
|
||||
from inbox.file_decoder import decode_attachment, AttachmentDecodeError
|
||||
from inbox.serializers import serialize_message
|
||||
from inbox.plugins import load_message_files
|
||||
from dotenv import load_dotenv
|
||||
load_dotenv()
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy import func,or_
|
||||
from sqlmodel import select
|
||||
from pydantic import BaseModel
|
||||
|
||||
class Email:
|
||||
|
|
@ -48,13 +47,24 @@ class Email:
|
|||
|
||||
async def get_inbox_messages(self,top,skip,search=None):
|
||||
messages=await Inbox_Messages.get_inbox_messages(self.session,top,skip,search)
|
||||
return [serialize_message(m) for m in messages]
|
||||
items=[]
|
||||
for m in messages:
|
||||
item=serialize_message(m)
|
||||
files=load_message_files(m)
|
||||
if files:
|
||||
item["files"]=files
|
||||
items.append(item)
|
||||
return items
|
||||
|
||||
async def get_inbox_message_by_id(self,record_id):
|
||||
message=await Inbox_Messages.get_inbox_message_by_id(self.session,record_id)
|
||||
if not message:
|
||||
raise HTTPException(status_code=404,detail="Message not found")
|
||||
return serialize_message(message)
|
||||
item=serialize_message(message)
|
||||
files=load_message_files(message)
|
||||
if files:
|
||||
item["files"]=files
|
||||
return item
|
||||
|
||||
async def count_inbox_messages(self,search=None):
|
||||
return await Inbox_Messages.count_inbox_messages(self.session,search)
|
||||
|
|
|
|||
Loading…
Reference in New Issue