Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
9f0fbb7b
Commit
9f0fbb7b
authored
May 01, 2014
by
Matt Drayer
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #31 from edx-solutions/mattdrayer/CLIENT-931
Filter group subgroups by group type
parents
4cf04c91
06f08ea8
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
56 additions
and
1 deletions
+56
-1
lms/djangoapps/api_manager/groups_views.py
+7
-1
lms/djangoapps/api_manager/tests/test_groups_views.py
+49
-0
No files found.
lms/djangoapps/api_manager/groups_views.py
View file @
9f0fbb7b
...
...
@@ -300,7 +300,14 @@ class GroupsGroupsList(APIView):
response_data
=
[]
if
from_group_relationship
:
base_uri
=
_generate_base_uri
(
request
)
group_type
=
request
.
QUERY_PARAMS
.
get
(
'type'
,
None
)
child_groups
=
GroupRelationship
.
objects
.
filter
(
parent_group_id
=
group_id
)
linked_groups
=
from_group_relationship
.
get_linked_group_relationships
()
if
group_type
:
profiles
=
GroupProfile
.
objects
.
filter
(
group_type
=
request
.
GET
[
'type'
])
.
values_list
(
'group_id'
,
flat
=
True
)
if
profiles
:
child_groups
=
child_groups
.
filter
(
group_id__in
=
profiles
)
linked_groups
=
linked_groups
.
filter
(
to_group_relationship__in
=
profiles
)
if
child_groups
:
for
group
in
child_groups
:
response_data
.
append
({
...
...
@@ -308,7 +315,6 @@ class GroupsGroupsList(APIView):
"relationship_type"
:
RELATIONSHIP_TYPES
[
'hierarchical'
],
"uri"
:
'{}/{}'
.
format
(
base_uri
,
group
.
group
.
id
)
})
linked_groups
=
from_group_relationship
.
get_linked_group_relationships
()
if
linked_groups
:
for
group
in
linked_groups
:
response_data
.
append
({
...
...
lms/djangoapps/api_manager/tests/test_groups_views.py
View file @
9f0fbb7b
...
...
@@ -539,6 +539,55 @@ class GroupsApiTests(TestCase):
self
.
assertGreater
(
len
(
relationship
[
'uri'
]),
0
)
self
.
assertEqual
(
relationship_count
,
len
(
group_idlist
))
def
test_group_groups_list_get_with_profile_type
(
self
):
data
=
{
'name'
:
'Bravo Group'
}
bravo_response
=
self
.
do_post
(
self
.
base_groups_uri
,
data
)
self
.
assertEqual
(
bravo_response
.
status_code
,
201
)
bravo_group_id
=
bravo_response
.
data
[
'id'
]
bravo_groups_uri
=
bravo_response
.
data
[
'uri'
]
+
'/groups?type=test_group'
data
=
{
'name'
:
'Charlie Group'
,
'group_type'
:
'test_group'
}
charlie_response
=
self
.
do_post
(
self
.
base_groups_uri
,
data
)
self
.
assertEqual
(
charlie_response
.
status_code
,
201
)
charlie_group_id
=
charlie_response
.
data
[
'id'
]
relationship_type
=
'h'
# Hierarchical
data
=
{
'group_id'
:
charlie_group_id
,
'relationship_type'
:
relationship_type
}
response
=
self
.
do_post
(
bravo_groups_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
data
=
{
'name'
:
'Foxtrot Group'
,
'group_type'
:
'test_group'
}
foxtrot_response
=
self
.
do_post
(
self
.
base_groups_uri
,
data
)
self
.
assertEqual
(
foxtrot_response
.
status_code
,
201
)
foxtrot_group_id
=
foxtrot_response
.
data
[
'id'
]
relationship_type
=
'g'
# Graph
data
=
{
'group_id'
:
foxtrot_group_id
,
'relationship_type'
:
relationship_type
}
response
=
self
.
do_post
(
bravo_groups_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
data
=
{
'name'
:
'Tango Group'
}
tango_response
=
self
.
do_post
(
self
.
base_groups_uri
,
data
)
self
.
assertEqual
(
tango_response
.
status_code
,
201
)
tango_group_id
=
tango_response
.
data
[
'id'
]
tango_uri
=
tango_response
.
data
[
'uri'
]
data
=
{
'group_id'
:
bravo_group_id
,
'relationship_type'
:
relationship_type
}
tango_groups_uri
=
tango_uri
+
'/groups'
response
=
self
.
do_post
(
tango_groups_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
response
=
self
.
do_get
(
bravo_groups_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertGreater
(
len
(
response
.
data
),
0
)
group_idlist
=
(
charlie_group_id
,
foxtrot_group_id
)
relationship_count
=
0
for
relationship
in
response
.
data
:
relationship_count
=
relationship_count
+
1
group_id
=
relationship
[
'id'
]
self
.
assertGreater
(
group_id
,
0
)
self
.
assertFalse
(
bravo_group_id
==
group_id
)
self
.
assertTrue
(
relationship
[
'relationship_type'
]
in
[
"h"
,
"g"
])
self
.
assertGreater
(
len
(
relationship
[
'uri'
]),
0
)
self
.
assertEqual
(
relationship_count
,
len
(
group_idlist
))
def
test_group_groups_list_get_notfound
(
self
):
test_uri
=
self
.
base_groups_uri
+
'/213213123/groups'
response
=
self
.
do_get
(
test_uri
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment