Skip to content

Commit 9a19a0e

Browse files
committed
More attributes when importing a Project
1 parent 1896e33 commit 9a19a0e

File tree

3 files changed

+35
-4
lines changed

3 files changed

+35
-4
lines changed

readthedocs/api/v3/serializers.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,14 +394,16 @@ class ProjectCreateSerializer(FlexFieldsModelSerializer):
394394
"""Serializer used to Import a Project."""
395395

396396
repository = RepositorySerializer(source='*')
397+
homepage = serializers.URLField(source='project_url', required=False)
397398

398399
class Meta:
399400
model = Project
400401
fields = (
401402
'name',
402403
'language',
404+
'programming_language',
403405
'repository',
404-
'project_url', # project_homepage
406+
'homepage',
405407
)
406408

407409

readthedocs/api/v3/tests/responses/projects-list_POST.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
"name": "Public"
2424
},
2525
"programming_language": {
26-
"code": "words",
27-
"name": "Only Words"
26+
"code": "py",
27+
"name": "Python"
2828
},
2929
"repository": {
3030
"type": "git",
@@ -36,7 +36,7 @@
3636
"translation_of": null,
3737
"urls": {
3838
"documentation": "http://readthedocs.org/docs/test-project/en/latest/",
39-
"project_homepage": null
39+
"project_homepage": "http://template.readthedocs.io/"
4040
},
4141
"users": [
4242
{

readthedocs/api/v3/tests/test_projects.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,8 @@ def test_import_project(self):
540540
'url': 'https://github.com/rtfd/template',
541541
'type': 'git',
542542
},
543+
'homepage': 'http://template.readthedocs.io/',
544+
'programming_language': 'py',
543545
}
544546

545547
self.client.credentials(HTTP_AUTHORIZATION=f'Token {self.token.key}')
@@ -554,6 +556,9 @@ def test_import_project(self):
554556
self.assertEqual(project.slug, 'test-project')
555557
self.assertEqual(project.repo, 'https://github.com/rtfd/template')
556558
self.assertEqual(project.language, 'en')
559+
self.assertEqual(project.programming_language, 'py')
560+
self.assertEqual(project.privacy_level, 'public')
561+
self.assertEqual(project.project_url, 'http://template.readthedocs.io/')
557562
self.assertIn(self.me, project.users.all())
558563
self.assertEqual(project.builds.count(), 1)
559564

@@ -565,3 +570,27 @@ def test_import_project(self):
565570
response_json,
566571
self._get_response_dict('projects-list_POST'),
567572
)
573+
574+
def test_import_project_with_extra_fields(self):
575+
data = {
576+
'name': 'Test Project',
577+
'repository': {
578+
'url': 'https://github.com/rtfd/template',
579+
'type': 'git',
580+
},
581+
'default_version': 'v1.0', # ignored: field not allowed
582+
}
583+
584+
self.client.credentials(HTTP_AUTHORIZATION=f'Token {self.token.key}')
585+
response = self.client.post(reverse('projects-list'), data)
586+
self.assertEqual(response.status_code, 201)
587+
588+
query = Project.objects.filter(slug='test-project')
589+
self.assertTrue(query.exists())
590+
591+
project = query.first()
592+
self.assertEqual(project.name, 'Test Project')
593+
self.assertEqual(project.slug, 'test-project')
594+
self.assertEqual(project.repo, 'https://github.com/rtfd/template')
595+
self.assertNotEqual(project.default_version, 'v1.0')
596+
self.assertIn(self.me, project.users.all())

0 commit comments

Comments
 (0)