HTTP exceptions added (intead of just True or False answers)

This commit is contained in:
DmitryGantimurov 2023-09-12 00:19:52 +03:00
parent 7453a60eee
commit 60e5463028

View File

@ -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:
raise HTTPException(status_code=404, detail="Item not found")
return announcement return announcement
except:
return {"Answer" : False} #если неуданый доступ, то сообщаем об этом
# Занести объявление в базу данных # Занести объявление в базу данных
@ -82,7 +81,7 @@ 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):
try:
# имя загруженного файла по умолчанию - пустая строка # имя загруженного файла по умолчанию - пустая строка
uploaded_name = "" uploaded_name = ""
# если пользователь загрузил картинку # если пользователь загрузил картинку
@ -103,27 +102,28 @@ async def put_in_db(name: Annotated[str, Form()], category: Annotated[str, Form(
temp_ancmt = orm_models.Announcement(user_id=current_user.id, name=name, category=category, best_by=bestBy, 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, address=address, longtitude=longtitude, latitude=latitude, description=description, metro=metro,
trashId=trashId, src=uploaded_name, booked_by=0) trashId=trashId, src=uploaded_name, booked_by=0)
try:
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)]): # функция удаления объекта из БД
try:
# находим объект с заданным id в бд # находим объект с заданным id в бд
#to_delete = db.query(orm_models.Announcement).filter(orm_models.Announcement.id==announcement.id).first() #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)) query = await db.execute(select(orm_models.Announcement).where(orm_models.Announcement.id==announcement.id))
to_delete = query.scalars().first() to_delete = query.scalars().first()
if not to_delete:
raise HTTPException(status_code=404, detail="Item not found. Can't delete")
try:
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")
# Забронировать объявление # Забронировать объявление