inital commit
This commit is contained in:
55
marketing/serializers.py
Normal file
55
marketing/serializers.py
Normal 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
|
||||
Reference in New Issue
Block a user