Skip to content

Commit de210af

Browse files
authored
Merge pull request #5765 from stsewd/use-version-to-trigger-tasks
Use version_pk to trigger builds
2 parents cf46b26 + 90211a2 commit de210af

File tree

5 files changed

+24
-45
lines changed

5 files changed

+24
-45
lines changed

readthedocs/core/management/commands/update_repos.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,8 @@ def handle(self, *args, **options):
7373

7474
# pylint: disable=no-value-for-parameter
7575
tasks.update_docs_task(
76-
version.project_id,
76+
version.pk,
7777
build_pk=build.pk,
78-
version_pk=version.pk,
7978
)
8079
else:
8180
p = Project.all_objects.get(slug=slug)
@@ -90,15 +89,16 @@ def handle(self, *args, **options):
9089
):
9190
# pylint: disable=no-value-for-parameter
9291
tasks.update_docs_task(
93-
version.project_id,
92+
version.pk,
9493
force=force,
95-
version_pk=version.pk,
9694
)
9795
else:
9896
log.info('Updating all docs')
9997
for project in Project.objects.all():
10098
# pylint: disable=no-value-for-parameter
99+
default_version = project.get_default_version()
100+
version = project.versions.get(slug=default_version)
101101
tasks.update_docs_task(
102-
project.pk,
102+
version.pk,
103103
force=force,
104104
)

readthedocs/core/management/commands/update_versions.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ def handle(self, *args, **options):
1616
for version in Version.objects.filter(active=True, built=False):
1717
# pylint: disable=no-value-for-parameter
1818
update_docs_task(
19-
version.project_id,
19+
version.pk,
2020
record=False,
21-
version_pk=version.pk,
2221
)

readthedocs/core/utils/__init__.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
# -*- coding: utf-8 -*-
2-
31
"""Common utilty functions."""
42

53
from __future__ import absolute_import
@@ -97,7 +95,6 @@ def prepare_build(
9795
version = project.versions.get(slug=default_version)
9896

9997
kwargs = {
100-
'version_pk': version.pk,
10198
'record': record,
10299
'force': force,
103100
}
@@ -131,7 +128,7 @@ def prepare_build(
131128

132129
return (
133130
update_docs_task.signature(
134-
args=(project.pk,),
131+
args=(version.pk,),
135132
kwargs=kwargs,
136133
options=options,
137134
immutable=True,

readthedocs/projects/tasks.py

+9-19
Original file line numberDiff line numberDiff line change
@@ -88,25 +88,16 @@ class SyncRepositoryMixin:
8888
"""Mixin that handles the VCS sync/update."""
8989

9090
@staticmethod
91-
def get_version(project=None, version_pk=None):
91+
def get_version(version_pk):
9292
"""
9393
Retrieve version data from the API.
9494
95-
:param project: project object to sync
96-
:type project: projects.models.Project
9795
:param version_pk: version pk to sync
9896
:type version_pk: int
9997
:returns: a data-complete version object
10098
:rtype: builds.models.APIVersion
10199
"""
102-
if not (project or version_pk):
103-
raise ValueError('project or version_pk is needed')
104-
if version_pk:
105-
version_data = api_v2.version(version_pk).get()
106-
else:
107-
version_data = (
108-
api_v2.version(project.slug).get(slug=LATEST)['objects'][0]
109-
)
100+
version_data = api_v2.version(version_pk).get()
110101
return APIVersion(**version_data)
111102

112103
def get_vcs_repo(self):
@@ -240,7 +231,7 @@ def run(self, version_pk): # pylint: disable=arguments-differ
240231
:rtype: bool
241232
"""
242233
try:
243-
self.version = self.get_version(version_pk=version_pk)
234+
self.version = self.get_version(version_pk)
244235
self.project = self.version.project
245236
self.sync_repo()
246237
return True
@@ -288,9 +279,9 @@ def run(self, version_pk): # pylint: disable=arguments-differ
288279
MkDocsYAMLParseError,
289280
),
290281
)
291-
def update_docs_task(self, project_id, *args, **kwargs):
282+
def update_docs_task(self, version_pk, *args, **kwargs):
292283
step = UpdateDocsTaskStep(task=self)
293-
return step.run(project_id, *args, **kwargs)
284+
return step.run(version_pk, *args, **kwargs)
294285

295286

296287
class UpdateDocsTaskStep(SyncRepositoryMixin):
@@ -340,7 +331,7 @@ def __init__(
340331

341332
# pylint: disable=arguments-differ
342333
def run(
343-
self, pk, version_pk=None, build_pk=None, record=True, docker=None,
334+
self, version_pk, build_pk=None, record=True, docker=None,
344335
force=False, **__
345336
):
346337
"""
@@ -359,8 +350,7 @@ def run(
359350
the user to bug us. It is therefore a benefit to have as few unhandled
360351
errors as possible.
361352
362-
:param pk int: Project id
363-
:param version_pk int: Project Version id (latest if None)
353+
:param version_pk int: Project Version id
364354
:param build_pk int: Build id (if None, commands are not recorded)
365355
:param record bool: record a build object in the database
366356
:param docker bool: use docker to build the project (if ``None``,
@@ -374,8 +364,8 @@ def run(
374364
try:
375365
if docker is None:
376366
docker = settings.DOCKER_ENABLE
377-
self.project = self.get_project(pk)
378-
self.version = self.get_version(self.project, version_pk)
367+
self.version = self.get_version(version_pk)
368+
self.project = self.version.project
379369
self.build = self.get_build(build_pk)
380370
self.build_force = force
381371
self.config = None

readthedocs/rtd_tests/tests/test_core_utils.py

+8-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# -*- coding: utf-8 -*-
21
"""Test core util functions."""
32

43
import os
@@ -50,15 +49,14 @@ def test_trigger_build_when_version_not_provided_default_version_exist(self, upd
5049

5150
trigger_build(project=project_1)
5251
kwargs = {
53-
'version_pk': version_1.pk,
5452
'record': True,
5553
'force': False,
5654
'build_pk': mock.ANY,
5755
}
5856

5957
update_docs_task.signature.assert_has_calls([
6058
mock.call(
61-
args=(project_1.pk,),
59+
args=(version_1.pk,),
6260
kwargs=kwargs,
6361
options=mock.ANY,
6462
immutable=True,
@@ -70,20 +68,19 @@ def test_trigger_build_when_version_not_provided_default_version_doesnt_exist(se
7068

7169
trigger_build(project=self.project)
7270
default_version = self.project.get_default_version()
73-
version_ = self.project.versions.get(slug=default_version)
71+
version = self.project.versions.get(slug=default_version)
7472

75-
self.assertEqual(version_.slug, LATEST)
73+
self.assertEqual(version.slug, LATEST)
7674

7775
kwargs = {
78-
'version_pk': version_.pk,
7976
'record': True,
8077
'force': False,
8178
'build_pk': mock.ANY,
8279
}
8380

8481
update_docs_task.signature.assert_has_calls([
8582
mock.call(
86-
args=(self.project.pk,),
83+
args=(version.pk,),
8784
kwargs=kwargs,
8885
options=mock.ANY,
8986
immutable=True,
@@ -96,7 +93,6 @@ def test_trigger_custom_queue(self, update_docs):
9693
self.project.build_queue = 'build03'
9794
trigger_build(project=self.project, version=self.version)
9895
kwargs = {
99-
'version_pk': self.version.pk,
10096
'record': True,
10197
'force': False,
10298
'build_pk': mock.ANY,
@@ -108,7 +104,7 @@ def test_trigger_custom_queue(self, update_docs):
108104
}
109105
update_docs.signature.assert_has_calls([
110106
mock.call(
111-
args=(self.project.pk,),
107+
args=(self.version.pk,),
112108
kwargs=kwargs,
113109
options=options,
114110
immutable=True,
@@ -121,7 +117,6 @@ def test_trigger_build_time_limit(self, update_docs):
121117
"""Pass of time limit."""
122118
trigger_build(project=self.project, version=self.version)
123119
kwargs = {
124-
'version_pk': self.version.pk,
125120
'record': True,
126121
'force': False,
127122
'build_pk': mock.ANY,
@@ -133,7 +128,7 @@ def test_trigger_build_time_limit(self, update_docs):
133128
}
134129
update_docs.signature.assert_has_calls([
135130
mock.call(
136-
args=(self.project.pk,),
131+
args=(self.version.pk,),
137132
kwargs=kwargs,
138133
options=options,
139134
immutable=True,
@@ -147,7 +142,6 @@ def test_trigger_build_invalid_time_limit(self, update_docs):
147142
self.project.container_time_limit = '200s'
148143
trigger_build(project=self.project, version=self.version)
149144
kwargs = {
150-
'version_pk': self.version.pk,
151145
'record': True,
152146
'force': False,
153147
'build_pk': mock.ANY,
@@ -159,7 +153,7 @@ def test_trigger_build_invalid_time_limit(self, update_docs):
159153
}
160154
update_docs.signature.assert_has_calls([
161155
mock.call(
162-
args=(self.project.pk,),
156+
args=(self.version.pk,),
163157
kwargs=kwargs,
164158
options=options,
165159
immutable=True,
@@ -173,7 +167,6 @@ def test_trigger_build_rounded_time_limit(self, update_docs):
173167
self.project.container_time_limit = 3
174168
trigger_build(project=self.project, version=self.version)
175169
kwargs = {
176-
'version_pk': self.version.pk,
177170
'record': True,
178171
'force': False,
179172
'build_pk': mock.ANY,
@@ -185,7 +178,7 @@ def test_trigger_build_rounded_time_limit(self, update_docs):
185178
}
186179
update_docs.signature.assert_has_calls([
187180
mock.call(
188-
args=(self.project.pk,),
181+
args=(self.version.pk,),
189182
kwargs=kwargs,
190183
options=options,
191184
immutable=True,

0 commit comments

Comments
 (0)