Files
goodtimes/manage_cms/api/serializers.py

126 lines
4.2 KiB
Python

import re
from rest_framework import serializers
from accounts.models import IAmPrincipal
from goodtimes import constants, date_utils
from manage_cms import models
from taggit.models import Tag
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
fields = ['id', 'name']
class NewsAndArticlesSerializer(serializers.ModelSerializer):
class Meta:
model = models.NewsAndArticles
fields = "__all__"
class NewsLetterSerializer(serializers.ModelSerializer):
class Meta:
model = models.Newsletter
fields = "__all__"
class FaqSerializer(serializers.ModelSerializer):
class Meta:
model = models.Faqs
fields = "__all__"
class OrganizationSerializer(serializers.ModelSerializer):
about_us = serializers.CharField(source='about_us.html', read_only=True)
terms_condition = serializers.CharField(source='terms_condition.html', read_only=True)
terms_condition_user = serializers.CharField(source='terms_condition_user.html', read_only=True)
terms_condition_merchant = serializers.CharField(source='terms_condition_merchant.html', read_only=True)
privacy_policy = serializers.CharField(source='privacy_policy.html', read_only=True)
privacy_policy_user = serializers.CharField(source='privacy_policy_user.html', read_only=True)
privacy_policy_merchant = serializers.CharField(source='privacy_policy_merchant.html', read_only=True)
subscription_agreement = serializers.CharField(source='subscription_agreement.html', read_only=True)
license_agreement_user = serializers.CharField(source='license_agreement_user.html', read_only=True)
license_agreement_merchant = serializers.CharField(source='license_agreement_merchant.html', read_only=True)
class Meta:
model = models.Organization
fields = [
"about_us",
"terms_condition",
"terms_condition_user",
"terms_condition_merchant",
"privacy_policy",
"privacy_policy_user",
"privacy_policy_merchant",
"subscription_agreement",
"license_agreement_user",
"license_agreement_merchant",
"contact_us_email",
"instagram_handle",
"facebook_handle",
"linkedin_handle",
"website_url",
"address",
"contact_us_phone",
]
class EducationVideoSerializer(serializers.ModelSerializer):
tags = TagSerializer(many=True, read_only=True)
date = serializers.DateTimeField(source="published_at", format='%d %b, %Y')
class Meta:
model = models.Education
fields = [
"content_type",
"title",
"description",
"thumbnail",
"video_url",
"tags",
"date"
]
def get_image_url(self, obj, field_name, request):
image_field = getattr(obj, field_name)
if image_field:
return request.build_absolute_uri(image_field.url)
return ""
def to_representation(self, instance):
data = super().to_representation(instance)
request = self.context.get("request")
data["thumbnail"] = self.get_image_url(instance, "thumbnail", request)
return data
class EducationMaterialSerializer(serializers.ModelSerializer):
tags = TagSerializer(many=True, read_only=True)
date = serializers.DateTimeField(source="published_at", format='%d %b, %Y')
class Meta:
model = models.Education
fields = [
"content_type",
"title",
"file",
"tags",
"date"
]
def get_image_url(self, obj, field_name, request):
image_field = getattr(obj, field_name)
if image_field:
return request.build_absolute_uri(image_field.url)
return ""
def to_representation(self, instance):
data = super().to_representation(instance)
request = self.context.get("request")
data["file"] = self.get_image_url(instance, "file", request)
return data
# class EducationTagSerializer(serializers.ModelSerializer):
# tags = TagSerializer(many=True, read_only=True)
# class Meta:
# model = models.Education
# fields = ["tags"]