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
d9817117
Commit
d9817117
authored
May 12, 2014
by
Greg Price
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3647 from edx/gprice/comment-client-allow-extra-fields
Allow extra fields returned from comments service
parents
b00fa60b
57f14bde
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
56 additions
and
44 deletions
+56
-44
lms/djangoapps/django_comment_client/base/views.py
+22
-20
lms/lib/comment_client/comment.py
+4
-4
lms/lib/comment_client/models.py
+16
-6
lms/lib/comment_client/thread.py
+9
-9
lms/lib/comment_client/user.py
+5
-5
No files found.
lms/djangoapps/django_comment_client/base/views.py
View file @
d9817117
...
...
@@ -88,14 +88,15 @@ def create_thread(request, course_id, commentable_id):
if
'body'
not
in
post
or
not
post
[
'body'
]
.
strip
():
return
JsonError
(
_
(
"Body can't be empty"
))
thread
=
cc
.
Thread
(
**
extract
(
post
,
[
'body'
,
'title'
]))
thread
.
update_attributes
(
**
{
'anonymous'
:
anonymous
,
'anonymous_to_peers'
:
anonymous_to_peers
,
'commentable_id'
:
commentable_id
,
'course_id'
:
course_id
,
'user_id'
:
request
.
user
.
id
,
})
thread
=
cc
.
Thread
(
anonymous
=
anonymous
,
anonymous_to_peers
=
anonymous_to_peers
,
commentable_id
=
commentable_id
,
course_id
=
course_id
,
user_id
=
request
.
user
.
id
,
body
=
post
[
"body"
],
title
=
post
[
"title"
]
)
user
=
cc
.
User
.
from_django_user
(
request
.
user
)
...
...
@@ -118,7 +119,7 @@ def create_thread(request, course_id, commentable_id):
group_id
=
user_group_id
if
group_id
:
thread
.
update_attributes
(
group_id
=
group_id
)
thread
.
group_id
=
group_id
thread
.
save
()
...
...
@@ -149,7 +150,8 @@ def update_thread(request, course_id, thread_id):
if
'body'
not
in
request
.
POST
or
not
request
.
POST
[
'body'
]
.
strip
():
return
JsonError
(
_
(
"Body can't be empty"
))
thread
=
cc
.
Thread
.
find
(
thread_id
)
thread
.
update_attributes
(
**
extract
(
request
.
POST
,
[
'body'
,
'title'
]))
thread
.
body
=
request
.
POST
[
"body"
]
thread
.
title
=
request
.
POST
[
"title"
]
thread
.
save
()
if
request
.
is_ajax
():
return
ajax_content_response
(
request
,
course_id
,
thread
.
to_dict
())
...
...
@@ -166,7 +168,6 @@ def _create_comment(request, course_id, thread_id=None, parent_id=None):
if
'body'
not
in
post
or
not
post
[
'body'
]
.
strip
():
return
JsonError
(
_
(
"Body can't be empty"
))
comment
=
cc
.
Comment
(
**
extract
(
post
,
[
'body'
]))
course
=
get_course_with_access
(
request
.
user
,
course_id
,
'load'
)
if
course
.
allow_anonymous
:
...
...
@@ -179,14 +180,15 @@ def _create_comment(request, course_id, thread_id=None, parent_id=None):
else
:
anonymous_to_peers
=
False
comment
.
update_attributes
(
**
{
'anonymous'
:
anonymous
,
'anonymous_to_peers'
:
anonymous_to_peers
,
'user_id'
:
request
.
user
.
id
,
'course_id'
:
course_id
,
'thread_id'
:
thread_id
,
'parent_id'
:
parent_id
,
})
comment
=
cc
.
Comment
(
anonymous
=
anonymous
,
anonymous_to_peers
=
anonymous_to_peers
,
user_id
=
request
.
user
.
id
,
course_id
=
course_id
,
thread_id
=
thread_id
,
parent_id
=
parent_id
,
body
=
post
[
"body"
]
)
comment
.
save
()
if
post
.
get
(
'auto_subscribe'
,
'false'
)
.
lower
()
==
'true'
:
user
=
cc
.
User
.
from_django_user
(
request
.
user
)
...
...
@@ -235,7 +237,7 @@ def update_comment(request, course_id, comment_id):
comment
=
cc
.
Comment
.
find
(
comment_id
)
if
'body'
not
in
request
.
POST
or
not
request
.
POST
[
'body'
]
.
strip
():
return
JsonError
(
_
(
"Body can't be empty"
))
comment
.
update_attributes
(
**
extract
(
request
.
POST
,
[
'body'
]))
comment
.
body
=
request
.
POST
[
"body"
]
comment
.
save
()
if
request
.
is_ajax
():
return
ajax_content_response
(
request
,
course_id
,
comment
.
to_dict
())
...
...
lms/lib/comment_client/comment.py
View file @
d9817117
...
...
@@ -52,14 +52,14 @@ class Comment(models.Model):
else
:
raise
CommentClientRequestError
(
"Can only flag/unflag threads or comments"
)
params
=
{
'user_id'
:
user
.
id
}
re
quest
=
perform_request
(
re
sponse
=
perform_request
(
'put'
,
url
,
params
,
metric_tags
=
self
.
_metric_tags
,
metric_action
=
'comment.abuse.flagged'
)
voteable
.
update_attributes
(
request
)
voteable
.
_update_from_response
(
response
)
def
unFlagAbuse
(
self
,
user
,
voteable
,
removeAll
):
if
voteable
.
type
==
'thread'
:
...
...
@@ -73,14 +73,14 @@ class Comment(models.Model):
if
removeAll
:
params
[
'all'
]
=
True
re
quest
=
perform_request
(
re
sponse
=
perform_request
(
'put'
,
url
,
params
,
metric_tags
=
self
.
_metric_tags
,
metric_action
=
'comment.abuse.unflagged'
)
voteable
.
update_attributes
(
request
)
voteable
.
_update_from_response
(
response
)
def
_url_for_thread_comments
(
thread_id
):
...
...
lms/lib/comment_client/models.py
View file @
d9817117
import
logging
from
.utils
import
extract
,
perform_request
,
CommentClientRequestError
log
=
logging
.
getLogger
(
__name__
)
class
Model
(
object
):
accessible_fields
=
[
'id'
]
...
...
@@ -70,7 +75,7 @@ class Model(object):
metric_tags
=
self
.
_metric_tags
,
metric_action
=
'model.retrieve'
)
self
.
update_attributes
(
**
response
)
self
.
_update_from_response
(
response
)
@property
def
_metric_tags
(
self
):
...
...
@@ -93,12 +98,17 @@ class Model(object):
def
find
(
cls
,
id
):
return
cls
(
id
=
id
)
def
update_attributes
(
self
,
*
args
,
**
kwargs
):
for
k
,
v
in
kwargs
.
items
():
def
_update_from_response
(
self
,
response_data
):
for
k
,
v
in
response_data
.
items
():
if
k
in
self
.
accessible_fields
:
self
.
__setattr__
(
k
,
v
)
else
:
raise
AttributeError
(
"Field {0} does not exist"
.
format
(
k
))
log
.
warning
(
"Unexpected field {field_name} in model {model_name}"
.
format
(
field_name
=
k
,
model_name
=
self
.
__class__
.
__name__
)
)
def
updatable_attributes
(
self
):
return
extract
(
self
.
attributes
,
self
.
updatable_fields
)
...
...
@@ -135,14 +145,14 @@ class Model(object):
metric_action
=
'model.insert'
)
self
.
retrieved
=
True
self
.
update_attributes
(
**
response
)
self
.
_update_from_response
(
response
)
self
.
after_save
(
self
)
def
delete
(
self
):
url
=
self
.
url
(
action
=
'delete'
,
params
=
self
.
attributes
)
response
=
perform_request
(
'delete'
,
url
,
metric_tags
=
self
.
_metric_tags
,
metric_action
=
'model.delete'
)
self
.
retrieved
=
True
self
.
update_attributes
(
**
response
)
self
.
_update_from_response
(
response
)
@classmethod
def
url_with_id
(
cls
,
params
=
{}):
...
...
lms/lib/comment_client/thread.py
View file @
d9817117
...
...
@@ -98,7 +98,7 @@ class Thread(models.Model):
metric_action
=
'model.retrieve'
,
metric_tags
=
self
.
_metric_tags
)
self
.
update_attributes
(
**
response
)
self
.
_update_from_response
(
response
)
def
flagAbuse
(
self
,
user
,
voteable
):
if
voteable
.
type
==
'thread'
:
...
...
@@ -108,14 +108,14 @@ class Thread(models.Model):
else
:
raise
CommentClientRequestError
(
"Can only flag/unflag threads or comments"
)
params
=
{
'user_id'
:
user
.
id
}
re
quest
=
perform_request
(
re
sponse
=
perform_request
(
'put'
,
url
,
params
,
metric_action
=
'thread.abuse.flagged'
,
metric_tags
=
self
.
_metric_tags
)
voteable
.
update_attributes
(
request
)
voteable
.
_update_from_response
(
response
)
def
unFlagAbuse
(
self
,
user
,
voteable
,
removeAll
):
if
voteable
.
type
==
'thread'
:
...
...
@@ -129,38 +129,38 @@ class Thread(models.Model):
if
removeAll
:
params
[
'all'
]
=
True
re
quest
=
perform_request
(
re
sponse
=
perform_request
(
'put'
,
url
,
params
,
metric_tags
=
self
.
_metric_tags
,
metric_action
=
'thread.abuse.unflagged'
)
voteable
.
update_attributes
(
request
)
voteable
.
_update_from_response
(
response
)
def
pin
(
self
,
user
,
thread_id
):
url
=
_url_for_pin_thread
(
thread_id
)
params
=
{
'user_id'
:
user
.
id
}
re
quest
=
perform_request
(
re
sponse
=
perform_request
(
'put'
,
url
,
params
,
metric_tags
=
self
.
_metric_tags
,
metric_action
=
'thread.pin'
)
self
.
update_attributes
(
request
)
self
.
_update_from_response
(
response
)
def
un_pin
(
self
,
user
,
thread_id
):
url
=
_url_for_un_pin_thread
(
thread_id
)
params
=
{
'user_id'
:
user
.
id
}
re
quest
=
perform_request
(
re
sponse
=
perform_request
(
'put'
,
url
,
params
,
metric_tags
=
self
.
_metric_tags
,
metric_action
=
'thread.unpin'
)
self
.
update_attributes
(
request
)
self
.
_update_from_response
(
response
)
def
_url_for_flag_abuse_thread
(
thread_id
):
...
...
lms/lib/comment_client/user.py
View file @
d9817117
...
...
@@ -56,14 +56,14 @@ class User(models.Model):
else
:
raise
CommentClientRequestError
(
"Can only vote / unvote for threads or comments"
)
params
=
{
'user_id'
:
self
.
id
,
'value'
:
value
}
re
quest
=
perform_request
(
re
sponse
=
perform_request
(
'put'
,
url
,
params
,
metric_action
=
'user.vote'
,
metric_tags
=
self
.
_metric_tags
+
[
'target.type:{}'
.
format
(
voteable
.
type
)],
)
voteable
.
update_attributes
(
request
)
voteable
.
_update_from_response
(
response
)
def
unvote
(
self
,
voteable
):
if
voteable
.
type
==
'thread'
:
...
...
@@ -73,14 +73,14 @@ class User(models.Model):
else
:
raise
CommentClientRequestError
(
"Can only vote / unvote for threads or comments"
)
params
=
{
'user_id'
:
self
.
id
}
re
quest
=
perform_request
(
re
sponse
=
perform_request
(
'delete'
,
url
,
params
,
metric_action
=
'user.unvote'
,
metric_tags
=
self
.
_metric_tags
+
[
'target.type:{}'
.
format
(
voteable
.
type
)],
)
voteable
.
update_attributes
(
request
)
voteable
.
_update_from_response
(
response
)
def
active_threads
(
self
,
query_params
=
{}):
if
not
self
.
course_id
:
...
...
@@ -141,7 +141,7 @@ class User(models.Model):
)
else
:
raise
self
.
update_attributes
(
**
response
)
self
.
_update_from_response
(
response
)
def
_url_for_vote_comment
(
comment_id
):
...
...
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