1+ from auth_lib .fastapi import UnionAuth
12from fastapi import APIRouter , Depends
23from fastapi_sqlalchemy import db
34
45from calendar_backend .exceptions import ForbiddenAction , ObjectNotFound
5- from calendar_backend .methods import auth
66from calendar_backend .models import ApproveStatuses
77from calendar_backend .models import CommentEvent as DbCommentEvent
88from calendar_backend .routes .models .event import CommentEventGet , EventCommentPatch , EventCommentPost , EventComments
1111
1212settings = get_settings ()
1313# DEPRICATED TODO: Drop 2023-04-01
14- event_comment_router = APIRouter (prefix = "/timetable/event/{event_id}" , tags = ["Event: Comment" ], deprecated = True )
15- router = APIRouter (prefix = "/event/{event_id}" , tags = ["Event: Comment" ])
14+ event_comment_router = APIRouter (prefix = "/timetable/event/{event_id}/comment " , tags = ["Event: Comment" ], deprecated = True )
15+ router = APIRouter (prefix = "/event/{event_id}/comment " , tags = ["Event: Comment" ])
1616
1717
18- @event_comment_router .post ("/comment/ " , response_model = CommentEventGet ) # DEPRICATED TODO: Drop 2023-04-01
19- @router .post ("/comment/ " , response_model = CommentEventGet )
18+ @event_comment_router .post ("/" , response_model = CommentEventGet ) # DEPRICATED TODO: Drop 2023-04-01
19+ @router .post ("/" , response_model = CommentEventGet )
2020async def comment_event (event_id : int , comment : EventCommentPost ) -> CommentEventGet :
2121 approve_status = ApproveStatuses .APPROVED if not settings .REQUIRE_REVIEW_EVENT_COMMENT else ApproveStatuses .PENDING
2222 comment_event = DbCommentEvent .create (
@@ -26,8 +26,8 @@ async def comment_event(event_id: int, comment: EventCommentPost) -> CommentEven
2626 return CommentEventGet .from_orm (comment_event )
2727
2828
29- @event_comment_router .patch ("/comment/ {id}" , response_model = CommentEventGet ) # DEPRICATED TODO: Drop 2023-04-01
30- @router .patch ("/comment/ {id}" , response_model = CommentEventGet )
29+ @event_comment_router .patch ("/{id}" , response_model = CommentEventGet ) # DEPRICATED TODO: Drop 2023-04-01
30+ @router .patch ("/{id}" , response_model = CommentEventGet )
3131async def update_comment (id : int , event_id : int , comment_inp : EventCommentPatch ) -> CommentEventGet :
3232 comment = DbCommentEvent .get (id , only_approved = False , session = db .session )
3333 if comment .event_id != event_id :
@@ -39,18 +39,20 @@ async def update_comment(id: int, event_id: int, comment_inp: EventCommentPatch)
3939 return CommentEventGet .from_orm (comment_event )
4040
4141
42- @event_comment_router .get ("/comment/ {id}" , response_model = CommentEventGet ) # DEPRICATED TODO: Drop 2023-04-01
43- @router .get ("/comment/ {id}" , response_model = CommentEventGet )
42+ @event_comment_router .get ("/{id}" , response_model = CommentEventGet ) # DEPRICATED TODO: Drop 2023-04-01
43+ @router .get ("/{id}" , response_model = CommentEventGet )
4444async def get_comment (id : int , event_id : int ) -> CommentEventGet :
4545 comment = DbCommentEvent .get (id , session = db .session )
4646 if not comment .event_id == event_id or comment .approve_status != ApproveStatuses .APPROVED :
4747 raise ObjectNotFound (DbCommentEvent , id )
4848 return CommentEventGet .from_orm (comment )
4949
5050
51- @event_comment_router .delete ("/comment/{id}" , response_model = None ) # DEPRICATED TODO: Drop 2023-04-01
52- @router .delete ("/comment/{id}" , response_model = None )
53- async def delete_comment (id : int , event_id : int , _ : auth .User = Depends (auth .get_current_user )) -> None :
51+ @event_comment_router .delete ("/{id}" , response_model = None ) # DEPRICATED TODO: Drop 2023-04-01
52+ @router .delete ("/{id}" , response_model = None )
53+ async def delete_comment (
54+ id : int , event_id : int , _ = Depends (UnionAuth (scopes = ["timetable.event.comment.delete" ]))
55+ ) -> None :
5456 comment = DbCommentEvent .get (id , only_approved = False , session = db .session )
5557 if comment .event_id != event_id or comment .approve_status != ApproveStatuses .APPROVED :
5658 raise ObjectNotFound (DbCommentEvent , id )
@@ -59,8 +61,8 @@ async def delete_comment(id: int, event_id: int, _: auth.User = Depends(auth.get
5961 return None
6062
6163
62- @event_comment_router .get ("/comment/ " , response_model = EventComments ) # DEPRICATED TODO: Drop 2023-04-01
63- @router .get ("/comment/ " , response_model = EventComments )
64+ @event_comment_router .get ("/" , response_model = EventComments ) # DEPRICATED TODO: Drop 2023-04-01
65+ @router .get ("/" , response_model = EventComments )
6466async def get_event_comments (event_id : int , limit : int = 10 , offset : int = 0 ) -> EventComments :
6567 res = DbCommentEvent .get_all (session = db .session ).filter (DbCommentEvent .event_id == event_id )
6668 if limit :
0 commit comments