Skip to content

Commit 6e5af3e

Browse files
committed
Use project detail endpoint with admin serializer
Add the `environment_variables` field to this serializer that will be returned only when the user is admin.
1 parent f708773 commit 6e5af3e

File tree

4 files changed

+13
-13
lines changed

4 files changed

+13
-13
lines changed

readthedocs/projects/models.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -900,6 +900,7 @@ class Meta:
900900

901901
def __init__(self, *args, **kwargs):
902902
self.features = kwargs.pop('features', [])
903+
self.environment_variables = kwargs.pop('environment_variables', {})
903904
ad_free = (not kwargs.pop('show_advertising', True))
904905
# These fields only exist on the API return, not on the model, so we'll
905906
# remove them to avoid throwing exceptions due to unexpected fields
@@ -1115,14 +1116,14 @@ def get_feature_display(self):
11151116
class EnvironmentVariable(TimeStampedModel, models.Model):
11161117
name = models.CharField(
11171118
max_length=128,
1118-
help_text='Name of the environment variable',
1119+
help_text=_('Name of the environment variable'),
11191120
)
11201121
value = models.CharField(
11211122
max_length=256,
1122-
help_text='Value of the environment variable',
1123+
help_text=_('Value of the environment variable'),
11231124
)
11241125
project = models.ForeignKey(
11251126
Project,
11261127
on_delete=models.CASCADE,
1127-
help_text='Project where this variable will be used',
1128+
help_text=_('Project where this variable will be used'),
11281129
)

readthedocs/projects/tasks.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -630,9 +630,7 @@ def get_env_vars(self):
630630
})
631631

632632
# Update environment from Project's specific environment variables
633-
env.update(
634-
api_v2.project(self.project.pk).environment_variables().get(),
635-
)
633+
env.update(self.project.environment_variables)
636634

637635
return env
638636

readthedocs/restapi/serializers.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,17 @@ class ProjectAdminSerializer(ProjectSerializer):
4444
)
4545

4646
show_advertising = serializers.SerializerMethodField()
47+
environment_variables = serializers.SerializerMethodField()
4748

4849
def get_show_advertising(self, obj):
4950
return obj.show_advertising
5051

52+
def get_environment_variables(self, obj):
53+
return {
54+
variable.name: variable.value
55+
for variable in obj.environmentvariable_set.all()
56+
}
57+
5158
class Meta(ProjectSerializer.Meta):
5259
fields = ProjectSerializer.Meta.fields + (
5360
'enable_epub_build',
@@ -68,6 +75,7 @@ class Meta(ProjectSerializer.Meta):
6875
'has_valid_clone',
6976
'has_valid_webhook',
7077
'show_advertising',
78+
'environment_variables',
7179
)
7280

7381

readthedocs/restapi/views/model_views.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,6 @@ def valid_versions(self, request, **kwargs):
117117
'flat': version_strings,
118118
})
119119

120-
@detail_route(permission_classes=[permissions.IsAdminUser])
121-
def environment_variables(self, request, *_, **__):
122-
return Response({
123-
env.name: env.value
124-
for env in self.get_object().environmentvariable_set.all()
125-
})
126-
127120
@detail_route()
128121
def translations(self, *_, **__):
129122
translations = self.get_object().translations.all()

0 commit comments

Comments
 (0)