Typo in the rtd docs api lead this to not be implemented.
corrected endpoint and implemented in CLI
Signed-off-by: Aric Gardner <agardner@linuxfoundation.org>
Change-Id: I09aee9e06e1b54c8f6c143762c501286627098d5
.. program-output:: lftools rtd project-version-details --help
+project-version-update
+----------------------
+
+.. program-output:: lftools rtd project-version-update --help
+
+
project-create
--------------
:param kwargs:
:return: {result}
"""
- result = self.get('projects/{}/'.format(project))[1]
+ result = self.get('projects/{}/?expand=active_versions'.format(project))[1]
return result
def project_version_list(self, project):
.format(project, version))[1]
return result
- # This is implemented per their docs, however they do not appear to have
- # it working yet as this always returns a 404
- def project_version_update(self, project, version, active,
- privacy_level):
- """Edit a version.
+ def project_version_update(self, project, version, active):
+ """Edit version activity.
:param project: The project slug
:param version: The version slug
:param active: 'true' or 'false'
- :param privacy_level: 'public' or 'private'
:return: {result}
"""
data = {
- 'active': active,
- 'privacy_level': privacy_level
+ "active": active
}
json_data = json.dumps(data)
- result = self.patch('projects/{}/version/{}/'.format(project, version),
+ result = self.patch('projects/{}/versions/{}/'.format(project, version),
data=json_data)
return result
"""Retrieve project version list."""
r = readthedocs.ReadTheDocs()
data = r.project_version_list(project_slug)
-
for version in data:
log.info(version)
+@click.command(name='project-version-update')
+@click.argument('project-slug')
+@click.argument('version-slug')
+@click.argument('active', type=click.BOOL)
+@click.pass_context
+def project_version_update(ctx, project_slug, version_slug, active):
+ """Update projects active version.
+
+ active must be one of true or false
+ """
+ r = readthedocs.ReadTheDocs()
+ data = r.project_version_update(project_slug, version_slug, active)
+ log.info(data)
+
+
@click.command(name='project-version-details')
@click.argument('project-slug')
@click.argument('version-slug')
def subproject_details(ctx, project_slug, subproject_slug):
"""Retrieve subproject's details."""
r = readthedocs.ReadTheDocs()
- data = r.subproject_details(project_slug, subproject_slug)
+ data = r.subproject_details(project_slug, subproject_slug, "expand=active_versions")
log.info(pformat(data))
rtd.add_command(project_list)
rtd.add_command(project_details)
rtd.add_command(project_version_list)
+rtd.add_command(project_version_update)
rtd.add_command(project_version_details)
rtd.add_command(project_create)
rtd.add_command(project_build_list)
--- /dev/null
+---
+features:
+ - |
+ Enable project_version_update API method.
+ Allows enabling or disabling a project version (visibility in the
+ U/I) via an api call.
@responses.activate
def test_project_version_update():
data = {
- 'active': 'true',
- 'privacy_level': 'public'
+ 'active': True
}
responses.add(responses.PATCH,
- url='https://readthedocs.org/api/v3/projects/TestProject1/version/latest/', # noqa
+ url='https://readthedocs.org/api/v3/projects/TestProject1/versions/latest/', # noqa
json=data, status=204)
assert rtd.project_version_update('TestProject1', 'latest',
- 'true', 'public')
+ 'True')
@responses.activate