🔄 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 sqlalchemy.orm import Session
|
||||
from core.database import get_db
|
||||
from schemas.contact_form import ContactFormCreate, ContactFormSchema
|
||||
from helpers.contact_form_helpers import create_contact_form, validate_contact_form_data
|
||||
from schemas.contact_form import ContactFormCreate
|
||||
from helpers.contact_form import create_contact_form, validate_contact_form_data
|
||||
|
||||
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(
|
||||
contact_form: ContactFormCreate,
|
||||
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.
|
||||
"""
|
||||
# Validate the contact form data
|
||||
errors = validate_contact_form_data({
|
||||
validation_errors = validate_contact_form_data({
|
||||
"name": contact_form.name,
|
||||
"email": contact_form.email,
|
||||
"message": contact_form.message
|
||||
})
|
||||
|
||||
# If there are validation errors, return a 400 response with the error details
|
||||
if errors:
|
||||
# If there are validation errors, return 400 with error details
|
||||
if validation_errors:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail=errors
|
||||
detail=validation_errors
|
||||
)
|
||||
|
||||
# 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]:
|
||||
"""
|
||||
Validates contact form data manually, checking for required fields and valid email format.
|
||||
Uses email_validator package for email validation.
|
||||
|
||||
Args:
|
||||
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:
|
||||
# Validate email format using email_validator package
|
||||
validate_email(data["email"])
|
||||
except EmailNotValidError:
|
||||
errors["email"] = "Email format is invalid"
|
||||
except EmailNotValidError as e:
|
||||
errors["email"] = f"Email validation failed: {str(e)}"
|
||||
|
||||
if not data.get("message"):
|
||||
errors["message"] = "Message is required"
|
||||
|
Loading…
x
Reference in New Issue
Block a user