6e5e5c08bf
- Add can_delete column to document_shares (migration 0005) - Inject x-user-is-admin header from backend proxy to doc-service - Add get_user_is_admin() dep in doc-service - Delete endpoint now allows: owner, admin, or group member with can_delete=true - Watch documents (user_id='watch') deletable by admins only - DocumentOut gains viewer_can_delete (computed per-request) - Share UI: 'Allow group members to delete' checkbox + trash badge on shares - RowActionsMenu dropdown portaled to document.body — fixes overflow-hidden clipping - Delete mutation onError handler — no more silent failures Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
45 lines
988 B
Python
45 lines
988 B
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class DocumentShareOut(BaseModel):
|
|
id: str
|
|
document_id: str
|
|
group_id: str
|
|
shared_by_user_id: str
|
|
can_delete: bool
|
|
created_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class DocumentShareCreate(BaseModel):
|
|
group_id: str
|
|
can_delete: bool = False
|
|
|
|
|
|
class SharedDocumentOut(BaseModel):
|
|
"""DocumentOut fields plus sharing context for the 'Shared with me' view."""
|
|
id: str
|
|
user_id: str
|
|
filename: str
|
|
title: str | None
|
|
file_size: int
|
|
status: str
|
|
document_type: str | None
|
|
extracted_data: str | None
|
|
tags: str | None
|
|
error_message: str | None
|
|
created_at: datetime
|
|
processed_at: datetime | None
|
|
categories: list = []
|
|
source: str = "upload"
|
|
share_count: int = 0
|
|
viewer_can_delete: bool = False
|
|
# Sharing context
|
|
shared_by_user_id: str
|
|
shared_via_group_id: str
|
|
|
|
model_config = {"from_attributes": True}
|