Skip to content

Commit 17b225f

Browse files
authored
Merge pull request #8815 from readthedocs/humitos/celery-handlers
2 parents a190d31 + b68730d commit 17b225f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+3956
-6160
lines changed

.circleci/config.yml

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ jobs:
1010
name: search
1111
environment:
1212
discovery.type: single-node
13+
ES_JAVA_OPTS: -Xms750m -Xmx750m
1314
steps:
1415
- checkout
1516
- run: git submodule sync

docs/user/faq.rst

-6
Original file line numberDiff line numberDiff line change
@@ -122,12 +122,6 @@ following settings::
122122
SLUMBER_PASSWORD = 'test'
123123

124124

125-
Deleting a stale or broken build environment
126-
--------------------------------------------
127-
128-
See :doc:`guides/wipe-environment`.
129-
130-
131125
How do I host multiple projects on one custom domain?
132126
-----------------------------------------------------
133127

docs/user/guides/administrators.rst

-1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,3 @@ have a look at our :doc:`/tutorial/index`.
1919
deprecating-content
2020
pdf-non-ascii-languages
2121
importing-private-repositories
22-
wipe-environment

docs/user/guides/wipe-environment.rst

-28
This file was deleted.

readthedocs/api/v3/tests/test_builds.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from .mixins import APIEndpointMixin
66

77

8-
@mock.patch('readthedocs.projects.tasks.update_docs_task', mock.MagicMock())
8+
@mock.patch('readthedocs.projects.tasks.builds.update_docs_task', mock.MagicMock())
99
class BuildsEndpointTests(APIEndpointMixin):
1010

1111
def test_projects_builds_list(self):

readthedocs/api/v3/tests/test_projects.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from .mixins import APIEndpointMixin
99

1010

11-
@mock.patch('readthedocs.projects.tasks.update_docs_task', mock.MagicMock())
11+
@mock.patch('readthedocs.projects.tasks.builds.update_docs_task', mock.MagicMock())
1212
class ProjectsEndpointTests(APIEndpointMixin):
1313

1414
def test_projects_list(self):

readthedocs/builds/admin.py

+3-18
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
VersionAutomationRule,
2121
)
2222
from readthedocs.core.utils import trigger_build
23-
from readthedocs.core.utils.general import wipe_version_via_slugs
2423
from readthedocs.projects.models import HTMLFile
2524
from readthedocs.search.utils import _indexing_helper
2625

@@ -118,29 +117,15 @@ class VersionAdmin(admin.ModelAdmin):
118117
list_filter = ('type', 'privacy_level', 'active', 'built')
119118
search_fields = ('slug', 'project__slug')
120119
raw_id_fields = ('project',)
121-
actions = ['build_version', 'reindex_version', 'wipe_version', 'wipe_selected_versions']
120+
actions = ['build_version', 'reindex_version', 'wipe_version_indexes']
122121

123122
def project_slug(self, obj):
124123
return obj.project.slug
125124

126-
def wipe_selected_versions(self, request, queryset):
127-
"""Wipes the selected versions."""
128-
for version in queryset:
129-
wipe_version_via_slugs(
130-
version_slug=version.slug,
131-
project_slug=version.project.slug
132-
)
133-
self.message_user(
134-
request,
135-
'Wiped {}.'.format(version.slug),
136-
level=messages.SUCCESS
137-
)
138-
139125
def pretty_config(self, instance):
140126
return _pretty_config(instance)
141127

142128
pretty_config.short_description = 'Config File'
143-
wipe_selected_versions.short_description = 'Wipe selected versions'
144129

145130
def build_version(self, request, queryset):
146131
"""Trigger a build for the project version."""
@@ -179,7 +164,7 @@ def reindex_version(self, request, queryset):
179164

180165
reindex_version.short_description = 'Reindex version to ES'
181166

182-
def wipe_version(self, request, queryset):
167+
def wipe_version_indexes(self, request, queryset):
183168
"""Wipe selected versions from ES."""
184169
html_objs_qs = []
185170
for version in queryset.iterator():
@@ -197,7 +182,7 @@ def wipe_version(self, request, queryset):
197182
messages.SUCCESS,
198183
)
199184

200-
wipe_version.short_description = 'Wipe version from ES'
185+
wipe_version_indexes.short_description = 'Wipe version from ES'
201186

202187

203188
@admin.register(RegexAutomationRule)

readthedocs/builds/models.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -317,9 +317,9 @@ def get_absolute_url(self):
317317
)
318318

319319
def delete(self, *args, **kwargs): # pylint: disable=arguments-differ
320-
from readthedocs.projects import tasks
320+
from readthedocs.projects.tasks.utils import clean_project_resources
321321
log.info('Removing files for version.', version_slug=self.slug)
322-
tasks.clean_project_resources(self.project, self)
322+
clean_project_resources(self.project, self)
323323
super().delete(*args, **kwargs)
324324

325325
@property
@@ -614,6 +614,9 @@ class Build(models.Model):
614614
date = models.DateTimeField(_('Date'), auto_now_add=True, db_index=True)
615615
success = models.BooleanField(_('Success'), default=True)
616616

617+
# TODO: remove these fields (setup, setup_error, output, error, exit_code)
618+
# since they are not used anymore in the new implementation and only really
619+
# old builds (>5 years ago) only were using these fields.
617620
setup = models.TextField(_('Setup'), null=True, blank=True)
618621
setup_error = models.TextField(_('Setup error'), null=True, blank=True)
619622
output = models.TextField(_('Output'), default='', blank=True)

readthedocs/builds/tasks.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ class TaskRouter:
6868
def route_for_task(self, task, args, kwargs, **__):
6969
log.debug('Executing TaskRouter.', task=task)
7070
if task not in (
71-
'readthedocs.projects.tasks.update_docs_task',
72-
'readthedocs.projects.tasks.sync_repository_task',
71+
'readthedocs.projects.tasks.builds.update_docs_task',
72+
'readthedocs.projects.tasks.builds.sync_repository_task',
7373
):
7474
log.debug('Skipping routing non-build task.', task=task)
7575
return
@@ -153,8 +153,8 @@ def route_for_task(self, task, args, kwargs, **__):
153153

154154
def _get_version(self, task, args, kwargs):
155155
tasks = [
156-
'readthedocs.projects.tasks.update_docs_task',
157-
'readthedocs.projects.tasks.sync_repository_task',
156+
'readthedocs.projects.tasks.builds.update_docs_task',
157+
'readthedocs.projects.tasks.builds.sync_repository_task',
158158
]
159159
version = None
160160
if task in tasks:

readthedocs/builds/tests/test_celery_task_router.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def setUp(self):
2929

3030
)
3131

32-
self.task = 'readthedocs.projects.tasks.update_docs_task'
32+
self.task = 'readthedocs.projects.tasks.builds.update_docs_task'
3333
self.args = (
3434
self.version.pk,
3535
)

readthedocs/builds/views.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from readthedocs.builds.models import Build, Version
1919
from readthedocs.core.permissions import AdminPermission
2020
from readthedocs.core.utils import trigger_build
21-
from readthedocs.doc_builder.exceptions import BuildEnvironmentError
21+
from readthedocs.doc_builder.exceptions import BuildAppError
2222
from readthedocs.projects.models import Project
2323

2424
log = structlog.get_logger(__name__)
@@ -154,7 +154,7 @@ def get_context_data(self, **kwargs):
154154

155155
build = self.get_object()
156156

157-
if build.error != BuildEnvironmentError.GENERIC_WITH_BUILD_ID.format(build_id=build.pk):
157+
if build.error != BuildAppError.GENERIC_WITH_BUILD_ID.format(build_id=build.pk):
158158
# Do not suggest to open an issue if the error is not generic
159159
return context
160160

readthedocs/config/config.py

+1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
LATEST_CONFIGURATION_VERSION = 2
7373

7474

75+
# TODO: make these exception to inherit from `BuildUserError`
7576
class ConfigError(Exception):
7677

7778
"""Base error for the rtd configuration file."""

readthedocs/core/management/commands/update_repos.py

+1-10
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,6 @@ class Command(BaseCommand):
2525
def add_arguments(self, parser):
2626
parser.add_argument('--slugs', nargs='+', type=str)
2727

28-
parser.add_argument(
29-
'-f',
30-
action='store_true',
31-
dest='force',
32-
default=False,
33-
help='Force a build in sphinx',
34-
)
35-
3628
parser.add_argument(
3729
'-V',
3830
dest='version',
@@ -41,7 +33,6 @@ def add_arguments(self, parser):
4133
)
4234

4335
def handle(self, *args, **options):
44-
force = options['force']
4536
version = options['version']
4637
slugs = options.get('slugs', [])
4738

@@ -85,7 +76,7 @@ def handle(self, *args, **options):
8576
else:
8677
p = Project.all_objects.get(slug=slug)
8778
log.info('Building ...', project_slug=p.slug)
88-
trigger_build(project=p, force=force)
79+
trigger_build(project=p)
8980
else:
9081
if version == 'all':
9182
log.info('Updating all versions')

readthedocs/core/tests/test_history.py

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from unittest import mock
2+
13
from django.contrib.auth.models import User
24
from django.test import TestCase
35
from django.urls import reverse
@@ -13,6 +15,7 @@ def setUp(self):
1315
self.project = get(Project, users=[self.user])
1416
self.client.force_login(self.user)
1517

18+
@mock.patch('readthedocs.projects.forms.trigger_build', mock.MagicMock())
1619
def test_extra_historical_fields_with_request(self):
1720
self.assertEqual(self.project.history.count(), 1)
1821
r = self.client.post(

readthedocs/core/urls/__init__.py

-20
This file was deleted.

0 commit comments

Comments
 (0)