diff --git a/app/api/v1/endpoints/group.py b/app/api/v1/endpoints/group.py index 11e9495..59f2e90 100644 --- a/app/api/v1/endpoints/group.py +++ b/app/api/v1/endpoints/group.py @@ -9,7 +9,7 @@ from app.utils.get_db import get_db from app.utils.auth import get_current_user -from app.curd.group import crud_create, crud_gen_invite_code, crud_enter_group, crud_modify_basic_info, crud_modify_admin_list, crud_remove_member, crud_leave_group, crud_get_basic_info, crud_get_people_info, crud_get_my_level, crud_all_groups, crud_new_folder, crud_new_article, crud_new_note, crud_article_tags, crud_file_tree, crud_permission_define, crud_apply_to_delete, crud_all_delete_applications, crud_reply_to_delete, crud_delete, crud_get_permissions, crud_logs, crud_disband, crud_change_folder_name, crud_change_article_name, crud_change_note, crud_read_note +from app.curd.group import crud_create, crud_gen_invite_code, crud_enter_group, crud_modify_basic_info, crud_modify_admin_list, crud_remove_member, crud_leave_group, crud_get_basic_info, crud_get_people_info, crud_get_my_level, crud_all_groups, crud_new_folder, crud_new_article, crud_new_note, crud_article_tags, crud_file_tree, crud_permission_define, crud_apply_to_delete, crud_all_delete_applications, crud_reply_to_delete, crud_delete, crud_get_permissions, crud_if_edit_note, crud_logs, crud_disband, crud_change_folder_name, crud_change_article_name, crud_change_note, crud_read_note from app.schemas.group import EnterGroup, LeaveGroup router = APIRouter() @@ -218,6 +218,12 @@ async def get_permissions(group_id: int = Query(...), item_type: int = Query(... unaccessible, read_only, writeable = await crud_get_permissions(group_id, item_type, item_id, db) return {"unaccessible": unaccessible, "read_only": read_only, "writeable": writeable} +@router.get("/ifEditNote", response_model=dict) +async def if_edit_note(note_id: int = Query(...), db: AsyncSession = Depends(get_db), user: dict = Depends(get_current_user)): + user_id = user.get("id") + editable = await crud_if_edit_note(note_id, user_id, db) + return {"editable": editable} + @router.post("/changeFolderName", response_model=dict) async def change_folder_name(folder_id: int = Body(...), folder_name: str = Body(...), db: AsyncSession = Depends(get_db), user: dict = Depends(get_current_user)): if len(folder_name) > 30: diff --git a/app/api/v1/endpoints/note.py b/app/api/v1/endpoints/note.py index 4d2bf52..8693925 100644 --- a/app/api/v1/endpoints/note.py +++ b/app/api/v1/endpoints/note.py @@ -41,7 +41,7 @@ async def get_notes(note_find: NoteFind = Depends(), db: AsyncSession = Depends( "page": note_find.page, "page_size": note_find.page_size }, - "notes": [note.model_dump() for note in notes] + "notes": notes } @router.get("/title", response_model=dict) diff --git a/app/curd/group.py b/app/curd/group.py index e038b6c..053edfe 100644 --- a/app/curd/group.py +++ b/app/curd/group.py @@ -581,6 +581,12 @@ async def crud_get_permissions(group_id: int, item_type: int, item_id: int, db: return unaccessible, read_only, writeable +async def crud_if_edit_note(note_id: int, user_id: int, db: AsyncSession): + query = select(operate_permissions).where(operate_permissions.c.user_id == user_id, operate_permissions.c.item_type == 3, operate_permissions.c.item_id == note_id) + result = await db.execute(query) + permission = result.first() + return False if permission else True + async def crud_change_folder_name(folder_id: int, folder_name: str, user_id: int, db: AsyncSession): query = select(Folder).where(Folder.id == folder_id) result = await db.execute(query) diff --git a/app/curd/note.py b/app/curd/note.py index c751a61..67c1f5a 100644 --- a/app/curd/note.py +++ b/app/curd/note.py @@ -61,7 +61,7 @@ async def find_notes_in_db(note_find: NoteFind, db: AsyncSession, user_id: int): stmt = stmt.offset(offset).limit(note_find.page_size) result = await db.execute(stmt) - notes = [NoteResponse.model_validate(note) for note in result.scalars().all()] + notes = [{"id": note.id, "title": note.title, "content": note.content, "article_id": note.article_id, "is_group": True if note.group_id else False, "create_time": note.create_time, "update_time": note.update_time} for note in result.scalars().all()] return notes, total_count async def find_notes_title_in_db(note_find: NoteFind, db: AsyncSession):