Удалено условие booked by в api/announcements
This commit is contained in:
parent
aaf0d20c65
commit
29d46be492
6
back/delete_all_poems.py
Normal file
6
back/delete_all_poems.py
Normal 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()
|
68
back/main.py
68
back/main.py
@ -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/")
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
@ -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(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user