Skip to content

Commit

Permalink
Merge branch 'release/0.6.3'
Browse files Browse the repository at this point in the history
  • Loading branch information
pavlov99 committed Feb 10, 2015
2 parents ca6ac75 + 4a477b8 commit e7c692c
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 5 deletions.
2 changes: 1 addition & 1 deletion jsonapi/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
""" JSON:API realization."""
__version = (0, 6, 2)
__version = (0, 6, 3)

__version__ = version = '.'.join(map(str, __version))
__project__ = PROJECT = __name__
7 changes: 5 additions & 2 deletions jsonapi/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,18 +149,21 @@ def dump_documents(cls, resource, model_instances, fields_own=None,
for field in fields_to_one:
related_model_info = resource.Meta.api.model_inspector.models[
field.related_model]
related_resource = cls.Meta.api.resource_map[related_model_info.name]
related_resource = cls.Meta.api.resource_map[
related_model_info.name]
data["linked"][related_resource.Meta.name_plural] = [
related_resource.dump_document(
getattr(m, field.name),
related_model_info.fields_own
) for m in model_instances
if getattr(m, field.name) is not None
]

for field in fields_to_many:
related_model_info = resource.Meta.api.model_inspector.models[
field.related_model]
related_resource = cls.Meta.api.resource_map[related_model_info.name]
related_resource = cls.Meta.api.resource_map[
related_model_info.name]
data["linked"][related_resource.Meta.name_plural] = [
related_resource.dump_document(
x,
Expand Down
2 changes: 1 addition & 1 deletion tests/testapp/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class Author(models.Model):
class Post(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author)
user = models.ForeignKey(User)
user = models.ForeignKey(User, null=True, blank=True)

@property
def title_uppercased(self):
Expand Down
45 changes: 44 additions & 1 deletion tests/testapp/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -371,9 +371,52 @@ def test_get_include(self):
}
self.assertEqual(data, expected_data)

def test_get_include_null(self):
""" Test include optional foreign key field."""
post1 = mixer.blend("testapp.post")
post2 = mixer.blend("testapp.post", user__username="username")
user = post2.user
response = self.client.get(
'/api/post?include=user',
content_type='application/vnd.api+json',
HTTP_ACCEPT='application/vnd.api+json'
)
self.assertEqual(response.status_code, 200)
data = json.loads(response.content.decode("utf-8"))
expected_data = {
"posts": [{
"id": post.id,
"title": post.title,
"links": {
"author": post.author_id,
"user": post.user_id,
}
} for post in [post1, post2]],
"linked": {
"users": [{
"id": user.id,
"date_joined": user.date_joined.isoformat(),
"email": user.email,
'first_name': user.first_name,
'is_active': user.is_active,
'is_staff': user.is_staff,
'is_superuser': user.is_superuser,
'last_login': user.last_login.isoformat(),
'last_name': user.last_name,
'password': user.password,
'username': user.username,
}]
},
'links': {
'posts.author': 'http://testserver/api/author/{posts.author}',
'posts.user': 'http://testserver/api/user/{posts.user}'
},
}
self.maxDiff = None
self.assertEqual(data, expected_data)

def test_get_include_many(self):
comment = mixer.blend("testapp.comment")
post = comment.post
response = self.client.get(
'/api/post?include=comments',
content_type='application/vnd.api+json',
Expand Down

0 comments on commit e7c692c

Please sign in to comment.