Skip to content

Commit fedb801

Browse files
committed
APIv3: add analytics field to Project object
New `analytics` field that exposes: - the Google code if the project has it configured - whether or not the global Google/Plausible Read the Docs analytics is enabled This field is going to be useful for the new "Analytics Addon". Related #10216
1 parent 940278a commit fedb801

File tree

2 files changed

+37
-15
lines changed

2 files changed

+37
-15
lines changed

readthedocs/api/v3/serializers.py

+29-15
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,18 @@ class ProjectUpdateSerializer(SettingsOverrideObject):
605605
_default_class = ProjectUpdateSerializerBase
606606

607607

608+
class AnalyticsSerializer(serializers.Serializer):
609+
610+
readthedocs = serializers.SerializerMethodField()
611+
google = serializers.SerializerMethodField()
612+
613+
def get_readthedocs(self, obj):
614+
return {"enabled": not obj.analytics_disabled}
615+
616+
def get_google(self, obj):
617+
return {"code": obj.analytics_code}
618+
619+
608620
class ProjectSerializer(FlexFieldsModelSerializer):
609621

610622
"""
@@ -616,6 +628,7 @@ class ProjectSerializer(FlexFieldsModelSerializer):
616628
But we have organization.owners.
617629
"""
618630

631+
analytics = AnalyticsSerializer(source="*")
619632
homepage = serializers.SerializerMethodField()
620633
language = LanguageSerializer()
621634
programming_language = ProgrammingLanguageSerializer()
@@ -637,21 +650,22 @@ class ProjectSerializer(FlexFieldsModelSerializer):
637650
class Meta:
638651
model = Project
639652
fields = [
640-
'id',
641-
'name',
642-
'slug',
643-
'created',
644-
'modified',
645-
'language',
646-
'programming_language',
647-
'homepage',
648-
'repository',
649-
'default_version',
650-
'default_branch',
651-
'subproject_of',
652-
'translation_of',
653-
'urls',
654-
'tags',
653+
"id",
654+
"name",
655+
"slug",
656+
"created",
657+
"modified",
658+
"language",
659+
"programming_language",
660+
"analytics",
661+
"homepage",
662+
"repository",
663+
"default_version",
664+
"default_branch",
665+
"subproject_of",
666+
"translation_of",
667+
"urls",
668+
"tags",
655669
"privacy_level",
656670
"external_builds_privacy_level",
657671

readthedocs/api/v3/tests/responses/projects-detail.json

+8
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,14 @@
7676
"translations": "https://readthedocs.org/api/v3/projects/project/translations/",
7777
"versions": "https://readthedocs.org/api/v3/projects/project/versions/"
7878
},
79+
"analytics": {
80+
"google": {
81+
"code": null
82+
},
83+
"readthedocs": {
84+
"enabled": true
85+
}
86+
},
7987
"modified": "2019-04-29T12:00:00Z",
8088
"name": "project",
8189
"programming_language": {

0 commit comments

Comments
 (0)