wanlanda_website/main.py
Zikil e0d8993aa9
All checks were successful
Deploy FastAPI Application / deploy (push) Successful in 12s
fix deploy
2024-12-15 01:43:03 +07:00

109 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from fastapi import FastAPI, Request, HTTPException
from fastapi.responses import HTMLResponse, FileResponse, JSONResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from pydantic import BaseModel, EmailStr
from aiogram import Bot, Dispatcher
from fastapi.middleware.wsgi import WSGIMiddleware
BOT_TOKEN = '7102060229:AAE4SWmgKXkCBC482l8Ble5lKzlCV2YIWnM'
ID = '340394898'
bot = Bot( # Образ Бота
token=BOT_TOKEN,
)
app = FastAPI()
# # Для совместимости с WSGI
# application = WSGIMiddleware(app)
# Монтирование статических файлов
app.mount("/static", StaticFiles(directory="static"), name="static")
# Инициализация шаблонов
templates = Jinja2Templates(directory="templates")
@app.get("/", response_class=HTMLResponse)
async def read_index(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
@app.get("/catalog", response_class=HTMLResponse)
async def read_catalog(request: Request):
return templates.TemplateResponse("catalog.html", {"request": request})
@app.get("/about", response_class=HTMLResponse)
async def read_about(request: Request):
return templates.TemplateResponse("about.html", {"request": request})
@app.get("/contacts", response_class=HTMLResponse)
async def read_contacts(request: Request):
return templates.TemplateResponse("contacts.html", {"request": request})
# Дополнительные маршруты для подразделов каталога
@app.get("/catalog/{filter_type}", response_class=HTMLResponse)
async def read_filter_type(request: Request, filter_type: str):
# Здесь вы можете добавить логику для загрузки конкретных данных о типе фильтра
return templates.TemplateResponse(f"catalog_{filter_type}.html", {"request": request, "filter_type": filter_type})
@app.get("/certificates", response_class=HTMLResponse)
async def read_certificates(request: Request):
certificates = [
{
"title": "Сертификат соответствия",
"description": "Сертификат соответствия",
"image": "/static/img/certificates/сертификат1.png"
},
{
"title": "Приложение",
"description": "Приложение сертификата соответствия",
"image": "/static/img/certificates/сертификат2.png"
},
{
"title": "Приложение",
"description": "Приложение сертификата соответствия",
"image": "/static/img/certificates/сертификат3.png"
},
{
"title": "Приложение",
"description": "Приложение сертификата соответствия",
"image": "/static/img/certificates/сертификат4.png"
},
# Add more certificates as needed
]
return templates.TemplateResponse("certificates.html", {"request": request, "certificates": certificates})
class ContactForm(BaseModel):
name: str
email: EmailStr
message: str
@app.post("/submit-form")
async def submit_form(form_data: ContactForm):
try:
# Здесь вы можете добавить логику для сохранения данных в базу данных
# или отправки электронного письма
await send_email(form_data)
return JSONResponse(content={"message": "Form submitted successfully"}, status_code=200)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
async def send_email(form_data: ContactForm):
body = f"""
Сообщение от wanlanda
Имя: {form_data.name}
Email: {form_data.email}
Сообщение:
{form_data.message}
"""
print(body)
se = await bot.send_message(
ID,
body,
)
print(se)
# if __name__ == "__main__":
# import uvicorn
# uvicorn.run(app, host="0.0.0.0", port=20001)