inital commit

This commit is contained in:
2026-04-10 20:51:43 -05:00
parent cd1f2eae29
commit 562a8525d0
85 changed files with 4820 additions and 2 deletions

55
marketing/serializers.py Normal file
View File

@@ -0,0 +1,55 @@
from rest_framework import serializers
from adventrues.models import AdventureOffering
from equipment.models import EquipmentItem
from .models import ListingClick
class ListingClickSerializer(serializers.ModelSerializer):
class Meta:
model = ListingClick
fields = (
"id",
"listing_type",
"traffic_type",
"utm_source",
"utm_medium",
"utm_campaign",
"utm_term",
"utm_content",
"gclid",
"fbclid",
"equipment_item",
"adventure_offering",
"created_at",
)
read_only_fields = fields
class TrackListingClickSerializer(serializers.Serializer):
listing_type = serializers.ChoiceField(choices=ListingClick.ListingType.choices)
public_id = serializers.CharField(max_length=64)
utm_source = serializers.CharField(required=False, allow_blank=True, default="", max_length=255)
utm_medium = serializers.CharField(required=False, allow_blank=True, default="", max_length=255)
utm_campaign = serializers.CharField(required=False, allow_blank=True, default="", max_length=255)
utm_term = serializers.CharField(required=False, allow_blank=True, default="", max_length=255)
utm_content = serializers.CharField(required=False, allow_blank=True, default="", max_length=255)
gclid = serializers.CharField(required=False, allow_blank=True, default="", max_length=255)
fbclid = serializers.CharField(required=False, allow_blank=True, default="", max_length=255)
referrer = serializers.CharField(required=False, allow_blank=True, default="", max_length=2048)
def validate(self, attrs):
listing_type = attrs["listing_type"]
public_id = attrs["public_id"]
if listing_type == ListingClick.ListingType.EQUIPMENT:
item = EquipmentItem.objects.filter(public_id=public_id, is_active=True).select_related("vendor").first()
if not item:
raise serializers.ValidationError({"public_id": "No active equipment listing with this public_id."})
attrs["_equipment_item"] = item
else:
offering = AdventureOffering.objects.filter(public_id=public_id, is_active=True).select_related("vendor").first()
if not offering:
raise serializers.ValidationError({"public_id": "No active adventure offering with this public_id."})
attrs["_adventure_offering"] = offering
return attrs