Удалено условие booked by в api/announcements

This commit is contained in:
DmitryGantimurov 2023-07-31 01:08:59 +03:00
parent aaf0d20c65
commit 29d46be492
5 changed files with 68 additions and 58 deletions

6
back/delete_all_poems.py Normal file
View File

@ -0,0 +1,6 @@
from .models import Poems
from .db import database
to_delete = database.query(Poems).filter(Poems.id > 102)
database.delete(to_delete)
database.commit()

View File

@ -20,7 +20,7 @@ import os
from .utils import * from .utils import *
from .db import Base, engine, SessionLocal, database from .db import Base, engine, SessionLocal, database
from .service import add_poems_to_db, generate_poem
from . import schemas, models from . import schemas, models
Base.metadata.create_all(bind=engine) Base.metadata.create_all(bind=engine)
@ -34,50 +34,11 @@ if not os.path.exists("./uploads"):
os.mkdir("./uploads") os.mkdir("./uploads")
app.mount("/uploads", StaticFiles(directory = "./uploads")) app.mount("/uploads", StaticFiles(directory = "./uploads"))
# # Загружаем стихи # # Записываем стихи в базу данных, если их еще нет (запускать только если стихов в базе нет).
# def add_poems_to_db(db: Session):
# f1 = open('text121.txt', encoding='utf-8', mode='r')#открыть фаил для чтения на русском
# for a in range(1, 102):
# f1.seek(0)#перейти к началу
# i=0
# str1=""
# stixi = ""
# while str1 != f"стих {a}\n":
# str1=f1.readline()
# name=f1.readline()
# # Цикл для склеивания стихотворения
# while str1 != f"стих {a+1}\n":
# str1=f1.readline()
# if(str1 != f"стих {a+1}\n"):
# stixi+=str1#удаление /n и заключение в список
# poem = Poems(poem_name=name, poem_text=stixi)
# # В конце каждой итерации добавляем в базу данных
# db.add(poem)
# db.commit()
# db.refresh(poem)
# # close the file
# f1.close()
## Записываем стихи в базу данных, если их еще нет (запускать только если ).
# add_poems_to_db(database) # add_poems_to_db(database)
# Функция, создающая сессию БД при каждом запросе к нашему API.
# Срабатывает до запуска остальных функций.
# Всегда закрывает сессию при окончании работы с ней
# @app.middleware("http")
# async def db_session_middleware(request: Request, call_next):
# response = Response("Internal server error", status_code=500)
# try:
# request.state.db = SessionLocal()
# response = await call_next(request)
# finally:
# request.state.db.close()
# return response
@app.get("/api/announcements")#адрес объявлений @app.get("/api/announcements")#адрес объявлений
def annoncements_list(user_id: int = None, metro: str = None, category: str = None, booked_by: int = 0): def annoncements_list(owner_id: int = None, metro: str = None, category: str = None, booked_by: int = 0):
# Считываем данные из Body и отображаем их на странице. # Считываем данные из Body и отображаем их на странице.
# В последствии будем вставлять данные в html-форму # В последствии будем вставлять данные в html-форму
@ -87,8 +48,8 @@ def annoncements_list(user_id: int = None, metro: str = None, category: str = No
d = database.query(models.Announcement) d = database.query(models.Announcement)
e = database.query(models.Announcement) e = database.query(models.Announcement)
if user_id != None: if owner_id != None:
b = a.filter(models.Announcement.user_id == user_id) b = a.filter(models.Announcement.owner_id == owner_id)
if metro != None: if metro != None:
c = a.filter(models.Announcement.metro == metro) c = a.filter(models.Announcement.metro == metro)
@ -96,19 +57,16 @@ def annoncements_list(user_id: int = None, metro: str = None, category: str = No
if category != None: if category != None:
d = a.filter(models.Announcement.category == category) d = a.filter(models.Announcement.category == category)
if booked_by != -1: if not any([category, owner_id, metro]) and booked_by == -1:
e = a.filter(models.Announcement.booked_by == booked_by)
if not any([category, user_id, metro]) and booked_by == -1:
result = a.all() result = a.all()
else: else:
result = b.intersect(c, d, e).all() result = b.intersect(c, d, e).all()
return {"Success" : True, "list_of_announcements": result} return {"Success" : True, "list_of_announcements": result, "poem": generate_poem(database)}
@app.get("/api/announcement")#адрес объявлений @app.get("/api/announcement")#адрес объявления
def single_annoncement(user_id:int): def single_annoncement(user_id:int):
# Считываем данные из Body и отображаем их на странице. # Считываем данные из Body и отображаем их на странице.
# В последствии будем вставлять данные в html-форму # В последствии будем вставлять данные в html-форму
@ -189,7 +147,7 @@ def create_user(data = Body()):
database.commit() database.commit()
database.refresh(new_user) # обновляем состояние объекта database.refresh(new_user) # обновляем состояние объекта
return {"Success": True} return {"Success": True}
return {"Success": False, "Message": "Пользователь с таким email уже зарегестрирован,"} return {"Success": False, "Message": "Пользователь с таким email уже зарегестрирован"}
@app.post("/api/token", response_model=schemas.Token) @app.post("/api/token", response_model=schemas.Token)
@ -210,11 +168,9 @@ async def login_for_access_token(
return {"access_token":access_token} return {"access_token":access_token}
# @app.get("/api/users/me/", response_model=schemas.User) @app.get("/api/users/me/", response_model=None) #
# async def read_users_me( #!!!!!!!!!!! async def read_users_me(current_user: Depends(get_current_active_user)): #Annotated[schemas.User, Depends(get_current_active_user)]):
# current_user: Annotated[schemas.User, Depends(get_current_active_user)] return current_user #schemas.User(id=current_user.id, email=current_user.email, name=current_user.name, surname=current_user.surname, disabled=current_user.disabled, items=current_user.items)
# ):
# return current_user
# @app.get("/api/users/me/items/") # @app.get("/api/users/me/items/")

View File

@ -40,7 +40,7 @@ class User(BaseModel):
email: str email: str
name: Union[str, None] = None name: Union[str, None] = None
surname: str surname: str
disabled: Union[bool, None] = None disabled: Union[bool, None] = False
items: list[Announcement] = [] items: list[Announcement] = []
class Config: class Config:

View File

@ -1,2 +1,50 @@
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from .models import Poems
import random
# Загружаем стихи
def add_poems_to_db(db: Session):
f1 = open('text121.txt', encoding='utf-8', mode='r')#открыть фаил для чтения на русском
for a in range(1, 102):
f1.seek(0)#перейти к началу
i=0
str1=""
stixi = ""
while str1 != f"стих {a}\n":
str1=f1.readline()
name=f1.readline()
# Цикл для склеивания стихотворения
while str1 != f"стих {a+1}\n":
str1=f1.readline()
if(str1 != f"стих {a+1}\n"):
stixi+=str1#удаление /n и заключение в список
poem = Poems(poem_name=name, poem_text=stixi)
# В конце каждой итерации добавляем в базу данных
db.add(poem)
db.commit()
db.refresh(poem)
# close the file
f1.close()
def generate_poem(db: Session):
# генерируем 1 случайное id и выбираем объект бд с этим id
rand_id = random.randint(1, 102)
poem = db.query(Poems).filter(Poems.id == rand_id).first()
# возвращаем название и текст стихотворения
return {"poem_name": poem.poem_name, "poem_text": poem.poem_text}
# Функция, создающая сессию БД при каждом запросе к нашему API.
# Срабатывает до запуска остальных функций.
# Всегда закрывает сессию при окончании работы с ней
# @app.middleware("http")
# async def db_session_middleware(request: Request, call_next):
# response = Response("Internal server error", status_code=500)
# try:
# request.state.db = SessionLocal()
# response = await call_next(request)
# finally:
# request.state.db.close()
# return response

View File

@ -75,7 +75,7 @@ async def get_current_user(db: Session, token: Annotated[str, Depends(oauth2_sch
user = get_user(db, email=token_data.email) user = get_user(db, email=token_data.email)
if user is None: if user is None:
raise credentials_exception raise credentials_exception
return schemas.User.from_orm(user) return user
async def get_current_active_user( async def get_current_active_user(