Parametr select u vypisu, telo udalosti v calendarView
- calendar/view: include_body a body_type (html, text), telo udalosti rovnou ve vypisu bez dalsiho volani - select u vypisu mailu, udalosti, calendarView, jedne udalosti a skupin; nahrazuje vychozi sadu poli - app/graph_fields.py: vychozi sady a seznamy dostupnych poli, Swagger je zobrazuje v popisu parametru - README: endpointy, popis select, zaznam zmen
This commit is contained in:
+35
-5
@@ -6,6 +6,15 @@ from fastapi import APIRouter, Body, Depends, Header, HTTPException, Query, Resp
|
||||
from .config import Settings
|
||||
from .credentials import get_request_settings
|
||||
from .graph_client import MicrosoftGraphClient
|
||||
from .graph_fields import (
|
||||
EVENT_DEFAULT_SELECT,
|
||||
EVENT_FIELDS,
|
||||
GROUP_DEFAULT_SELECT,
|
||||
GROUP_FIELDS,
|
||||
MESSAGE_DEFAULT_SELECT,
|
||||
MESSAGE_FIELDS,
|
||||
select_description,
|
||||
)
|
||||
from .schemas import (
|
||||
CalendarEventRequest,
|
||||
CalendarEventUpdateRequest,
|
||||
@@ -48,6 +57,11 @@ def get_planner_service(graph: MicrosoftGraphClient = Depends(get_graph_client))
|
||||
return PlannerService(graph)
|
||||
|
||||
|
||||
EVENT_SELECT_QUERY = Query(None, description=select_description(EVENT_DEFAULT_SELECT, EVENT_FIELDS))
|
||||
MESSAGE_SELECT_QUERY = Query(None, description=select_description(MESSAGE_DEFAULT_SELECT, MESSAGE_FIELDS))
|
||||
GROUP_SELECT_QUERY = Query(None, description=select_description(GROUP_DEFAULT_SELECT, GROUP_FIELDS))
|
||||
|
||||
|
||||
@router.get("/status")
|
||||
def microsoft365_status(request_settings: Settings = Depends(get_request_settings)) -> dict[str, Any]:
|
||||
return {
|
||||
@@ -103,9 +117,10 @@ async def list_messages(
|
||||
user_id: str,
|
||||
folder: str = "Inbox",
|
||||
top: int = Query(25, ge=1, le=100),
|
||||
select: str | None = MESSAGE_SELECT_QUERY,
|
||||
service: MailService = Depends(get_mail_service),
|
||||
) -> Any:
|
||||
return await service.list_messages(user_id=user_id, folder=folder, top=top)
|
||||
return await service.list_messages(user_id=user_id, folder=folder, top=top, select=select)
|
||||
|
||||
|
||||
@router.post("/users/{user_id}/mail/send", status_code=status.HTTP_202_ACCEPTED)
|
||||
@@ -129,9 +144,10 @@ async def get_calendar(user_id: str, service: CalendarService = Depends(get_cale
|
||||
async def list_events(
|
||||
user_id: str,
|
||||
top: int = Query(25, ge=1, le=100),
|
||||
select: str | None = EVENT_SELECT_QUERY,
|
||||
service: CalendarService = Depends(get_calendar_service),
|
||||
) -> Any:
|
||||
return await service.list_events(user_id=user_id, top=top)
|
||||
return await service.list_events(user_id=user_id, top=top, select=select)
|
||||
|
||||
|
||||
@router.post("/users/{user_id}/calendar/events", status_code=status.HTTP_201_CREATED)
|
||||
@@ -150,9 +166,21 @@ async def list_calendar_view(
|
||||
end: str = Query(..., description="ISO 8601 with offset, e.g. 2026-09-08T18:00:00+02:00."),
|
||||
top: int = Query(25, ge=1, le=100),
|
||||
time_zone: str | None = Query(None, description="Time zone for returned dates, e.g. Europe/Prague."),
|
||||
include_body: bool = Query(False, description="Also return body and bodyPreview of each event."),
|
||||
body_type: str = Query("html", pattern="^(html|text)$", description="Body format when include_body is true."),
|
||||
select: str | None = EVENT_SELECT_QUERY,
|
||||
service: CalendarService = Depends(get_calendar_service),
|
||||
) -> Any:
|
||||
return await service.list_calendar_view(user_id=user_id, start=start, end=end, top=top, time_zone=time_zone)
|
||||
return await service.list_calendar_view(
|
||||
user_id=user_id,
|
||||
start=start,
|
||||
end=end,
|
||||
top=top,
|
||||
time_zone=time_zone,
|
||||
include_body=include_body,
|
||||
body_type=body_type,
|
||||
select=select,
|
||||
)
|
||||
|
||||
|
||||
@router.post("/users/{user_id}/calendar/schedule")
|
||||
@@ -168,9 +196,10 @@ async def get_schedule(
|
||||
async def get_event(
|
||||
user_id: str,
|
||||
event_id: str,
|
||||
select: str | None = EVENT_SELECT_QUERY,
|
||||
service: CalendarService = Depends(get_calendar_service),
|
||||
) -> Any:
|
||||
return await service.get_event(user_id=user_id, event_id=event_id)
|
||||
return await service.get_event(user_id=user_id, event_id=event_id, select=select)
|
||||
|
||||
|
||||
@router.patch("/users/{user_id}/calendar/events/{event_id}")
|
||||
@@ -215,9 +244,10 @@ async def upload_small_file(
|
||||
@router.get("/groups")
|
||||
async def list_groups(
|
||||
top: int = Query(25, ge=1, le=999),
|
||||
select: str | None = GROUP_SELECT_QUERY,
|
||||
service: GroupsService = Depends(get_groups_service),
|
||||
) -> Any:
|
||||
return await service.list_groups(top=top)
|
||||
return await service.list_groups(top=top, select=select)
|
||||
|
||||
|
||||
@router.get("/teams/{team_id}/channels")
|
||||
|
||||
Reference in New Issue
Block a user