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
3de3238b
Commit
3de3238b
authored
Apr 21, 2014
by
Chris Dodge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wip
parent
75942770
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
41 additions
and
1 deletions
+41
-1
lms/djangoapps/api_manager/groups_views.py
+25
-1
lms/djangoapps/api_manager/models.py
+16
-0
lms/djangoapps/api_manager/tests/test_groups_views.py
+0
-0
No files found.
lms/djangoapps/api_manager/groups_views.py
View file @
3de3238b
""" API implementation for group-oriented interactions. """
""" API implementation for group-oriented interactions. """
import
uuid
import
uuid
import
json
from
django.contrib.auth.models
import
Group
,
User
from
django.contrib.auth.models
import
Group
,
User
from
django.core.exceptions
import
ObjectDoesNotExist
from
django.core.exceptions
import
ObjectDoesNotExist
...
@@ -10,7 +11,7 @@ from rest_framework.decorators import api_view, permission_classes
...
@@ -10,7 +11,7 @@ from rest_framework.decorators import api_view, permission_classes
from
rest_framework.response
import
Response
from
rest_framework.response
import
Response
from
api_manager.permissions
import
ApiKeyHeaderPermission
from
api_manager.permissions
import
ApiKeyHeaderPermission
from
api_manager.models
import
GroupRelationship
,
CourseGroupRelationship
from
api_manager.models
import
GroupRelationship
,
CourseGroupRelationship
,
GroupProfile
from
xmodule.modulestore.django
import
modulestore
from
xmodule.modulestore.django
import
modulestore
from
xmodule.modulestore
import
Location
,
InvalidLocationError
from
xmodule.modulestore
import
Location
,
InvalidLocationError
...
@@ -43,13 +44,23 @@ def group_list(request):
...
@@ -43,13 +44,23 @@ def group_list(request):
# Group name must be unique, but we need to support dupes
# Group name must be unique, but we need to support dupes
group
=
Group
.
objects
.
create
(
name
=
str
(
uuid
.
uuid4
()))
group
=
Group
.
objects
.
create
(
name
=
str
(
uuid
.
uuid4
()))
original_group_name
=
request
.
DATA
[
'name'
]
original_group_name
=
request
.
DATA
[
'name'
]
group
.
name
=
'{:04d}: {}'
.
format
(
group
.
id
,
original_group_name
)
group
.
name
=
'{:04d}: {}'
.
format
(
group
.
id
,
original_group_name
)
group
.
record_active
=
True
group
.
record_active
=
True
group
.
record_date_created
=
timezone
.
now
()
group
.
record_date_created
=
timezone
.
now
()
group
.
record_date_modified
=
timezone
.
now
()
group
.
record_date_modified
=
timezone
.
now
()
group
.
save
()
group
.
save
()
# Relationship model also allows us to use duplicate names
# Relationship model also allows us to use duplicate names
GroupRelationship
.
objects
.
create
(
name
=
original_group_name
,
group_id
=
group
.
id
,
parent_group
=
None
)
GroupRelationship
.
objects
.
create
(
name
=
original_group_name
,
group_id
=
group
.
id
,
parent_group
=
None
)
# allow for optional meta information about groups, this will end up in the GroupProfile table
group_type
=
request
.
DATA
.
get
(
'group_type'
)
data
=
request
.
DATA
.
get
(
'data'
)
if
group_type
or
data
:
profile
,
_
=
GroupProfile
.
objects
.
get_or_create
(
group_id
=
group
.
id
,
group_type
=
group_type
,
data
=
data
)
response_data
=
{
'id'
:
group
.
id
,
'name'
:
original_group_name
}
response_data
=
{
'id'
:
group
.
id
,
'name'
:
original_group_name
}
base_uri
=
_generate_base_uri
(
request
)
base_uri
=
_generate_base_uri
(
request
)
response_data
[
'uri'
]
=
'{}/{}'
.
format
(
base_uri
,
group
.
id
)
response_data
[
'uri'
]
=
'{}/{}'
.
format
(
base_uri
,
group
.
id
)
...
@@ -80,6 +91,19 @@ def group_detail(request, group_id):
...
@@ -80,6 +91,19 @@ def group_detail(request, group_id):
response_data
[
'resources'
]
.
append
({
'uri'
:
resource_uri
})
response_data
[
'resources'
]
.
append
({
'uri'
:
resource_uri
})
resource_uri
=
'{}/groups'
.
format
(
base_uri
)
resource_uri
=
'{}/groups'
.
format
(
base_uri
)
response_data
[
'resources'
]
.
append
({
'uri'
:
resource_uri
})
response_data
[
'resources'
]
.
append
({
'uri'
:
resource_uri
})
# see if there is an (optional) GroupProfile
try
:
existing_group_profile
=
GroupProfile
.
objects
.
get
(
group_id
=
group_id
)
if
existing_group_profile
.
group_type
:
response_data
[
'group_type'
]
=
existing_group_profile
.
group_type
data
=
existing_group_profile
.
data
if
data
:
print
'******* data = {0}'
.
format
(
data
)
response_data
[
'data'
]
=
json
.
loads
(
data
)
except
ObjectDoesNotExist
:
pass
response_status
=
status
.
HTTP_200_OK
response_status
=
status
.
HTTP_200_OK
else
:
else
:
response_status
=
status
.
HTTP_404_NOT_FOUND
response_status
=
status
.
HTTP_404_NOT_FOUND
...
...
lms/djangoapps/api_manager/models.py
View file @
3de3238b
...
@@ -92,3 +92,19 @@ class CourseGroupRelationship(models.Model):
...
@@ -92,3 +92,19 @@ class CourseGroupRelationship(models.Model):
"""
"""
course_id
=
models
.
CharField
(
max_length
=
255
,
db_index
=
True
)
course_id
=
models
.
CharField
(
max_length
=
255
,
db_index
=
True
)
group
=
models
.
ForeignKey
(
Group
,
db_index
=
True
)
group
=
models
.
ForeignKey
(
Group
,
db_index
=
True
)
class
GroupProfile
(
models
.
Model
):
"""
This table will provide additional tables regarding groups. This has a foreign key to
the auth_groups table
"""
class
Meta
:
db_table
=
"auth_groupprofile"
group
=
models
.
ForeignKey
(
Group
,
db_index
=
True
)
group_type
=
models
.
CharField
(
null
=
True
,
max_length
=
32
,
db_index
=
True
)
data
=
models
.
TextField
(
blank
=
True
)
# JSON dictionary for generic key/value pairs
lms/djangoapps/api_manager/tests/test_groups_views.py
View file @
3de3238b
This diff is collapsed.
Click to expand it.
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