delete and poem endpoints fixed

This commit is contained in:
2023-08-12 01:52:47 +03:00
parent 8fb75f8329
commit 2cfe8512f4
5 changed files with 34 additions and 42 deletions

View File

@ -36,8 +36,8 @@ if not os.path.exists("./uploads"):
os.mkdir("./uploads")
app.mount("/uploads", StaticFiles(directory = "./uploads"))
# Записываем стихи в базу данных, если их еще нет (запускать только если стихов в базе нет).
# add_poems_to_db(database)
## Записываем стихи в базу данных, если их еще нет (запускать только если стихов в базе нет).
# service.add_poems_to_db(database)
@app.get("/api/announcements", response_model=List[schemas.Announcement])#адрес объявлений
@ -46,7 +46,7 @@ def announcements_list(db: Annotated[Session, Depends(utils.get_db)], obsolete:
# параметры для сортировки (схема pydantic schemas.SortAnnouncements)
params_to_sort = schemas.SortAnnouncements(obsolete=obsolete, user_id=user_id, metro=metro, category=category)
# получаем результат
result = get_query_results(db=db, schema=params_to_sort)
result = service.filter_ann(db=db, schema=params_to_sort)
return result
@ -98,14 +98,20 @@ def put_in_db(name: Annotated[str, Form()], category: Annotated[str, Form()], be
# Удалить объявления из базы
@app.delete("/api/announcement") #адрес объявления
def delete_from_db(announcement: schemas.DelAnnouncement, db: Annotated[Session, Depends(utils.get_db)]): # функция удаления объекта из БД
try:
to_delete = db.query(models.Announcement).filter(models.Announcement.id==announcement.id).first()
def delete_from_db(announcement: schemas.DelAnnouncement, db: Annotated[Session, Depends(utils.get_db)],
current_user: Annotated[schemas.User, Depends(utils.get_current_active_user)]): # функция удаления объекта из БД
# находим объявление в бд по id
to_delete = db.query(models.Announcement).filter(models.Announcement.id==announcement.id).first()
# Проверяем, что объявление с данным id существует
if not to_delete:
raise HTTPException(status_code=404, detail="Item not found")
# Проверяем, что объявление удаляет владелец
if current_user.id == to_delete.user_id:
db.delete(to_delete) # удаление из БД
db.commit() # сохраняем изменения
return {"Answer" : True}
except:
return {"Answer" : False}
else:
raise HTTPException(status_code=403, detail="Can't delete other user's announcements")
# Забронировать объявление
@ -191,33 +197,31 @@ def add_points(user_id: int, db: Annotated[Session, Depends(utils.get_db)]):
# Отправляем стихи
@app.get("/api/user/poem") # пока не работает
@app.get("/api/user/poem", response_model=schemas.Poem) # пока не работает
def poems_to_front(db: Annotated[Session, Depends(utils.get_db)]): # db: Annotated[Session, Depends(utils.get_db)]
kolvo_stixov = db.query(models.Poems).count() # пока количество стихотворений = 101
if kolvo_stixov > 1:
rand_id = random.randint(1, kolvo_stixov) # номер стихотворения
poem_json = dict()
poem = db.query(models.Poems).filter(models.Poems.id == rand_id).first()
poem_json = {"id": rand_id, "title": poem.title, "text": poem.text, "author": poem.author}
return poem_json
else:
raise HTTPException(status_code=404, detail="Poems not found")
num_of_poems = db.query(models.Poems).count() # определяем кол-во стихов в бд
rand_id = random.randint(1, num_of_poems) # генерируем номер стихотворения
poem = db.query(models.Poems).filter(models.Poems.id == rand_id).first() # находим стих в бд
if not poem:
raise HTTPException(status_code=404, detail="Poem not found")
return poem
@app.get("/api/trashbox", response_model=List[schemas.TrashboxResponse])
def get_trashboxes(Lat:float, Lng:float, Category:str):#крутая функция для работы с api
def get_trashboxes(data: schemas.TrashboxRequest = Depends()):#крутая функция для работы с api
# json, передаваемый стороннему API
head = {'Authorization': 'Bearer {}'.format(service.my_token)}
# Данные пользователя (местоположение, количество мусорок, которое пользователь хочет видеть)
my_data={
'x' : f"{Lng}",
'y' : f"{Lat}",
'x' : f"{data.Lng}",
'y' : f"{data.Lat}",
'limit' : '1'
}
list_of_category = [] # лист по которому будет отбираться uniq_trashboxes
match Category:
match data.Category:
case "PORRIDGE":
list_of_category=["Опасные отходы", "Иное"]
case "Конспекты":