Skip to content

Commit

Permalink
Merge pull request openedx#95 from edx-solutions/ziafazal/add-orgs-to…
Browse files Browse the repository at this point in the history
…-users-api

Ziafazal/add orgs to users api
  • Loading branch information
mattdrayer committed Jun 24, 2014
2 parents 196375f + 94fe458 commit 088696c
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 3 deletions.
11 changes: 11 additions & 0 deletions lms/djangoapps/api_manager/organizations/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,14 @@ class Meta:
fields = ('url', 'id', 'name', 'display_name', 'contact_name', 'contact_email', 'contact_phone', 'workgroups',
'users', 'groups', 'created', 'modified')
read_only = ('url', 'id', 'created')


class BasicOrganizationSerializer(serializers.ModelSerializer):
""" Serializer for Basic Organization fields """
url = serializers.HyperlinkedIdentityField(view_name='organization-detail')

class Meta:
""" Serializer/field specification """
model = Organization
fields = ('url', 'id', 'name', 'created', 'display_name')
read_only = ('url', 'id', 'created',)
5 changes: 4 additions & 1 deletion lms/djangoapps/api_manager/users/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@

from api_manager.models import APIUser
from rest_framework import serializers
from api_manager.organizations.serializers import BasicOrganizationSerializer


class UserSerializer(serializers.ModelSerializer):
""" Serializer for User model interactions """
organizations = BasicOrganizationSerializer(many=True, required=False)

class Meta:
""" Serializer/field specification """
model = APIUser
fields = ("id", "email", "username", "first_name", "last_name")
fields = ("id", "email", "username", "first_name", "last_name", "organizations")
read_only_fields = ("id", "email", "username")
22 changes: 20 additions & 2 deletions lms/djangoapps/api_manager/users/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ def setUp(self):
self.test_first_name = str(uuid.uuid4())
self.test_last_name = str(uuid.uuid4())
self.test_city = str(uuid.uuid4())
self.org_base_uri = '/api/organizations/'

self.test_course_data = '<html>{}</html>'.format(str(uuid.uuid4()))
self.course = CourseFactory.create()
Expand Down Expand Up @@ -115,7 +116,7 @@ def _create_test_user(self):

def test_user_list_get(self):
test_uri = '/api/users'

users = []
# create a 25 new users
for i in xrange(1, 26):
data = {
Expand All @@ -128,6 +129,19 @@ def test_user_list_get(self):

response = self.do_post(test_uri, data)
self.assertEqual(response.status_code, 201)
users.append(response.data['id'])

# create organizations and add users to them
total_orgs = 30
for i in xrange(0, total_orgs):
data = {
'name': '{} {}'.format('Org', i),
'display_name': '{} {}'.format('Org display name', i),
'users': users
}
response = self.do_post(self.org_base_uri, data)
self.assertEqual(response.status_code, 201)

# fetch data without any filters applied
response = self.do_get('{}?page=1'.format(test_uri))
self.assertEqual(response.status_code, 400)
Expand All @@ -138,6 +152,10 @@ def test_user_list_get(self):
response = self.do_get('{}?ids={}'.format(test_uri, '3'))
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.data['results']), 1)
self.assertEqual(len(response.data['results'][0]['organizations']), total_orgs)
self.assertIsNotNone(response.data['results'][0]['organizations'][0]['name'])
self.assertIsNotNone(response.data['results'][0]['organizations'][0]['id'])
self.assertIsNotNone(response.data['results'][0]['organizations'][0]['url'])
# fetch user data by multiple ids
response = self.do_get('{}?page_size=5&ids={}'.format(test_uri, '2,3,7,11,6,21,34'))
self.assertEqual(response.status_code, 200)
Expand Down Expand Up @@ -961,7 +979,7 @@ def test_user_organizations_list(self):
'display_name': 'Org display name' + str(i),
'users': [user_id]
}
response = self.do_post('/api/organizations/', data)
response = self.do_post(self.org_base_uri, data)
self.assertEqual(response.status_code, 201)

test_uri = '/api/users/{}/organizations/'.format(user_id)
Expand Down

0 comments on commit 088696c

Please sign in to comment.