forked from polka_billy/porridger
get_query_results works correctly. relationships between models changed
This commit is contained in:
40
back/main.py
40
back/main.py
@ -7,12 +7,13 @@ from fastapi.templating import Jinja2Templates
|
||||
from fastapi.requests import Request
|
||||
|
||||
from pydantic import json
|
||||
from typing import Any, Annotated, List
|
||||
from typing import Any, Annotated, List, Union
|
||||
from starlette.staticfiles import StaticFiles
|
||||
|
||||
import requests
|
||||
from uuid import uuid4
|
||||
import random
|
||||
import datetime
|
||||
|
||||
import ast
|
||||
import pathlib
|
||||
@ -20,7 +21,8 @@ import shutil
|
||||
import os
|
||||
|
||||
from .db import Base, engine, SessionLocal, database
|
||||
from .service import add_poems_to_db, generate_poem, check_obsolete
|
||||
from .service import add_poems_to_db, generate_poem, check_obsolete, get_query_results
|
||||
from .scheduler import app as app_rocketry
|
||||
from . import schemas, models, utils
|
||||
|
||||
Base.metadata.create_all(bind=engine)
|
||||
@ -38,17 +40,23 @@ 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):
|
||||
# Каждый день в 00.00 проверяем все объявления (сравниваем текущую дату и срок годности)
|
||||
# session_rocketry = app_rocketry.session
|
||||
|
||||
|
||||
@app.get("/api/announcements", response_model=List[schemas.Announcement])#адрес объявлений
|
||||
def annoncements_list(obsolete: Union[bool, None] = False, user_id: Union[int, None] = None, metro: Union[str, None] = None,
|
||||
category: Union[str, None] = None):
|
||||
# Считываем данные из Body и отображаем их на странице.
|
||||
# В последствии будем вставлять данные в html-форму
|
||||
|
||||
params_to_sort = schemas.SortAnnouncements(obsolete=obsolete, user_id=user_id, metro=metro, category=category)
|
||||
# Фильтруем по сроку годности
|
||||
not_expired = check_obsolete(current_date=datetime.date.today())
|
||||
# not_expired = check_obsolete(current_date=datetime.date.today())
|
||||
# Фильтруем по другим параметрам и делаем пересечение с not_expired
|
||||
result = not_expired.intersect(get_query_results(params_to_sort))
|
||||
# result = not_expired.intersect(get_query_results(params_to_sort))
|
||||
result = get_query_results(db=database, schema=params_to_sort)
|
||||
|
||||
return {"Success" : True, "list_of_announcements": result}
|
||||
return result
|
||||
|
||||
|
||||
@app.get("/api/announcement")#адрес объявления
|
||||
@ -68,7 +76,7 @@ def single_annoncement(user_id:int):
|
||||
|
||||
# Занести объявление в базу данных
|
||||
@app.put("/api/announcement")#адрес объявлений
|
||||
def put_in_db(name: Annotated[str, Form()], category: Annotated[str, Form()], bestBy: Annotated[int, Form()],
|
||||
def put_in_db(name: Annotated[str, Form()], category: Annotated[str, Form()], bestBy: Annotated[datetime.date, Form()],
|
||||
address: Annotated[str, Form()], longtitude: Annotated[float, Form()], latitude: Annotated[float, Form()],
|
||||
description: Annotated[str, Form()], src: UploadFile, metro: Annotated[str, Form()],
|
||||
trashId: Annotated[int, Form()] = None):
|
||||
@ -167,12 +175,14 @@ async def read_own_items(
|
||||
|
||||
# начисляем баллы пользователю
|
||||
@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}
|
||||
def add_points(data: schemas.AddPoints, current_user: Annotated[schemas.User, Depends(utils.get_current_user)]):
|
||||
if current_user.id != data.user_id:
|
||||
user = utils.get_user(data.user_id)
|
||||
if not user:
|
||||
raise HTTPException(status_code=404, detail="Item not found")
|
||||
user.num_of_ratings += 1
|
||||
user.rating = (user.rating + data.rate)/user.num_of_ratings
|
||||
return {"Success": True}
|
||||
|
||||
|
||||
# получаем данные о баллах пользователя
|
||||
|
Reference in New Issue
Block a user