Integrate Embed API where we expect it. (#3356)

* Integrate Embed where we expect it.

* Re-enable ImportedFile creation

* Filter files to only HTML.

* Fix tests

* Update media files
more-gsoc
Eric Holscher 2017-12-12 14:10:05 -08:00 committed by Anthony
parent d4c21b95e6
commit 1a053bdf35
8 changed files with 28 additions and 18 deletions

View File

@ -110,7 +110,7 @@ function EmbedView (config) {
self.api_example = ko.observable(null);
self.show_help = function () {
var embed = new rtd.Embed();
var embed = new rtd.Embed(self.config);
embed.section(
'docs', 'latest', 'features/embed', 'Content Embedding',
_show_modal
@ -118,7 +118,7 @@ function EmbedView (config) {
};
self.show_embed = function () {
var embed = new rtd.Embed();
var embed = new rtd.Embed(self.config);
_show_modal(self.response());
};
}

File diff suppressed because one or more lines are too long

View File

@ -786,20 +786,17 @@ def fileify(version_pk, commit):
"""
Create ImportedFile objects for all of a version's files.
This is a prereq for indexing the docs for search.
It also causes celery-haystack to kick off an index of the file.
This is so we have an idea of what files we have in the database.
"""
version = Version.objects.get(pk=version_pk)
project = version.project
if not project.cdn_enabled:
return
if not commit:
log.info(LOG_TEMPLATE
.format(project=project.slug, version=version.slug,
msg=('Imported File not being built because no commit '
'information')))
return
path = project.rtd_build_path(version.slug)
if path:
@ -848,12 +845,12 @@ def _manage_imported_files(version, path, commit):
version=version
).exclude(commit=commit).delete()
# Purge Cache
changed_files = [resolve_path(
version.project, filename=fname, version_slug=version.slug,
) for fname in changed_files]
cdn_ids = getattr(settings, 'CDN_IDS', None)
if cdn_ids:
if version.project.slug in cdn_ids:
changed_files = [resolve_path(
version.project, filename=fname, version_slug=version.slug,
) for fname in changed_files]
purge(cdn_ids[version.project.slug], changed_files)

View File

@ -45,6 +45,11 @@ urlpatterns = [
public.project_embed,
name='project_embed'),
# url((r'^(?P<project_slug>{project_slug})/tools/analytics/$'
# .format(**pattern_opts)),
# public.project_analytics,
# name='project_analytics'),
url(r'^(?P<project_slug>{project_slug})/search/$'.format(**pattern_opts),
public.elastic_project_search,
name='elastic_project_search'),

View File

@ -420,7 +420,7 @@ def project_embed(request, project_slug):
project = get_object_or_404(Project.objects.protected(request.user),
slug=project_slug)
version = project.versions.get(slug=LATEST)
files = version.imported_files.order_by('path')
files = version.imported_files.filter(name__endswith='.html').order_by('path')
return render_to_response(
'projects/project_embed.html',
@ -428,7 +428,7 @@ def project_embed(request, project_slug):
'project': project,
'files': files,
'settings': {
'GROK_API_HOST': settings.GROK_API_HOST,
'PUBLIC_API_URL': settings.PUBLIC_API_URL,
'URI': request.build_absolute_uri(location='/').rstrip('/')
}
},

View File

@ -9,10 +9,10 @@ import os
from readthedocs.core.settings import Settings
try:
import readthedocsext.donate # noqa
donate = True
import readthedocsext # noqa
ext = True
except ImportError:
donate = False
ext = False
_ = gettext = lambda s: s
@ -113,9 +113,10 @@ class CommunityBaseSettings(Settings):
'allauth.socialaccount.providers.bitbucket',
'allauth.socialaccount.providers.bitbucket_oauth2',
]
if donate:
if ext:
apps.append('django_countries')
apps.append('readthedocsext.donate')
apps.append('readthedocsext.embed')
return apps
TEMPLATE_LOADERS = (

View File

@ -22,7 +22,7 @@ Tools
var project_tools = require('projects/tools');
$(document).ready(function () {
project_tools.init_embed({
api_host: '{{ settings.GROK_API_HOST }}',
api_host: '{{ settings.PUBLIC_API_URL }}',
uri: '{{ settings.URI }}',
project: '{{ project.slug }}'
});

View File

@ -89,6 +89,13 @@ if 'readthedocsext.donate' in settings.INSTALLED_APPS:
groups.append([
url(r'^sustainability/', include('readthedocsext.donate.urls')),
])
if 'readthedocsext.embed' in settings.INSTALLED_APPS:
api_urls.insert(
0,
url(r'^api/v1/embed/', include('readthedocsext.embed.urls'))
)
if not getattr(settings, 'USE_SUBDOMAIN', False) or settings.DEBUG:
groups.insert(0, docs_urls)
if getattr(settings, 'ALLOW_ADMIN', True):