from rest_framework import permissions
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response
-from rest_framework.serializers import HyperlinkedModelSerializer
-from rest_framework.serializers import HyperlinkedRelatedField
from rest_framework.viewsets import ModelViewSet
-class URLSerializer(HyperlinkedModelSerializer):
- """Just like parent but puts _url for fields"""
-
- def to_representation(self, instance):
- data = super(URLSerializer, self).to_representation(instance)
- for name, field in self.fields.items():
- if isinstance(field, HyperlinkedRelatedField) and name != 'url':
- data[name + '_url'] = data.pop(name)
- return data
-
-
class LinkHeaderPagination(PageNumberPagination):
"""Provide pagination based on rfc5988.
url = self.context['request'].build_absolute_uri(reverse(
'api_1.0:patch-detail', args=[instance.patch.id]))
data['url'] = url + 'checks/%s/' % instance.id
- data['users_url'] = data.pop('user')
return data
class Meta:
import email.parser
+from rest_framework.serializers import HyperlinkedModelSerializer
from rest_framework.serializers import ListSerializer
from rest_framework.serializers import SerializerMethodField
from patchwork.api.base import PatchworkPermission
from patchwork.api.base import PatchworkViewSet
-from patchwork.api.base import URLSerializer
from patchwork.models import Patch
return super(PatchListSerializer, self).to_representation(data)
-class PatchSerializer(URLSerializer):
- mbox_url = SerializerMethodField()
+class PatchSerializer(HyperlinkedModelSerializer):
+ mbox = SerializerMethodField()
state = SerializerMethodField()
class Meta:
def get_state(self, obj):
return obj.state.name
- def get_mbox_url(self, patch):
+ def get_mbox(self, patch):
request = self.context.get('request', None)
return request.build_absolute_uri(patch.get_mbox_url())
def to_representation(self, instance):
data = super(PatchSerializer, self).to_representation(instance)
- data['checks_url'] = data['url'] + 'checks/'
+ data['checks'] = data['url'] + 'checks/'
data['check'] = instance.combined_check_state
headers = data.get('headers')
if headers is not None:
# along with Patchwork; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+from rest_framework.serializers import HyperlinkedModelSerializer
+
from patchwork.api.base import AuthenticatedReadOnly
from patchwork.api.base import PatchworkViewSet
-from patchwork.api.base import URLSerializer
from patchwork.models import Person
-class PersonSerializer(URLSerializer):
+class PersonSerializer(HyperlinkedModelSerializer):
class Meta:
model = Person
fields = ('email', 'name', 'user')
self.assertEqual(1, len(resp.data))
self.assertEqual(user.username, resp.data[0]['name'])
self.assertEqual(user.email, resp.data[0]['email'])
- self.assertIn('users/%d/' % user.id, resp.data[0]['user_url'])
+ self.assertIn('users/%d/' % user.id, resp.data[0]['user'])
def test_unlinked_user(self):
person = create_person()
self.assertEqual(2, len(resp.data))
self.assertEqual(person.name,
resp.data[0]['name'])
- self.assertIsNone(resp.data[0]['user_url'])
+ self.assertIsNone(resp.data[0]['user'])
def test_readonly(self):
user = create_maintainer()
self.assertEqual(status.HTTP_200_OK, resp.status_code)
self.assertEqual(patch.name, resp.data['name'])
self.assertIn(TestProjectAPI.api_url(patch.project.id),
- resp.data['project_url'])
+ resp.data['project'])
self.assertEqual(patch.msgid, resp.data['msgid'])
self.assertEqual(patch.diff, resp.data['diff'])
self.assertIn(TestPersonAPI.api_url(patch.submitter.id),
- resp.data['submitter_url'])
+ resp.data['submitter'])
self.assertEqual(patch.state.name, resp.data['state'])
- self.assertIn(patch.get_mbox_url(), resp.data['mbox_url'])
+ self.assertIn(patch.get_mbox_url(), resp.data['mbox'])
def test_detail_tags(self):
patch = create_patch(