119 lines
4.0 KiB
Python
119 lines
4.0 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",
|
|
]
|
|
|
|
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"] |