🔄 refactor: Enhance endpoints/email.post.py endpoint functionality
This commit is contained in:
parent
2608d9d0fa
commit
8f0883cc53
@ -1,36 +1,39 @@
|
|||||||
from fastapi import APIRouter, Depends, HTTPException, status
|
from fastapi import APIRouter, Depends, HTTPException, status
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from core.database import get_db
|
from core.database import get_db
|
||||||
from schemas.contact_form import ContactFormCreate, ContactFormSchema
|
from schemas.contact_form import ContactFormCreate
|
||||||
from helpers.contact_form_helpers import create_contact_form, validate_contact_form_data
|
from helpers.contact_form import create_contact_form, validate_contact_form_data
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
|
|
||||||
@router.post("/email", status_code=status.HTTP_201_CREATED, response_model=ContactFormSchema)
|
@router.post("/email", status_code=status.HTTP_201_CREATED)
|
||||||
async def submit_contact_form(
|
async def submit_contact_form(
|
||||||
contact_form: ContactFormCreate,
|
contact_form: ContactFormCreate,
|
||||||
db: Session = Depends(get_db)
|
db: Session = Depends(get_db)
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Submit a contact form with name, email, and message.
|
Submit a contact form with name, email, and message fields.
|
||||||
|
|
||||||
All fields are required and email must be in valid format.
|
All fields are required and email must be in valid format.
|
||||||
"""
|
"""
|
||||||
# Validate the contact form data
|
# Validate the contact form data
|
||||||
errors = validate_contact_form_data({
|
validation_errors = validate_contact_form_data({
|
||||||
"name": contact_form.name,
|
"name": contact_form.name,
|
||||||
"email": contact_form.email,
|
"email": contact_form.email,
|
||||||
"message": contact_form.message
|
"message": contact_form.message
|
||||||
})
|
})
|
||||||
|
|
||||||
# If there are validation errors, return a 400 response with the error details
|
# If there are validation errors, return 400 with error details
|
||||||
if errors:
|
if validation_errors:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=status.HTTP_400_BAD_REQUEST,
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
detail=errors
|
detail=validation_errors
|
||||||
)
|
)
|
||||||
|
|
||||||
# Create the contact form in the database
|
# Create the contact form in the database
|
||||||
new_contact_form = create_contact_form(db=db, contact_form_data=contact_form)
|
created_form = create_contact_form(db=db, contact_form_data=contact_form)
|
||||||
|
|
||||||
return new_contact_form
|
return {
|
||||||
|
"status": "success",
|
||||||
|
"message": "Contact form submitted successfully",
|
||||||
|
"id": created_form.id
|
||||||
|
}
|
@ -35,6 +35,7 @@ def create_contact_form(db: Session, contact_form_data: ContactFormCreate) -> Co
|
|||||||
def validate_contact_form_data(data: Dict[str, Any]) -> Dict[str, str]:
|
def validate_contact_form_data(data: Dict[str, Any]) -> Dict[str, str]:
|
||||||
"""
|
"""
|
||||||
Validates contact form data manually, checking for required fields and valid email format.
|
Validates contact form data manually, checking for required fields and valid email format.
|
||||||
|
Uses email_validator package for email validation.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
data (Dict[str, Any]): The contact form data to validate.
|
data (Dict[str, Any]): The contact form data to validate.
|
||||||
@ -54,8 +55,8 @@ def validate_contact_form_data(data: Dict[str, Any]) -> Dict[str, str]:
|
|||||||
try:
|
try:
|
||||||
# Validate email format using email_validator package
|
# Validate email format using email_validator package
|
||||||
validate_email(data["email"])
|
validate_email(data["email"])
|
||||||
except EmailNotValidError:
|
except EmailNotValidError as e:
|
||||||
errors["email"] = "Email format is invalid"
|
errors["email"] = f"Email validation failed: {str(e)}"
|
||||||
|
|
||||||
if not data.get("message"):
|
if not data.get("message"):
|
||||||
errors["message"] = "Message is required"
|
errors["message"] = "Message is required"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user