submitter = PersonSerializer(read_only=True)
mbox = SerializerMethodField()
series = SeriesSerializer(many=True, read_only=True)
+ comments = SerializerMethodField()
def get_mbox(self, instance):
request = self.context.get('request')
return request.build_absolute_uri(instance.get_mbox_url())
+ def get_comments(self, cover):
+ return self.context.get('request').build_absolute_uri(
+ reverse('api-comment-list', kwargs={'pk': cover.id}))
+
class Meta:
model = CoverLetter
fields = ('id', 'url', 'project', 'msgid', 'date', 'name', 'submitter',
- 'mbox', 'series')
+ 'mbox', 'series', 'comments')
read_only_fields = fields
versioned_fields = {
- '1.1': ('mbox', ),
+ '1.1': ('mbox', 'comments'),
}
extra_kwargs = {
'url': {'view_name': 'api-cover-detail'},
class CoverLetterDetailSerializer(CoverLetterListSerializer):
headers = SerializerMethodField()
- comments = SerializerMethodField()
-
- def get_comments(self, cover):
- return self.context.get('request').build_absolute_uri(
- reverse('api-comment-list', kwargs={'pk': cover.id}))
def get_headers(self, instance):
headers = {}
class Meta:
model = CoverLetter
fields = CoverLetterListSerializer.Meta.fields + (
- 'headers', 'content', 'comments')
+ 'headers', 'content')
read_only_fields = fields
extra_kwargs = CoverLetterListSerializer.Meta.extra_kwargs
- versioned_fields = {
- '1.1': ('mbox', 'comments'),
- }
+ versioned_fields = CoverLetterListSerializer.Meta.versioned_fields
class CoverLetterList(ListAPIView):
delegate = UserSerializer()
mbox = SerializerMethodField()
series = SeriesSerializer(many=True, read_only=True)
+ comments = SerializerMethodField()
check = SerializerMethodField()
checks = SerializerMethodField()
tags = SerializerMethodField()
request = self.context.get('request')
return request.build_absolute_uri(instance.get_mbox_url())
- def get_tags(self, instance):
- # TODO(stephenfin): Make tags performant, possibly by reworking the
- # model
- return {}
+ def get_comments(self, patch):
+ return self.context.get('request').build_absolute_uri(
+ reverse('api-comment-list', kwargs={'pk': patch.id}))
def get_check(self, instance):
return instance.combined_check_state
return self.context.get('request').build_absolute_uri(
reverse('api-check-list', kwargs={'patch_id': instance.id}))
+ def get_tags(self, instance):
+ # TODO(stephenfin): Make tags performant, possibly by reworking the
+ # model
+ return {}
+
class Meta:
model = Patch
fields = ('id', 'url', 'project', 'msgid', 'date', 'name',
'commit_ref', 'pull_url', 'state', 'archived', 'hash',
- 'submitter', 'delegate', 'mbox', 'series', 'check', 'checks',
- 'tags')
+ 'submitter', 'delegate', 'mbox', 'series', 'comments',
+ 'check', 'checks', 'tags')
read_only_fields = ('project', 'msgid', 'date', 'name', 'hash',
- 'submitter', 'mbox', 'mbox', 'series', 'check',
- 'checks', 'tags')
+ 'submitter', 'mbox', 'mbox', 'series', 'comments',
+ 'check', 'checks', 'tags')
+ versioned_fields = {
+ '1.1': ('comments', ),
+ }
extra_kwargs = {
'url': {'view_name': 'api-patch-detail'},
}
headers = SerializerMethodField()
prefixes = SerializerMethodField()
- comments = SerializerMethodField()
-
- def get_comments(self, patch):
- return self.context.get('request').build_absolute_uri(
- reverse('api-comment-list', kwargs={'pk': patch.id}))
def get_headers(self, patch):
headers = {}
class Meta:
model = Patch
fields = PatchListSerializer.Meta.fields + (
- 'headers', 'content', 'diff', 'prefixes', 'comments')
+ 'headers', 'content', 'diff', 'prefixes')
read_only_fields = PatchListSerializer.Meta.read_only_fields + (
- 'headers', 'content', 'diff', 'prefixes', 'comments')
+ 'headers', 'content', 'diff', 'prefixes')
+ versioned_fields = PatchListSerializer.Meta.versioned_fields
extra_kwargs = PatchListSerializer.Meta.extra_kwargs
- versioned_fields = {
- '1.1': ('comments', ),
- }
class PatchList(ListAPIView):
self.assertEqual(cover_obj.id, cover_json['id'])
self.assertEqual(cover_obj.name, cover_json['name'])
self.assertIn(cover_obj.get_mbox_url(), cover_json['mbox'])
+ self.assertIn('comments', cover_json)
# nested fields
for key, value in parsed_headers.items():
self.assertIn(value, resp.data['headers'][key])
- # test comments
- resp = self.client.get(self.api_url(cover_obj.id))
- self.assertIn('comments', resp.data)
-
# test old version of API
resp = self.client.get(self.api_url(cover_obj.id, version='1.0'))
self.assertNotIn('comments', resp.data)
self.assertEqual(patch_obj.msgid, patch_json['msgid'])
self.assertEqual(patch_obj.state.slug, patch_json['state'])
self.assertIn(patch_obj.get_mbox_url(), patch_json['mbox'])
+ self.assertIn('comments', patch_json)
# nested fields
self.assertEqual(patch.diff, resp.data['diff'])
self.assertEqual(0, len(resp.data['tags']))
- # test comments
- resp = self.client.get(self.api_url(patch.id))
- self.assertIn('comments', resp.data)
-
# test old version of API
resp = self.client.get(self.api_url(item=patch.id, version='1.0'))
self.assertNotIn('comments', resp.data)