You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

76 lines
3.0 KiB

from rest_framework import serializers
from drf_spectacular.utils import extend_schema_field
from apps.profiles.models.institution import Institution
class MapInstitutionMarkerSerializer(serializers.ModelSerializer):
type_display = serializers.CharField(source='get_type_display', read_only=True)
lat = serializers.FloatField(source='latitude', read_only=True)
lng = serializers.FloatField(source='longitude', read_only=True)
class Meta:
model = Institution
fields = [
'id',
'name',
'slug',
'type',
'type_display',
'lat',
'lng',
'city',
'country',
'avatar',
'cover_image',
'verification_status',
'is_featured',
'follower_count',
]
read_only_fields = fields
class MapClusterItemSerializer(serializers.Serializer):
is_cluster = serializers.BooleanField()
# Fields when is_cluster=False
id = serializers.IntegerField(required=False, allow_null=True)
name = serializers.CharField(required=False, allow_null=True)
slug = serializers.CharField(required=False, allow_null=True)
type = serializers.CharField(required=False, allow_null=True)
type_display = serializers.CharField(required=False, allow_null=True)
city = serializers.CharField(required=False, allow_null=True)
country = serializers.CharField(required=False, allow_null=True)
avatar = serializers.CharField(required=False, allow_null=True)
cover_image = serializers.CharField(required=False, allow_null=True)
is_featured = serializers.BooleanField(required=False)
verification_status = serializers.CharField(required=False, allow_null=True)
follower_count = serializers.IntegerField(required=False)
# Fields when is_cluster=True
cluster_id = serializers.CharField(required=False)
count = serializers.IntegerField(required=False)
lat = serializers.FloatField()
lng = serializers.FloatField()
type_breakdown = serializers.DictField(required=False)
preview_institutions = serializers.ListField(required=False)
class RegionalDensitySerializer(serializers.Serializer):
country = serializers.CharField()
total_institutions = serializers.IntegerField()
mosques_count = serializers.IntegerField()
hussainiyas_count = serializers.IntegerField()
cultural_centers_count = serializers.IntegerField()
libraries_count = serializers.IntegerField()
institutes_count = serializers.IntegerField()
charities_count = serializers.IntegerField()
total_followers = serializers.IntegerField()
center_lat = serializers.FloatField(allow_null=True)
center_lng = serializers.FloatField(allow_null=True)
class MapStatsSerializer(serializers.Serializer):
total_institutions = serializers.IntegerField()
total_countries = serializers.IntegerField()
total_cities = serializers.IntegerField()
type_distribution = serializers.DictField()
verified_count = serializers.IntegerField()
featured_count = serializers.IntegerField()