diff --git a/readthedocs/comments/admin.py b/readthedocs/comments/admin.py index 79355f082c3..7f194b2cc92 100644 --- a/readthedocs/comments/admin.py +++ b/readthedocs/comments/admin.py @@ -13,7 +13,7 @@ class DocumentNodeAdmin(admin.ModelAdmin): search_fields = ('id', 'document') list_filter = ('project__name',) raw_id_fields = ('project', 'version') - list_display = ('__unicode__', 'latest_hash', 'latest_commit') + list_display = ('__str__', 'latest_hash', 'latest_commit') inlines = (SnapshotAdmin,) diff --git a/readthedocs/doc_builder/environments.py b/readthedocs/doc_builder/environments.py index 92977f5796b..3fa97b0d036 100644 --- a/readthedocs/doc_builder/environments.py +++ b/readthedocs/doc_builder/environments.py @@ -22,7 +22,6 @@ from readthedocs.builds.constants import BUILD_STATE_FINISHED from readthedocs.builds.models import BuildCommandResultMixin from readthedocs.projects.constants import LOG_TEMPLATE -from readthedocs.api.client import api as api_v1 from readthedocs.restapi.client import api as api_v2 from .exceptions import (BuildEnvironmentException, BuildEnvironmentError, @@ -37,7 +36,7 @@ __all__ = ( - 'api_v1', 'api_v2', + 'api_v2', 'BuildCommand', 'DockerBuildCommand', 'BuildEnvironment', 'LocalEnvironment', 'DockerEnvironment', ) diff --git a/readthedocs/projects/models.py b/readthedocs/projects/models.py index 2a12851835b..25118a0d94a 100644 --- a/readthedocs/projects/models.py +++ b/readthedocs/projects/models.py @@ -17,9 +17,8 @@ from guardian.shortcuts import assign from taggit.managers import TaggableManager -from readthedocs.api.client import api from readthedocs.core.utils import broadcast, slugify -from readthedocs.restapi.client import api as apiv2 +from readthedocs.restapi.client import api from readthedocs.builds.constants import LATEST, LATEST_VERBOSE_NAME, STABLE from readthedocs.projects import constants from readthedocs.projects.exceptions import ProjectImportError @@ -358,7 +357,7 @@ def get_builds_url(self): def get_canonical_url(self): if getattr(settings, 'DONT_HIT_DB', True): - return apiv2.project(self.pk).canonical_url().get()['url'] + return api.project(self.pk).canonical_url().get()['url'] return self.get_docs_url() def get_subproject_urls(self): @@ -369,7 +368,7 @@ def get_subproject_urls(self): if getattr(settings, 'DONT_HIT_DB', True): return [(proj['slug'], proj['canonical_url']) for proj in ( - apiv2.project(self.pk) + api.project(self.pk) .subprojects() .get()['subprojects'])] return [(proj.child.slug, proj.child.get_docs_url()) @@ -642,8 +641,7 @@ def get_latest_build(self, finished=True): def api_versions(self): ret = [] - for version_data in api.version.get(project=self.pk, - active=True)['objects']: + for version_data in api.project(self.pk).active_versions.get()['versions']: version = make_api_version(version_data) ret.append(version) return sort_version_aware(ret) diff --git a/readthedocs/projects/tasks.py b/readthedocs/projects/tasks.py index 40bbfb99a75..fe612f8997b 100644 --- a/readthedocs/projects/tasks.py +++ b/readthedocs/projects/tasks.py @@ -50,7 +50,6 @@ from readthedocs.search.utils import process_mkdocs_json from readthedocs.restapi.utils import index_search_request from readthedocs.vcs_support import utils as vcs_support_utils -from readthedocs.api.client import api as api_v1 from readthedocs.restapi.client import api as api_v2 from readthedocs.core.resolver import resolve_path @@ -236,7 +235,7 @@ def run_build(self, docker=False, record=True): @staticmethod def get_project(project_pk): """Get project from API""" - project_data = api_v1.project(project_pk).get() + project_data = api_v2.project(project_pk).get() project = make_api_project(project_data) return project @@ -244,9 +243,9 @@ def get_project(project_pk): def get_version(project, version_pk): """Ensure we're using a sane version""" if version_pk: - version_data = api_v1.version(version_pk).get() + version_data = api_v2.version(version_pk).get() else: - version_data = (api_v1 + version_data = (api_v2 .version(project.slug) .get(slug=LATEST)['objects'][0]) return make_api_version(version_data) @@ -466,7 +465,7 @@ def update_imported_docs(version_pk): :param version_pk: Version id to update """ - version_data = api_v1.version(version_pk).get() + version_data = api_v2.version(version_pk).get() version = make_api_version(version_data) project = version.project ret_dict = {} diff --git a/readthedocs/restapi/views/footer_views.py b/readthedocs/restapi/views/footer_views.py index 9388774ee69..f805ca62d75 100644 --- a/readthedocs/restapi/views/footer_views.py +++ b/readthedocs/restapi/views/footer_views.py @@ -121,8 +121,8 @@ def footer_html(request): 'theme': theme, } - request_context = RequestContext(request, context) - html = template_loader.get_template('restapi/footer.html').render(request_context) + html = template_loader.get_template('restapi/footer.html').render(context, + request) resp_data = { 'html': html, 'version_active': version.active, diff --git a/readthedocs/restapi/views/model_views.py b/readthedocs/restapi/views/model_views.py index 24f15713a8f..0a5757ab591 100644 --- a/readthedocs/restapi/views/model_views.py +++ b/readthedocs/restapi/views/model_views.py @@ -80,6 +80,15 @@ def subprojects(self, request, **kwargs): 'subprojects': ProjectSerializer(children, many=True).data }) + @detail_route() + def active_versions(self, request, **kwargs): + project = get_object_or_404( + Project.objects.api(request.user), pk=kwargs['pk']) + versions = project.versions.filter(active=True) + return Response({ + 'versions': VersionSerializer(versions, many=True).data + }) + @decorators.detail_route(permission_classes=[permissions.IsAdminUser]) def token(self, request, **kwargs): project = get_object_or_404( diff --git a/readthedocs/rtd_tests/mocks/mock_api.py b/readthedocs/rtd_tests/mocks/mock_api.py index acf01178557..ad1cdab065b 100644 --- a/readthedocs/rtd_tests/mocks/mock_api.py +++ b/readthedocs/rtd_tests/mocks/mock_api.py @@ -96,7 +96,5 @@ def mock_api(repo): with mock.patch('readthedocs.restapi.client.api', api_mock), \ mock.patch('readthedocs.api.client.api', api_mock), \ mock.patch('readthedocs.projects.tasks.api_v2', api_mock), \ - mock.patch('readthedocs.projects.tasks.api_v1', api_mock), \ - mock.patch('readthedocs.doc_builder.environments.api_v1', api_mock), \ mock.patch('readthedocs.doc_builder.environments.api_v2', api_mock): yield api_mock diff --git a/readthedocs/settings/dev.py b/readthedocs/settings/dev.py index d711b3a3c09..9755685e183 100644 --- a/readthedocs/settings/dev.py +++ b/readthedocs/settings/dev.py @@ -29,6 +29,7 @@ def DATABASES(self): # noqa SLUMBER_USERNAME = 'test' SLUMBER_PASSWORD = 'test' # noqa: ignore dodgy check SLUMBER_API_HOST = 'http://localhost:8000' + PUBLIC_API_URL = 'http://localhost:8000' BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' diff --git a/readthedocs/vcs_support/base.py b/readthedocs/vcs_support/base.py index be1500f20ed..3416de0ff11 100644 --- a/readthedocs/vcs_support/base.py +++ b/readthedocs/vcs_support/base.py @@ -71,7 +71,10 @@ def run(self, *args): except UnicodeDecodeError: # >:x pass - return (process.returncode, stdout, stderr) + return ( + process.returncode, + stdout.decode('utf-8'), + stderr.decode('utf-8')) @property def env(self):