Skip to content

Commit 08859e4

Browse files
committed
user_event fixed
1 parent c0d45e9 commit 08859e4

2 files changed

Lines changed: 13 additions & 35 deletions

File tree

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from auth_lib.fastapi import UnionAuth
2-
from fastapi import APIRouter, Depends, HTTPException, status
2+
from fastapi import APIRouter, Depends, HTTPException, status, Query
33
from fastapi_sqlalchemy import db
44

55
from calendar_backend.exceptions import ObjectNotFound
@@ -12,54 +12,32 @@
1212

1313
@router.post("/{event_id}/visit", response_model=VisitResponse)
1414
async def set_event_visit_status(
15-
event_id: int, visit: VisitRequest, auth: dict = Depends(UnionAuth(scopes=[]))
16-
) -> VisitResponse:
15+
event_id: int,
16+
auth: dict = Depends(UnionAuth()),
17+
visit: str = Query(enum=["no_status", "going", "not_going", "attended"], default="no_status"),
18+
) -> VisitResponse:
1719
"""
1820
Отметить посещение мероприятия для текущего пользователя.
1921
"""
2022
user_id = auth.get('id')
21-
if user_id is None:
22-
raise HTTPException(
23-
status_code=status.HTTP_401_UNAUTHORIZED,
24-
detail="User ID not found in authentication data",
25-
)
2623

27-
try:
28-
_ = Event.get(event_id, with_deleted=False, session=db.session)
29-
except ObjectNotFound:
30-
raise HTTPException(
31-
status_code=status.HTTP_404_NOT_FOUND,
32-
detail=f"Event with id {event_id} not found",
33-
)
24+
Event.get(event_id, with_deleted=False, session=db.session)
3425

3526
existing = (
36-
db.session.query(EventUser)
37-
.filter(
38-
EventUser.event_id == event_id,
39-
EventUser.user_id == user_id,
40-
EventUser.is_deleted == False,
41-
)
27+
EventUser.get_all(session=db.session)
28+
.filter(EventUser.event_id == event_id, EventUser.user_id == user_id)
4229
.first()
4330
)
4431

4532
if existing:
46-
existing.status = visit.status
47-
db.session.flush()
48-
result = existing
33+
result = EventUser.update(existing.id, session=db.session, status=visit)
4934
else:
5035
result = EventUser.create(
5136
session=db.session,
5237
event_id=event_id,
5338
user_id=user_id,
54-
status=visit.status,
39+
status=visit,
5540
)
5641

5742
db.session.commit()
58-
59-
return VisitResponse(
60-
id=result.id,
61-
event_id=result.event_id,
62-
user_id=result.user_id,
63-
status=result.status,
64-
updated_at=result.updated_at.isoformat(),
65-
)
43+
return VisitResponse.model_validate(result)

calendar_backend/routes/models/visit.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from pydantic import BaseModel
2-
2+
import datetime
33
from calendar_backend.models import EventUserStatus
44

55

@@ -12,6 +12,6 @@ class VisitResponse(BaseModel):
1212
event_id: int
1313
user_id: int
1414
status: EventUserStatus
15-
updated_at: str # ISO-формат
15+
updated_at: datetime.datetime
1616

1717
model_config = {"from_attributes": True}

0 commit comments

Comments
 (0)