Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Open sidebar
MOOC packages by hacklab
django-courses
Commits
a2019407
Commit
a2019407
authored
Sep 18, 2020
by
Matheus Miranda
Browse files
[Classroom Status] Add class to serialize User Actions
parent
ae75cad6
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
59 additions
and
1 deletion
+59
-1
courses/stats/serializers.py
courses/stats/serializers.py
+29
-0
courses/stats/views.py
courses/stats/views.py
+30
-1
No files found.
courses/stats/serializers.py
View file @
a2019407
from
rest_framework
import
serializers
from
rest_framework
import
serializers
from
actstream.models
import
Action
from
courses.reports.serializers
import
UserStatsSerializer
from
django.contrib.auth.models
import
User
from
django.contrib.auth
import
get_user_model
User
=
get_user_model
()
from
courses.classroom.models
import
Classroom
from
courses.classroom.serializers
import
BasicClassroomSerializer
class
UserActionsSerializer
(
serializers
.
Serializer
):
class
UserActionsSerializer
(
serializers
.
Serializer
):
...
@@ -11,3 +20,23 @@ class UserActionsSerializer(serializers.Serializer):
...
@@ -11,3 +20,23 @@ class UserActionsSerializer(serializers.Serializer):
class
UserAccessSerializer
(
serializers
.
Serializer
):
class
UserAccessSerializer
(
serializers
.
Serializer
):
area
=
serializers
.
CharField
(
required
=
True
,
max_length
=
100
)
area
=
serializers
.
CharField
(
required
=
True
,
max_length
=
100
)
class
GenericRelatedField
(
serializers
.
Field
):
def
to_representation
(
self
,
value
):
if
isinstance
(
value
,
User
):
return
UserStatsSerializer
(
value
).
data
if
isinstance
(
value
,
Classroom
):
return
BasicClassroomSerializer
(
value
).
data
return
str
(
value
)
class
ActionSerializer
(
serializers
.
ModelSerializer
):
actor
=
GenericRelatedField
(
read_only
=
True
)
target
=
GenericRelatedField
(
read_only
=
True
)
action_object
=
GenericRelatedField
(
read_only
=
True
)
verb
=
GenericRelatedField
(
read_only
=
True
)
class
Meta
:
model
=
Action
fields
=
(
'actor'
,
'target'
,
'action_object'
,
'verb'
)
courses/stats/views.py
View file @
a2019407
from
actstream
import
action
from
actstream
import
action
from
actstream.models
import
user_stream
,
Action
,
actor_stream
from
rest_framework
import
views
,
viewsets
,
mixins
,
permissions
,
status
from
rest_framework
import
views
,
viewsets
,
mixins
,
permissions
,
status
from
rest_framework.response
import
Response
from
rest_framework.response
import
Response
from
rest_framework.permissions
import
IsAuthenticated
from
rest_framework.permissions
import
IsAuthenticated
from
rest_framework.pagination
import
PageNumberPagination
from
discussion.models
import
Forum
,
Topic
from
discussion.models
import
Forum
,
Topic
from
.serializers
import
UserActionsSerializer
,
UserAccessSerializer
from
.serializers
import
UserActionsSerializer
,
UserAccessSerializer
,
ActionSerializer
from
.models
import
AccessibleArea
from
.models
import
AccessibleArea
from
..models
import
Course
from
..models
import
Course
from
..classroom.models
import
Classroom
from
..classroom.models
import
Classroom
from
django.contrib.auth.models
import
User
from
django.contrib.auth
import
get_user_model
User
=
get_user_model
()
class
UserActionsView
(
views
.
APIView
):
class
UserActionsView
(
views
.
APIView
):
permission_classes
=
[
permissions
.
IsAuthenticated
]
permission_classes
=
[
permissions
.
IsAuthenticated
]
...
@@ -63,3 +71,24 @@ class UserAccessView(views.APIView):
...
@@ -63,3 +71,24 @@ class UserAccessView(views.APIView):
action
.
send
(
request
.
user
,
verb
=
'access'
,
action_object
=
action_object
)
action
.
send
(
request
.
user
,
verb
=
'access'
,
action_object
=
action_object
)
return
Response
(
None
,
status
=
status
.
HTTP_201_CREATED
)
return
Response
(
None
,
status
=
status
.
HTTP_201_CREATED
)
class
ActivitiesPagination
(
PageNumberPagination
):
page_size
=
50
page_size_query_param
=
'page_size'
max_page_size
=
100
class
UserActivitiesViewSet
(
viewsets
.
ReadOnlyModelViewSet
):
serializer_class
=
ActionSerializer
permission_classes
=
[
permissions
.
IsAuthenticated
]
pagination_class
=
ActivitiesPagination
model
=
Action
def
get_queryset
(
self
):
user_id
=
self
.
request
.
GET
.
get
(
'user'
)
user
=
User
.
objects
.
get
(
id
=
user_id
)
queryset
=
actor_stream
(
user
)
return
queryset
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