parent
ff98203cc0
commit
bc517de913
|
|
@ -3,5 +3,6 @@
|
|||
<component name="SqlDialectMappings">
|
||||
<file url="file://$PROJECT_DIR$/migrations/models/11_20250803092810_update.py" dialect="MySQL" />
|
||||
<file url="file://$PROJECT_DIR$/migrations/models/16_20250806104900_update.py" dialect="GenericSQL" />
|
||||
<file url="file://$PROJECT_DIR$/scripts/update_fr.py" dialect="MySQL" />
|
||||
</component>
|
||||
</project>
|
||||
|
|
@ -2,13 +2,12 @@ import tempfile
|
|||
from pathlib import Path
|
||||
|
||||
from fastapi import Depends, HTTPException, Request, Query, UploadFile, File
|
||||
from typing import Literal, Tuple, Union
|
||||
from typing import Literal, Tuple
|
||||
|
||||
from tortoise.exceptions import DoesNotExist
|
||||
from tortoise.transactions import in_transaction
|
||||
|
||||
from app.models.base import User
|
||||
from app.models.fr import DefinitionFr
|
||||
from app.utils.security import is_admin_user
|
||||
from app.api.admin.router import admin_router
|
||||
import app.models.fr as fr
|
||||
|
|
@ -29,10 +28,9 @@ async def get_wordlist(request: Request,
|
|||
:param page: 显示的表格视窗的页数,起始默认为 1
|
||||
:param page_size: 控制每页的单词内容条数
|
||||
:param lang_code: 查询并显示对应语言的单词表
|
||||
:param admin_user: 管理员权限校验(自动完成)
|
||||
:return: None
|
||||
"""
|
||||
if not admin_user[0].is_admin:
|
||||
raise HTTPException(status_code=403, detail="非管理员,无权限访问")
|
||||
offset = (page - 1) * page_size
|
||||
if lang_code == "fr":
|
||||
total = await fr.DefinitionFr.all().count()
|
||||
|
|
@ -229,5 +227,6 @@ async def update_by_xlsx(
|
|||
await import_def_fr(path=tmp_path)
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=f"导入失败:{str(e)}")
|
||||
#TODO: 导入失败后的回滚(删除本次已经添加的内容)
|
||||
|
||||
return {"message": "导入成功"}
|
||||
|
|
|
|||
|
|
@ -7,9 +7,7 @@ dict_search = APIRouter()
|
|||
|
||||
|
||||
@dict_search.get("/search")
|
||||
async def search(
|
||||
request: Request, lang_pref: str, query_word: str, user=Depends(get_current_user)
|
||||
):
|
||||
async def search(request: Request, lang_pref: str, query_word: str, user= Depends(get_current_user)):
|
||||
word_content = await DefinitionFr.filter(
|
||||
word__icontains=query_word, lang_pref=lang_pref
|
||||
).values("word", "part_of_speech", "meaning", "example")
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import asyncio
|
|||
from pathlib import Path
|
||||
|
||||
import pandas as pd
|
||||
from tortoise import Tortoise
|
||||
from tortoise import Tortoise, connections
|
||||
from tortoise.exceptions import MultipleObjectsReturned
|
||||
from fastapi import UploadFile
|
||||
|
||||
|
|
@ -95,7 +95,11 @@ async def import_def_fr(
|
|||
|
||||
async def main():
|
||||
await Tortoise.init(config=TORTOISE_ORM)
|
||||
await DefinitionFr.all().delete()
|
||||
await DefinitionFr.all().delete() # TRUNCATE TABLE definitions_fr;
|
||||
conn = connections.get("default")
|
||||
await conn.execute_script("""
|
||||
ALTER TABLE definitions_fr AUTO_INCREMENT = 1;
|
||||
""")
|
||||
await import_def_fr()
|
||||
# await import_wordlist_fr()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue