adding details

This commit is contained in:
abhishekpythons
2026-05-19 04:38:02 +05:30
parent 246b5381ce
commit a16520420d
63 changed files with 6123 additions and 1 deletions

125
backend/api/serializers.py Normal file
View File

@@ -0,0 +1,125 @@
from __future__ import annotations
from rest_framework import serializers
from .models import (
BlogPost,
ContactSubmission,
Founder,
JobApplication,
JobOpening,
NewsletterSignup,
Product,
)
class ProductSerializer(serializers.ModelSerializer):
category_label = serializers.CharField(source="get_category_display", read_only=True)
class Meta:
model = Product
fields = [
"slug",
"name",
"category",
"category_label",
"tagline",
"summary",
"description",
"benefits",
"features",
"spec_table",
"primary_cta_label",
]
class FounderSerializer(serializers.ModelSerializer):
class Meta:
model = Founder
fields = ["name", "role", "domain", "bio", "photo_url", "linkedin_url"]
class BlogPostListSerializer(serializers.ModelSerializer):
category_label = serializers.CharField(source="get_category_display", read_only=True)
class Meta:
model = BlogPost
fields = [
"slug",
"title",
"excerpt",
"category",
"category_label",
"author_name",
"read_time_minutes",
"cover_image_url",
"published_at",
]
class BlogPostDetailSerializer(BlogPostListSerializer):
class Meta(BlogPostListSerializer.Meta):
fields = BlogPostListSerializer.Meta.fields + ["body"]
class JobOpeningSerializer(serializers.ModelSerializer):
location_label = serializers.CharField(source="get_location_display", read_only=True)
class Meta:
model = JobOpening
fields = [
"slug",
"title",
"location",
"location_label",
"employment_type",
"description",
"posted_at",
]
class ContactSubmissionSerializer(serializers.ModelSerializer):
class Meta:
model = ContactSubmission
fields = [
"name",
"email",
"company",
"role",
"country",
"interest",
"message",
"referrer",
]
extra_kwargs = {
"name": {"required": True, "allow_blank": False},
"email": {"required": True},
"message": {"required": True, "allow_blank": False},
}
def validate_message(self, value: str) -> str:
if len(value.strip()) < 10:
raise serializers.ValidationError(
"Please write a few words about what you're looking for."
)
return value.strip()
class NewsletterSignupSerializer(serializers.ModelSerializer):
class Meta:
model = NewsletterSignup
fields = ["email", "source"]
def create(self, validated_data):
email = validated_data["email"].lower().strip()
obj, _ = NewsletterSignup.objects.get_or_create(
email=email,
defaults={"source": validated_data.get("source", "")},
)
return obj
class JobApplicationSerializer(serializers.ModelSerializer):
class Meta:
model = JobApplication
fields = ["name", "email", "role_applied_for", "portfolio_url", "message", "cv"]