diff --git a/readthedocs/doc_builder/backends/mkdocs.py b/readthedocs/doc_builder/backends/mkdocs.py index 31040229bb6..de7037dc47d 100644 --- a/readthedocs/doc_builder/backends/mkdocs.py +++ b/readthedocs/doc_builder/backends/mkdocs.py @@ -100,11 +100,6 @@ def append_conf(self, **__): if 'theme_dir' not in user_config and self.use_theme: user_config['theme_dir'] = TEMPLATE_DIR - yaml.safe_dump( - user_config, - open(os.path.join(self.root_path, 'mkdocs.yml'), 'w') - ) - docs_path = os.path.join(self.root_path, docs_dir) # RTD javascript writing @@ -112,6 +107,16 @@ def append_conf(self, **__): with open(os.path.join(docs_path, 'readthedocs-data.js'), 'w') as f: f.write(rtd_data) + # Use Read the Docs' analytics setup rather than mkdocs' + # This supports using RTD's privacy improvements around analytics + user_config['google_analytics'] = None + + # Write the mkdocs configuration + yaml.safe_dump( + user_config, + open(os.path.join(self.root_path, 'mkdocs.yml'), 'w') + ) + def generate_rtd_data(self, docs_dir, mkdocs_config): """Generate template properties and render readthedocs-data.js.""" # Get the theme name @@ -120,6 +125,12 @@ def generate_rtd_data(self, docs_dir, mkdocs_config): if theme_dir: theme_name = theme_dir.rstrip('/').split('/')[-1] + # Use the analytics code from mkdocs.yml if it isn't set already by Read the Docs + analytics_code = self.version.project.analytics_code + if not analytics_code and mkdocs_config.get('google_analytics'): + # http://www.mkdocs.org/user-guide/configuration/#google_analytics + analytics_code = mkdocs_config['google_analytics'][0] + # Will be available in the JavaScript as READTHEDOCS_DATA. readthedocs_data = { 'project': self.version.project.slug, @@ -134,7 +145,7 @@ def generate_rtd_data(self, docs_dir, mkdocs_config): 'api_host': getattr(settings, 'PUBLIC_API_URL', 'https://readthedocs.org'), 'commit': self.version.project.vcs_repo(self.version.slug).commit, 'global_analytics_code': getattr(settings, 'GLOBAL_ANALYTICS_CODE', 'UA-17997319-1'), - 'user_analytics_code': self.version.project.analytics_code, + 'user_analytics_code': analytics_code, } data_json = json.dumps(readthedocs_data, indent=4) data_ctx = {