feat(messages): limit message edit window to 7 days
All checks were successful
CI / test (push) Successful in 25s
All checks were successful
CI / test (push) Successful in 25s
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import json
|
import json
|
||||||
|
from datetime import datetime, timedelta, timezone
|
||||||
|
|
||||||
from fastapi import HTTPException, status
|
from fastapi import HTTPException, status
|
||||||
from sqlalchemy.exc import IntegrityError
|
from sqlalchemy.exc import IntegrityError
|
||||||
@@ -189,6 +190,15 @@ async def update_message(
|
|||||||
await ensure_chat_membership(db, chat_id=message.chat_id, user_id=user_id)
|
await ensure_chat_membership(db, chat_id=message.chat_id, user_id=user_id)
|
||||||
if message.sender_id != user_id:
|
if message.sender_id != user_id:
|
||||||
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="You can edit only your own messages")
|
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="You can edit only your own messages")
|
||||||
|
created_at = message.created_at
|
||||||
|
if created_at.tzinfo is None:
|
||||||
|
created_at = created_at.replace(tzinfo=timezone.utc)
|
||||||
|
edit_deadline = created_at + timedelta(days=7)
|
||||||
|
if datetime.now(timezone.utc) > edit_deadline:
|
||||||
|
raise HTTPException(
|
||||||
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
||||||
|
detail="Message can only be edited within 7 days",
|
||||||
|
)
|
||||||
message.text = payload.text
|
message.text = payload.text
|
||||||
await db.commit()
|
await db.commit()
|
||||||
await db.refresh(message)
|
await db.refresh(message)
|
||||||
|
|||||||
Reference in New Issue
Block a user