rating routes added

This commit is contained in:
2023-08-06 23:59:33 +03:00
parent cc414e38bd
commit 5fcee1157e
10 changed files with 223 additions and 59 deletions

View File

@ -19,7 +19,7 @@ import shutil
import os
from .db import Base, engine, SessionLocal, database
from .service import add_poems_to_db, generate_poem
from .service import add_poems_to_db, generate_poem, check_obsolete
from . import schemas, models, utils
Base.metadata.create_all(bind=engine)
@ -36,32 +36,37 @@ app.mount("/uploads", StaticFiles(directory = "./uploads"))
# # Записываем стихи в базу данных, если их еще нет (запускать только если стихов в базе нет).
# add_poems_to_db(database)
@app.get("/api/announcements")#адрес объявлений
def annoncements_list(owner_id: int = None, metro: str = None, category: str = None, booked_by: int = 0):
@app.get("/api/announcements", response_model=List[schemas.Announcement]) #адрес объявлений
def annoncements_list(params_to_sort: schemas.SortAnnouncements):
# Считываем данные из Body и отображаем их на странице.
# В последствии будем вставлять данные в html-форму
a = database.query(models.Announcement)
b = database.query(models.Announcement)
c = database.query(models.Announcement)
d = database.query(models.Announcement)
e = database.query(models.Announcement)
# Фильтруем по сроку годности
not_expired = check_obsolete(current_date=datetime.date.today())
# Фильтруем по другим параметрам и делаем пересечение с not_expired
result = not_expired.intersect(get_query_results(params_to_sort))
if owner_id != None:
b = a.filter(models.Announcement.owner_id == owner_id)
if metro != None:
c = a.filter(models.Announcement.metro == metro)
# a = database.query(models.Announcement)
# b = database.query(models.Announcement)
# c = database.query(models.Announcement)
# d = database.query(models.Announcement)
# e = database.query(models.Announcement)
if category != None:
d = a.filter(models.Announcement.category == category)
# if owner_id != None:
# b = a.filter(models.Announcement.owner_id == owner_id)
if not any([category, owner_id, metro]) and booked_by == -1:
result = a.all()
# if metro != None:
# c = a.filter(models.Announcement.metro == metro)
# if category != None:
# d = a.filter(models.Announcement.category == category)
# if not any([category, owner_id, metro]) and booked_by == 0:
# result = a.all()
else:
result = b.intersect(c, d, e).all()
# else:
# result = b.intersect(c, d, e).all()
return {"Success" : True, "list_of_announcements": result, "poem": generate_poem(database)}
@ -179,6 +184,25 @@ async def read_own_items(
return [{"Current user name": current_user.name, "Current user surname": current_user.surname}]
# начисляем баллы пользователю
@app.post("/api/user/rating")
def add_points(data: schemas.AddPoints):
user = utils.get_user(data.user_id)
if not user:
raise HTTPException(status_code=404, detail="Item not found")
user.rating += data.rate
return {"Success": True}
# получаем данные о баллах пользователя
@app.get("/api/user/rating")
def add_points(user_id: int):
user = utils.get_user(user_id)
if not user:
raise HTTPException(status_code=404, detail="Item not found")
return {"rating": user.rating}
@app.get("/api/trashbox", response_model=List[schemas.TrashboxResponse])
def get_trashboxes(lat:float, lng:float):#крутая функция для работы с api
BASE_URL='https://geointelect2.gate.petersburg.ru'#адрес сайта и мой токин
@ -214,3 +238,8 @@ def get_trashboxes(lat:float, lng:float):#крутая функция для р
@app.get("/{rest_of_path:path}")
async def react_app(req: Request, rest_of_path: str):
return templates.TemplateResponse('index.html', { 'request': req })
@app.post("api/announcement/dispose")
def dispose(despose_data: schemas.DisposeData, current_user: Annotated[schemas.User, Depends(utils.get_current_user)]):
current_user.rating += 60