HTTP exceptions added (intead of just True or False answers)
This commit is contained in:
parent
7453a60eee
commit
60e5463028
68
back/api.py
68
back/api.py
@ -68,12 +68,11 @@ async def announcements_list(db: Annotated[Session, Depends(auth_utils.get_sessi
|
|||||||
async def single_announcement(ann_id:int, db: Annotated[Session, Depends(auth_utils.get_session)]): # передаем индекс обявления
|
async def single_announcement(ann_id:int, db: Annotated[Session, Depends(auth_utils.get_session)]): # передаем индекс обявления
|
||||||
# Считываем данные из Body и отображаем их на странице.
|
# Считываем данные из Body и отображаем их на странице.
|
||||||
# В последствии будем вставлять данные в html-форму
|
# В последствии будем вставлять данные в html-форму
|
||||||
try:
|
announcement = await db.get(orm_models.Announcement, ann_id)
|
||||||
announcement = await db.get(orm_models.Announcement, ann_id)
|
#announcement = await db.execute(select(orm_models.Announcement)).scalars().all()
|
||||||
#announcement = await db.execute(select(orm_models.Announcement)).scalars().all()
|
if not announcement:
|
||||||
return announcement
|
raise HTTPException(status_code=404, detail="Item not found")
|
||||||
except:
|
return announcement
|
||||||
return {"Answer" : False} #если неуданый доступ, то сообщаем об этом
|
|
||||||
|
|
||||||
|
|
||||||
# Занести объявление в базу данных
|
# Занести объявление в базу данных
|
||||||
@ -82,48 +81,49 @@ async def put_in_db(name: Annotated[str, Form()], category: Annotated[str, Form(
|
|||||||
address: Annotated[str, Form()], longtitude: Annotated[float, Form()], latitude: Annotated[float, Form()],
|
address: Annotated[str, Form()], longtitude: Annotated[float, Form()], latitude: Annotated[float, Form()],
|
||||||
description: Annotated[str, Form()], metro: Annotated[str, Form()], current_user: Annotated[pydantic_schemas.User, Depends(auth_utils.get_current_active_user)],
|
description: Annotated[str, Form()], metro: Annotated[str, Form()], current_user: Annotated[pydantic_schemas.User, Depends(auth_utils.get_current_active_user)],
|
||||||
db: Annotated[Session, Depends(auth_utils.get_session)], src: Union[UploadFile, None] = None, trashId: Annotated[int, Form()] = None):
|
db: Annotated[Session, Depends(auth_utils.get_session)], src: Union[UploadFile, None] = None, trashId: Annotated[int, Form()] = None):
|
||||||
|
|
||||||
|
# имя загруженного файла по умолчанию - пустая строка
|
||||||
|
uploaded_name = ""
|
||||||
|
# если пользователь загрузил картинку
|
||||||
|
if src:
|
||||||
|
# процесс сохранения картинки
|
||||||
|
f = src.file
|
||||||
|
f.seek(0, os.SEEK_END)
|
||||||
|
if f.tell() > 0:
|
||||||
|
f.seek(0)
|
||||||
|
destination = pathlib.Path("./uploads/" + str(hash(f)) + pathlib.Path(src.filename).suffix.lower())
|
||||||
|
async with destination.open('wb') as buffer:
|
||||||
|
shutil.copyfileobj(f, buffer)
|
||||||
|
|
||||||
|
# изменяем название директории загруженного файла
|
||||||
|
uploaded_name = "/uploads/" + destination.name
|
||||||
|
|
||||||
|
# создаем объект Announcement
|
||||||
|
temp_ancmt = orm_models.Announcement(user_id=current_user.id, name=name, category=category, best_by=bestBy,
|
||||||
|
address=address, longtitude=longtitude, latitude=latitude, description=description, metro=metro,
|
||||||
|
trashId=trashId, src=uploaded_name, booked_by=0)
|
||||||
try:
|
try:
|
||||||
# имя загруженного файла по умолчанию - пустая строка
|
|
||||||
uploaded_name = ""
|
|
||||||
# если пользователь загрузил картинку
|
|
||||||
if src:
|
|
||||||
# процесс сохранения картинки
|
|
||||||
f = src.file
|
|
||||||
f.seek(0, os.SEEK_END)
|
|
||||||
if f.tell() > 0:
|
|
||||||
f.seek(0)
|
|
||||||
destination = pathlib.Path("./uploads/" + str(hash(f)) + pathlib.Path(src.filename).suffix.lower())
|
|
||||||
async with destination.open('wb') as buffer:
|
|
||||||
shutil.copyfileobj(f, buffer)
|
|
||||||
|
|
||||||
# изменяем название директории загруженного файла
|
|
||||||
uploaded_name = "/uploads/" + destination.name
|
|
||||||
|
|
||||||
# создаем объект Announcement
|
|
||||||
temp_ancmt = orm_models.Announcement(user_id=current_user.id, name=name, category=category, best_by=bestBy,
|
|
||||||
address=address, longtitude=longtitude, latitude=latitude, description=description, metro=metro,
|
|
||||||
trashId=trashId, src=uploaded_name, booked_by=0)
|
|
||||||
db.add(temp_ancmt) # добавляем в бд
|
db.add(temp_ancmt) # добавляем в бд
|
||||||
await db.commit() # сохраняем изменения
|
await db.commit() # сохраняем изменения
|
||||||
await db.refresh(temp_ancmt) # обновляем состояние объекта
|
await db.refresh(temp_ancmt) # обновляем состояние объекта
|
||||||
return {"Answer" : True}
|
|
||||||
except:
|
except:
|
||||||
return {"Answer" : False}
|
raise HTTPException(status_code=500, detail="problem with adding object to db")
|
||||||
|
|
||||||
|
|
||||||
# Удалить объявления из базы
|
# Удалить объявления из базы
|
||||||
@app.delete("/api/announcement") #адрес объявления
|
@app.delete("/api/announcement") #адрес объявления
|
||||||
async def delete_from_db(announcement: pydantic_schemas.DelAnnouncement, db: Annotated[Session, Depends(auth_utils.get_session)]): # функция удаления объекта из БД
|
async def delete_from_db(announcement: pydantic_schemas.DelAnnouncement, db: Annotated[Session, Depends(auth_utils.get_session)]): # функция удаления объекта из БД
|
||||||
|
# находим объект с заданным id в бд
|
||||||
|
#to_delete = db.query(orm_models.Announcement).filter(orm_models.Announcement.id==announcement.id).first()
|
||||||
|
query = await db.execute(select(orm_models.Announcement).where(orm_models.Announcement.id==announcement.id))
|
||||||
|
to_delete = query.scalars().first()
|
||||||
|
if not to_delete:
|
||||||
|
raise HTTPException(status_code=404, detail="Item not found. Can't delete")
|
||||||
try:
|
try:
|
||||||
# находим объект с заданным id в бд
|
|
||||||
#to_delete = db.query(orm_models.Announcement).filter(orm_models.Announcement.id==announcement.id).first()
|
|
||||||
query = await db.execute(select(orm_models.Announcement).where(orm_models.Announcement.id==announcement.id))
|
|
||||||
to_delete = query.scalars().first()
|
|
||||||
await db.delete(to_delete) # удаление из БД
|
await db.delete(to_delete) # удаление из БД
|
||||||
await db.commit() # сохраняем изменения
|
await db.commit() # сохраняем изменения
|
||||||
return {"Answer" : True}
|
|
||||||
except:
|
except:
|
||||||
return {"Answer" : False}
|
raise HTTPException(status_code=500, detail="Problem with adding to database")
|
||||||
|
|
||||||
|
|
||||||
# Забронировать объявление
|
# Забронировать объявление
|
||||||
|
Loading…
x
Reference in New Issue
Block a user