moderators.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from typing import List
  2. from fastapi import APIRouter, Depends, HTTPException
  3. from sqlalchemy.orm import Session
  4. from app.db.session import get_db
  5. from app.schemas import ModeratorCreate, ModeratorResponse
  6. from app.crud.crud_moderator import get_moderators, create_moderator, get_moderator, delete_moderator
  7. from app.api.deps import get_current_user
  8. from app.models import User
  9. router = APIRouter()
  10. @router.get("/", response_model=List[ModeratorResponse])
  11. def read_moderators(
  12. skip: int = 0,
  13. limit: int = 100,
  14. db: Session = Depends(get_db),
  15. current_user: User = Depends(get_current_user)
  16. ):
  17. moderators = get_moderators(db, skip=skip, limit=limit, creator_id=current_user.id)
  18. return moderators
  19. @router.post("/", response_model=ModeratorResponse)
  20. def create_new_moderator(
  21. moderator: ModeratorCreate,
  22. db: Session = Depends(get_db),
  23. current_user: User = Depends(get_current_user)
  24. ):
  25. return create_moderator(db=db, moderator=moderator, creator_id=current_user.id)
  26. @router.get("/{moderator_id}", response_model=ModeratorResponse)
  27. def read_moderator(
  28. moderator_id: int,
  29. db: Session = Depends(get_db),
  30. current_user: User = Depends(get_current_user)
  31. ):
  32. db_moderator = get_moderator(db, moderator_id=moderator_id)
  33. if db_moderator is None:
  34. raise HTTPException(status_code=404, detail="Moderator not found")
  35. if db_moderator.creator_id != current_user.id and current_user.role != 'admin':
  36. raise HTTPException(status_code=403, detail="Not enough permissions")
  37. return db_moderator
  38. @router.delete("/{moderator_id}", response_model=ModeratorResponse)
  39. def delete_existing_moderator(
  40. moderator_id: int,
  41. db: Session = Depends(get_db),
  42. current_user: User = Depends(get_current_user)
  43. ):
  44. db_moderator = get_moderator(db, moderator_id=moderator_id)
  45. if db_moderator is None:
  46. raise HTTPException(status_code=404, detail="Moderator not found")
  47. if db_moderator.creator_id != current_user.id and current_user.role != 'admin':
  48. raise HTTPException(status_code=403, detail="Not enough permissions")
  49. return delete_moderator(db=db, moderator_id=moderator_id)