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
0e1b3999
Commit
0e1b3999
authored
May 06, 2013
by
Arthur Barrett
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add limit and offset params to search endpoint
parent
ceefdf01
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
32 additions
and
8 deletions
+32
-8
lms/djangoapps/notes/api.py
+32
-8
No files found.
lms/djangoapps/notes/api.py
View file @
0e1b3999
from
django.contrib.auth.decorators
import
login_required
from
django.http
import
HttpResponse
,
Http404
from
django.http
import
HttpResponse
,
Http404
from
django.core.exceptions
import
ValidationError
from
django.core.exceptions
import
ValidationError
from
notes.models
import
Note
from
notes.models
import
Note
...
@@ -6,6 +7,10 @@ import logging
...
@@ -6,6 +7,10 @@ import logging
log
=
logging
.
getLogger
(
__name__
)
log
=
logging
.
getLogger
(
__name__
)
API_SETTINGS
=
{
'MAX_NOTE_LIMIT'
:
100
# Max number of annotations retrieved per set
}
#----------------------------------------------------------------------#
#----------------------------------------------------------------------#
# API requests are routed through api_request() using the resource map.
# API requests are routed through api_request() using the resource map.
...
@@ -21,6 +26,7 @@ def api_resource_map():
...
@@ -21,6 +26,7 @@ def api_resource_map():
'search'
:
{
GET
:
search
}
'search'
:
{
GET
:
search
}
}
}
@login_required
def
api_request
(
request
,
course_id
,
**
kwargs
):
def
api_request
(
request
,
course_id
,
**
kwargs
):
''' Routes API requests to the appropriate action method and formats the results
''' Routes API requests to the appropriate action method and formats the results
(defaults to JSON).
(defaults to JSON).
...
@@ -54,8 +60,7 @@ def api_request(request, course_id, **kwargs):
...
@@ -54,8 +60,7 @@ def api_request(request, course_id, **kwargs):
response
[
'Content-type'
]
=
formatted
[
0
]
response
[
'Content-type'
]
=
formatted
[
0
]
response
.
content
=
formatted
[
1
]
response
.
content
=
formatted
[
1
]
log
.
debug
(
"API response:"
)
log
.
debug
(
"API response: {0}"
.
format
(
formatted
))
log
.
debug
(
response
)
return
response
return
response
...
@@ -74,7 +79,9 @@ def api_format(request, response, data):
...
@@ -74,7 +79,9 @@ def api_format(request, response, data):
# Exposed API actions via the resource map.
# Exposed API actions via the resource map.
def
index
(
request
,
course_id
):
def
index
(
request
,
course_id
):
notes
=
Note
.
objects
.
filter
(
course_id
=
course_id
,
user
=
request
.
user
)
MAX_LIMIT
=
API_SETTINGS
.
get
(
'MAX_NOTE_LIMIT'
)
notes
=
Note
.
objects
.
order_by
(
'id'
)
.
filter
(
course_id
=
course_id
,
user
=
request
.
user
)[:
MAX_LIMIT
]
return
[
HttpResponse
(),
[
note
.
as_dict
()
for
note
in
notes
]]
return
[
HttpResponse
(),
[
note
.
as_dict
()
for
note
in
notes
]]
def
create
(
request
,
course_id
):
def
create
(
request
,
course_id
):
...
@@ -139,17 +146,34 @@ def delete(request, course_id, note_id):
...
@@ -139,17 +146,34 @@ def delete(request, course_id, note_id):
return
[
HttpResponse
(
''
,
status
=
204
),
None
]
return
[
HttpResponse
(
''
,
status
=
204
),
None
]
def
search
(
request
,
course_id
):
def
search
(
request
,
course_id
):
MAX_LIMIT
=
API_SETTINGS
.
get
(
'MAX_NOTE_LIMIT'
)
# search parameters
limit
=
request
.
GET
.
get
(
'limit'
)
limit
=
request
.
GET
.
get
(
'limit'
)
offset
=
request
.
GET
.
get
(
'offset'
)
uri
=
request
.
GET
.
get
(
'uri'
)
uri
=
request
.
GET
.
get
(
'uri'
)
filters
=
{
'course_id'
:
course_id
,
'user'
:
request
.
user
}
# validate search parameters
if
limit
is
not
None
and
limit
.
isdigit
():
limit
=
int
(
limit
)
if
limit
==
0
or
limit
>
MAX_LIMIT
:
limit
=
MAX_LIMIT
else
:
limit
=
MAX_LIMIT
if
offset
is
not
None
and
offset
.
isdigit
():
offset
=
int
(
offset
)
else
:
offset
=
0
# search filters
filters
=
{
'course_id'
:
course_id
,
'user'
:
request
.
user
}
if
uri
is
not
None
:
if
uri
is
not
None
:
filters
[
'uri'
]
=
uri
filters
[
'uri'
]
=
uri
notes
=
Note
.
objects
.
filter
(
**
filters
)
start
=
offset
#if limit is not None and limit > 0:
end
=
offset
+
limit
#notes = notes[:limit]
notes
=
Note
.
objects
.
order_by
(
'id'
)
.
filter
(
**
filters
)[
start
:
end
]
result
=
{
'rows'
:
[
note
.
as_dict
()
for
note
in
notes
]}
result
=
{
'rows'
:
[
note
.
as_dict
()
for
note
in
notes
]}
return
[
HttpResponse
(),
result
]
return
[
HttpResponse
(),
result
]
...
...
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