modelfiles.py 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. from fastapi import Depends, FastAPI, HTTPException, status
  2. from datetime import datetime, timedelta
  3. from typing import List, Union, Optional
  4. from fastapi import APIRouter
  5. from pydantic import BaseModel
  6. import json
  7. from apps.web.models.modelfiles import (
  8. Modelfiles,
  9. ModelfileForm,
  10. ModelfileTagNameForm,
  11. ModelfileUpdateForm,
  12. ModelfileResponse,
  13. )
  14. from utils.utils import get_current_user
  15. from constants import ERROR_MESSAGES
  16. router = APIRouter()
  17. ############################
  18. # GetModelfiles
  19. ############################
  20. @router.get("/", response_model=List[ModelfileResponse])
  21. async def get_modelfiles(skip: int = 0,
  22. limit: int = 50,
  23. user=Depends(get_current_user)):
  24. return Modelfiles.get_modelfiles(skip, limit)
  25. ############################
  26. # CreateNewModelfile
  27. ############################
  28. @router.post("/create", response_model=Optional[ModelfileResponse])
  29. async def create_new_modelfile(form_data: ModelfileForm,
  30. user=Depends(get_current_user)):
  31. if user.role != "admin":
  32. raise HTTPException(
  33. status_code=status.HTTP_401_UNAUTHORIZED,
  34. detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
  35. )
  36. modelfile = Modelfiles.insert_new_modelfile(user.id, form_data)
  37. if modelfile:
  38. return ModelfileResponse(
  39. **{
  40. **modelfile.model_dump(),
  41. "modelfile":
  42. json.loads(modelfile.modelfile),
  43. })
  44. else:
  45. raise HTTPException(
  46. status_code=status.HTTP_401_UNAUTHORIZED,
  47. detail=ERROR_MESSAGES.DEFAULT(),
  48. )
  49. ############################
  50. # GetModelfileByTagName
  51. ############################
  52. @router.post("/", response_model=Optional[ModelfileResponse])
  53. async def get_modelfile_by_tag_name(form_data: ModelfileTagNameForm,
  54. user=Depends(get_current_user)):
  55. modelfile = Modelfiles.get_modelfile_by_tag_name(form_data.tag_name)
  56. if modelfile:
  57. return ModelfileResponse(
  58. **{
  59. **modelfile.model_dump(),
  60. "modelfile":
  61. json.loads(modelfile.modelfile),
  62. })
  63. else:
  64. raise HTTPException(
  65. status_code=status.HTTP_401_UNAUTHORIZED,
  66. detail=ERROR_MESSAGES.NOT_FOUND,
  67. )
  68. ############################
  69. # UpdateModelfileByTagName
  70. ############################
  71. @router.post("/update", response_model=Optional[ModelfileResponse])
  72. async def update_modelfile_by_tag_name(form_data: ModelfileUpdateForm,
  73. user=Depends(get_current_user)):
  74. if user.role != "admin":
  75. raise HTTPException(
  76. status_code=status.HTTP_401_UNAUTHORIZED,
  77. detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
  78. )
  79. modelfile = Modelfiles.get_modelfile_by_tag_name(form_data.tag_name)
  80. if modelfile:
  81. updated_modelfile = {
  82. **json.loads(modelfile.modelfile),
  83. **form_data.modelfile,
  84. }
  85. modelfile = Modelfiles.update_modelfile_by_tag_name(
  86. form_data.tag_name, updated_modelfile)
  87. return ModelfileResponse(
  88. **{
  89. **modelfile.model_dump(),
  90. "modelfile":
  91. json.loads(modelfile.modelfile),
  92. })
  93. else:
  94. raise HTTPException(
  95. status_code=status.HTTP_401_UNAUTHORIZED,
  96. detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
  97. )
  98. ############################
  99. # DeleteModelfileByTagName
  100. ############################
  101. @router.delete("/delete", response_model=bool)
  102. async def delete_modelfile_by_tag_name(form_data: ModelfileTagNameForm,
  103. user=Depends(get_current_user)):
  104. if user.role != "admin":
  105. raise HTTPException(
  106. status_code=status.HTTP_401_UNAUTHORIZED,
  107. detail=ERROR_MESSAGES.ACCESS_PROHIBITED,
  108. )
  109. result = Modelfiles.delete_modelfile_by_tag_name(form_data.tag_name)
  110. return result