from urllib.parse import urlparse, urlunparse from rest_framework import serializers from apps.config.models import Config class ConfigSerializer(serializers.ModelSerializer): SERVICE_INSTAGRAM_URL = serializers.URLField(required=False) SERVICE_TWITTER_URL = serializers.URLField(required=False) SERVICE_FB_URL = serializers.URLField(required=False) SERVICE_YOUTUBE_URL = serializers.URLField(required=False) SERVICE_TELEGRAM_CHANNEL = serializers.URLField(required=False) SERVICE_COMMISSION = serializers.IntegerField(required=False) SERVICE_DISCOUNT_MIN_AMOUNT = serializers.IntegerField(required=False) SERVICE_DISCOUNT = serializers.IntegerField(required=False) INSTAGRAM_CLIENT_ACCESS_TOKEN = serializers.CharField(required=False) INSTAGRAM_CLIENT_SECRET = serializers.CharField(required=False) INSTAGRAM_PROFILE_URL = serializers.CharField(required=False) SCHOOL_LOGO_IMAGE = serializers.SerializerMethodField() MAIN_PAGE_TOP_IMAGE = serializers.SerializerMethodField() # SCHOOL_LOGO_IMAGE = serializers.ImageField(required=False, allow_null=True) # MAIN_PAGE_TOP_IMAGE = serializers.ImageField(required=False, allow_null=True) REFERRER_BONUS = serializers.IntegerField() REFERRAL_BONUS = serializers.IntegerField() MAIN_PAGE_VIDEO_URL = serializers.CharField(required=False) class Meta: model = Config fields = ( 'SERVICE_INSTAGRAM_URL', 'SERVICE_TWITTER_URL', 'SERVICE_FB_URL', 'SERVICE_YOUTUBE_URL', 'SERVICE_TELEGRAM_CHANNEL', 'SERVICE_COMMISSION', 'SERVICE_DISCOUNT_MIN_AMOUNT', 'SERVICE_DISCOUNT', 'INSTAGRAM_CLIENT_ACCESS_TOKEN', 'INSTAGRAM_CLIENT_SECRET', 'INSTAGRAM_PROFILE_URL', 'SCHOOL_LOGO_IMAGE', 'MAIN_PAGE_TOP_IMAGE', 'REFERRER_BONUS', 'REFERRAL_BONUS', 'MAIN_PAGE_VIDEO_URL', ) def get_SCHOOL_LOGO_IMAGE(self, config): request = self.context.get('request') http_host = request.META.get('HTTP_ORIGIN') if http_host and config.SCHOOL_LOGO_IMAGE: domain = urlparse(http_host).netloc.split(':')[0] SCHOOL_LOGO_IMAGE_url = 'http://' + domain + config.SCHOOL_LOGO_IMAGE.url return SCHOOL_LOGO_IMAGE_url else: return None def get_MAIN_PAGE_TOP_IMAGE(self, config): request = self.context.get('request') http_host = request.META.get('HTTP_ORIGIN') if http_host and config.MAIN_PAGE_TOP_IMAGE: domain = urlparse(http_host).netloc.split(':')[0] MAIN_PAGE_TOP_IMAGE_url = 'http://' + domain + config.MAIN_PAGE_TOP_IMAGE.url return MAIN_PAGE_TOP_IMAGE_url else: return None