نسخه ۲ بکاند آرامش پلازا — بازنویسی کامل
- API عمومی محتوای سایت (پروژهها، مقالات، خدمات و...) - فرم تماس و خبرنامه با اعتبارسنجی سرور - پنل مدیریت با JWT و CRUD کامل + مدیریت پیامها و مشترکین - اسکریپت seed با دادههای واقعی سایت - تستشده: ۳۶/۳۶ انتهاپوینت
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
"""انتهای فرمها — ثبت پیام تماس و عضویت در خبرنامه."""
|
||||
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from ..database import get_db
|
||||
from .. import models
|
||||
from ..schemas import ContactIn, ContactMessageOut, NewsletterIn, SubscriberOut
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.post("/contact", response_model=ContactMessageOut, status_code=201)
|
||||
def submit_contact(payload: ContactIn, db: Session = Depends(get_db)):
|
||||
message = models.ContactMessage(
|
||||
name=payload.name.strip(),
|
||||
phone=payload.phone.strip(),
|
||||
note=payload.note.strip(),
|
||||
)
|
||||
db.add(message)
|
||||
db.commit()
|
||||
db.refresh(message)
|
||||
return message
|
||||
|
||||
|
||||
@router.post("/newsletter", response_model=SubscriberOut, status_code=201)
|
||||
def subscribe(payload: NewsletterIn, db: Session = Depends(get_db)):
|
||||
email = str(payload.email).lower()
|
||||
subscriber = db.query(models.Subscriber).filter(models.Subscriber.email == email).first()
|
||||
|
||||
if subscriber is not None:
|
||||
if not subscriber.is_active:
|
||||
subscriber.is_active = True
|
||||
db.commit()
|
||||
db.refresh(subscriber)
|
||||
return subscriber
|
||||
|
||||
subscriber = models.Subscriber(email=email)
|
||||
db.add(subscriber)
|
||||
db.commit()
|
||||
db.refresh(subscriber)
|
||||
return subscriber
|
||||
Reference in New Issue
Block a user