Skip to content

Commit c6425b9

Browse files
committed
Remove update_imported_docs and use UpdateDocsTask
1 parent b44e997 commit c6425b9

File tree

5 files changed

+32
-91
lines changed

5 files changed

+32
-91
lines changed

docs/builds.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ An example in code:
7575

7676
.. code-block:: python
7777
78-
update_imported_docs(version)
78+
update_docs_from_vcs(version)
7979
if exists('setup.py'):
8080
run('python setup.py install')
8181
if project.requirements_file:

readthedocs/core/management/commands/pull.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ class Command(BaseCommand):
1919
def handle(self, *args, **options):
2020
if args:
2121
for slug in args:
22-
tasks.update_imported_docs(
23-
utils.version_from_slug(slug, LATEST).pk
22+
version = utils.version_from_slug(slug, LATEST)
23+
tasks.UpdateDocsTask().run(
24+
version.project,
25+
version.pk,
26+
sync_only=True,
2427
)

readthedocs/core/views/hooks.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from readthedocs.builds.constants import LATEST
1313
from readthedocs.projects import constants
1414
from readthedocs.projects.models import Project, Feature
15-
from readthedocs.projects.tasks import update_imported_docs
15+
from readthedocs.projects.tasks import UpdateDocsTask
1616

1717
import logging
1818

@@ -123,8 +123,16 @@ def _build_url(url, projects, branches):
123123
for project in projects:
124124
(built, not_building) = build_branches(project, branches)
125125
if not built:
126-
# Call update_imported_docs to update tag/branch info
127-
update_imported_docs.delay(project.versions.get(slug=LATEST).pk)
126+
# Call UpdateDocsTask with ``sync_only`` to update tag/branch info
127+
version = project.versions.get(slug=LATEST)
128+
update_docs = UpdateDocsTask()
129+
update_docs.apply_async(
130+
args=(project.pk,),
131+
kwargs={
132+
'version_pk': version.pk,
133+
'sync_only': True,
134+
},
135+
)
128136
msg = '(URL Build) Syncing versions for %s' % project.slug
129137
log.info(msg)
130138
all_built[project.slug] = built

readthedocs/projects/tasks.py

Lines changed: 10 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ def _log(self, msg):
106106

107107
# pylint: disable=arguments-differ
108108
def run(self, pk, version_pk=None, build_pk=None, record=True,
109-
docker=False, search=True, force=False, localmedia=True, **__):
109+
docker=False, search=True, force=False, localmedia=True,
110+
sync_only=False, **__):
110111
"""
111112
Run a documentation sync or sync n' build.
112113
@@ -144,9 +145,15 @@ def run(self, pk, version_pk=None, build_pk=None, record=True,
144145
self.build_force = force
145146
self.config = None
146147

148+
if sync_only:
149+
self.sync_repo()
150+
return True
151+
147152
setup_successful = self.run_setup(record=record)
148153
if not setup_successful:
149154
return False
155+
156+
150157
# Catch unhandled errors in the setup step
151158
except Exception as e: # noqa
152159
log.exception(
@@ -365,7 +372,8 @@ def sync_repo(self):
365372
)
366373
version_repo = self.project.vcs_repo(
367374
self.version.slug,
368-
self.setup_env,
375+
# When ``sync_only`` we don't a setup_env
376+
getattr(self, 'setup_env', None),
369377
)
370378
version_repo.checkout(self.version.identifier)
371379
finally:
@@ -607,88 +615,6 @@ def send_notifications(self):
607615
send_notifications.delay(self.version.pk, build_pk=self.build['id'])
608616

609617

610-
@app.task()
611-
def update_imported_docs(version_pk, env=None):
612-
"""
613-
Check out or update the given project's repository.
614-
615-
:param version_pk: Version id to update
616-
"""
617-
version_data = api_v2.version(version_pk).get()
618-
version = APIVersion(**version_data)
619-
project = version.project
620-
ret_dict = {}
621-
622-
# Make Dirs
623-
if not os.path.exists(project.doc_path):
624-
os.makedirs(project.doc_path)
625-
626-
if not project.vcs_repo():
627-
raise RepositoryError(
628-
_('Repository type "{repo_type}" unknown').format(
629-
repo_type=project.repo_type
630-
)
631-
)
632-
633-
with project.repo_nonblockinglock(
634-
version=version,
635-
max_lock_age=getattr(settings, 'REPO_LOCK_SECONDS', 30)):
636-
637-
# Get the actual code on disk
638-
try:
639-
before_vcs.send(sender=version)
640-
if version:
641-
log.info(
642-
LOG_TEMPLATE.format(
643-
project=project.slug,
644-
version=version.slug,
645-
msg='Checking out version {slug}: {identifier}'.format(
646-
slug=version.slug,
647-
identifier=version.identifier
648-
)
649-
)
650-
)
651-
version_slug = version.slug
652-
version_repo = project.vcs_repo(version_slug)
653-
654-
ret_dict['checkout'] = version_repo.checkout(version.identifier, env)
655-
else:
656-
# Does this ever get called?
657-
log.info(LOG_TEMPLATE.format(
658-
project=project.slug, version=version.slug, msg='Updating to latest revision'))
659-
version_slug = LATEST
660-
version_repo = project.vcs_repo(version_slug)
661-
ret_dict['checkout'] = version_repo.update()
662-
finally:
663-
after_vcs.send(sender=version)
664-
665-
# Update tags/version
666-
667-
version_post_data = {'repo': version_repo.repo_url}
668-
669-
if version_repo.supports_tags:
670-
version_post_data['tags'] = [
671-
{'identifier': v.identifier,
672-
'verbose_name': v.verbose_name,
673-
} for v in version_repo.tags
674-
]
675-
676-
if version_repo.supports_branches:
677-
version_post_data['branches'] = [
678-
{'identifier': v.identifier,
679-
'verbose_name': v.verbose_name,
680-
} for v in version_repo.branches
681-
]
682-
683-
try:
684-
api_v2.project(project.pk).sync_versions.post(version_post_data)
685-
except HttpClientError:
686-
log.exception("Sync Versions Exception")
687-
except Exception:
688-
log.exception("Unknown Sync Versions Exception")
689-
return ret_dict
690-
691-
692618
# Web tasks
693619
@app.task(queue='web')
694620
def sync_files(project_pk, version_pk, hostname=None, html=False,

readthedocs/rtd_tests/tests/test_celery.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,5 +117,9 @@ def test_update_docs_unexpected_build_exception(self, mock_build_docs):
117117

118118
def test_update_imported_doc(self):
119119
with mock_api(self.repo):
120-
result = tasks.update_imported_docs.delay(self.project.pk)
120+
update_docs = tasks.UpdateDocsTask()
121+
result = update_docs.apply_async(
122+
args=(self.project.pk,),
123+
kwargs={'sync_only': True},
124+
)
121125
self.assertTrue(result.successful())

0 commit comments

Comments
 (0)