From 1ae5871538d0860cf64abf36432610a38a691b1f Mon Sep 17 00:00:00 2001 From: urec56 Date: Tue, 20 Feb 2024 20:18:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=81=D0=BC=D0=B5=D0=BD=D1=83=20=D0=B0=D0=B2=D0=B0=D1=82=D0=B0?= =?UTF-8?q?=D1=80=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/images/router.py | 16 +++++++++------- app/users/router.py | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/app/images/router.py b/app/images/router.py index c287418..8250be4 100644 --- a/app/images/router.py +++ b/app/images/router.py @@ -22,21 +22,23 @@ async def upload_file(file: UploadFile, remote_server_url: str) -> httpx.Respons return response -@router.post('/upload_avatar', response_model=str) -async def upload_avatar(file: UploadFile): - remote_server_url = settings.IMAGE_UPLOAD_SERVER + "upload_avatar" +async def upload_file_returning_str(file: UploadFile, sub_str: str) -> str: + remote_server_url = settings.IMAGE_UPLOAD_SERVER + sub_str response = await upload_file(file, remote_server_url) image_url = response.json()['image_url'] image_url = settings.IMAGE_UPLOAD_SERVER + image_url return image_url +@router.post('/upload_avatar', response_model=str) +async def upload_avatar(file: UploadFile): + image_url = await upload_file_returning_str(file, "upload_avatar") + return image_url + + @router.post('/upload_image', response_model=str) async def upload_avatar(file: UploadFile): - remote_server_url = settings.IMAGE_UPLOAD_SERVER + "upload_image" - response = await upload_file(file, remote_server_url) - image_url = response.json()['image_url'] - image_url = settings.IMAGE_UPLOAD_SERVER + image_url + image_url = await upload_file_returning_str(file, "upload_image") return image_url diff --git a/app/users/router.py b/app/users/router.py index e40de46..5928f8c 100644 --- a/app/users/router.py +++ b/app/users/router.py @@ -1,9 +1,11 @@ -from fastapi import APIRouter, Response, Depends +from fastapi import APIRouter, Response, Depends, UploadFile from fastapi.responses import RedirectResponse from starlette import status +from app.config import settings from app.exceptions import UserAlreadyExistsException, UsernameAlreadyInUseException, \ - IncorrectPasswordException, PasswordsМismatchException, WrongCodeException + IncorrectPasswordException, PasswordsМismatchException, WrongCodeException, UserNotFoundException +from app.images.router import upload_file, upload_file_returning_str from app.users.auth import get_password_hash, authenticate_user_by_email, authenticate_user_by_username, \ create_access_token, verify_password, REGISTRATED_USER, get_user_codes_list, VERIFICATED_USER, authenticate_user, \ check_existing_user @@ -88,6 +90,14 @@ async def rename_user(new_username: SUserName, current_user: Users = Depends(get return new_username +@router.patch("/change_avatar", response_model=str) +async def change_avatar(new_avatar: UploadFile, current_user: Users = Depends(get_current_user)): + new_avatar_url = await upload_file_returning_str(new_avatar, "upload_avatar") + if await UserDAO.change_data(current_user.id, avatar_image=new_avatar_url): + return new_avatar_url + raise UserNotFoundException # Надо подумать + + @router.patch("/change_password", status_code=status.HTTP_200_OK) async def change_password(new_password: SUserPassword, current_user: Users = Depends(get_current_user)): existing_user = await UserDAO.find_one_or_none(id=current_user.id)