forked from polka_billy/porridger
rating routes added
This commit is contained in:
67
back/main.py
67
back/main.py
@ -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
|
Reference in New Issue
Block a user