Skip to content
This repository has been archived by the owner on Aug 20, 2018. It is now read-only.

Commit

Permalink
Merge pull request #298 from bobsilverberg/drf3.2
Browse files Browse the repository at this point in the history
Bug 1214322 - Update Django Rest Framework to v3.2
  • Loading branch information
bobsilverberg committed Oct 19, 2015
2 parents 25ecb3b + 0844553 commit 56de420
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 35 deletions.
40 changes: 32 additions & 8 deletions oneanddone/tasks/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,18 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from rest_framework import serializers

from oneanddone.tasks.models import Task, TaskKeyword, TaskAttempt
from django.contrib.auth.models import User

from oneanddone.tasks.models import (Task, TaskAttempt, TaskKeyword,
TaskProject, TaskTeam, TaskType)


class TaskAttemptSerializer(serializers.ModelSerializer):

user = serializers.SlugRelatedField(many=False, slug_field='email')
user = serializers.SlugRelatedField(
many=False,
queryset=User.objects.all(),
slug_field='email')

class Meta:
model = TaskAttempt
Expand All @@ -24,12 +30,30 @@ class Meta:

class TaskSerializer(serializers.ModelSerializer):

taskattempt_set = TaskAttemptSerializer(required=False, many=True)
keyword_set = TaskKeywordSerializer(required=False, many=True)
project = serializers.SlugRelatedField(many=False, slug_field='name')
team = serializers.SlugRelatedField(many=False, slug_field='name')
type = serializers.SlugRelatedField(many=False, slug_field='name')
owner = serializers.SlugRelatedField(many=False, slug_field='email')
taskattempt_set = TaskAttemptSerializer(
many=True,
read_only=True,
required=False)
keyword_set = TaskKeywordSerializer(
many=True,
read_only=True,
required=False)
project = serializers.SlugRelatedField(
many=False,
queryset=TaskProject.objects.all(),
slug_field='name')
team = serializers.SlugRelatedField(
many=False,
queryset=TaskTeam.objects.all(),
slug_field='name')
type = serializers.SlugRelatedField(
many=False,
queryset=TaskType.objects.all(),
slug_field='name')
owner = serializers.SlugRelatedField(
many=False,
queryset=User.objects.all(),
slug_field='email')

class Meta:
model = Task
Expand Down
7 changes: 7 additions & 0 deletions oneanddone/users/serializers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

from django.contrib.auth.models import User

from rest_framework import serializers
Expand All @@ -21,3 +22,9 @@ class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email', 'groups', 'profile')

def create(self, validated_data):
profile_data = validated_data.pop('profile')
user = User.objects.create(**validated_data)
UserProfile.objects.create(user=user, **profile_data)
return user
21 changes: 0 additions & 21 deletions oneanddone/users/tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,27 +35,6 @@ def setUp(self):
self.token = Token.objects.create(user=self.client_user)
self.uri = '/api/v1/user/'

def test_change_user_profile_data(self):
"""
Test Change User Profile Data(name, username and privacy_policy_accepted)
"""
self.client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)

# Create a new user
user_data = {'username': 'testname', 'email': 'test@test.com',
'profile': {'name': 'Test Name', 'username': 'testname', 'privacy_policy_accepted': True}}
response = self.client.post(self.uri, user_data, format='json')

# Change Profile Data(name, username, privacy_policy_accepted)
changed_data = {'username': 'testname', 'email': 'test@test.com',
'profile': {'name': 'Changed Test Name', 'username': 'testname123', 'privacy_policy_accepted': False}}
user_uri = self.uri + user_data['email'] + '/'
response = self.client.patch(user_uri, changed_data, format='json')

self.assert_response_status(response, status.HTTP_200_OK)
response_data = json.loads(response.content)
eq_(response_data['profile'], changed_data['profile'])

def test_create_new_user(self):
"""
Test Create new user with Profile Data(name, username and privacy_policy_accepted)
Expand Down
6 changes: 3 additions & 3 deletions oneanddone/users/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def get_context_data(self, **kwargs):
all_attempts_finished = self.object.user.taskattempt_set.filter(state=TaskAttempt.FINISHED)
paginator = Paginator(all_attempts_finished, 20)
page = self.request.GET.get('page', 1)

try:
attempts_finished = paginator.page(page)
except PageNotAnInteger:
Expand Down Expand Up @@ -157,9 +157,9 @@ def login_failure(self, *args, **kwargs):
return super(Verify, self).login_failure(*args, **kwargs)


class UserDetailAPI(generics.RetrieveUpdateDestroyAPIView):
class UserDetailAPI(generics.RetrieveDestroyAPIView):
"""
API endpoint used to get, update and delete user data.
API endpoint used to get and delete user data.
"""
lookup_field = 'email'
queryset = User.objects.all()
Expand Down
6 changes: 3 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ django-sha2==0.4
# sha256: 9r_SEEjH38lbOWWaPad3ddbbHB96dFgFzMbGE494O20
django-sslify==0.2.7

# sha256: G-VKDAhWZhNTQRlZRnkQnibuG3Pj4uQCBoL8WxWNc5M
# sha256: JeEXgXLGQWwA4JSzsaNo0-Fv58a-A2gHSqyZlAGKg6k
djangorestframework==2.3.10
# sha256: IJxixh3NSkTNC1M30mHCjbasWoUWtaCzJyKI87QHXWA
# sha256: 34H2jOePiMcYbLbS8wzQAW-pa-2ICW5C1XUn5NJcXn4
djangorestframework==3.2.4

# sha256: x9txeBCraWX2bIzwOYqYydjfmC2jm0zX8WKRHriVlvo
docutils==0.12
Expand Down

0 comments on commit 56de420

Please sign in to comment.