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
0d7a1534
Commit
0d7a1534
authored
Sep 17, 2020
by
Matheus Miranda
Browse files
Add class UserCourseStats
parent
08b818ab
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
53 additions
and
1 deletion
+53
-1
courses/reports/views.py
courses/reports/views.py
+53
-1
No files found.
courses/reports/views.py
View file @
0d7a1534
...
...
@@ -11,7 +11,7 @@ import pandas as pd
from
discussion.models
import
Comment
,
CommentLike
,
Topic
,
TopicLike
from
courses.models
import
Course
,
CourseStudent
,
StudentProgress
from
courses.models
import
Course
,
CourseStudent
,
StudentProgress
,
User
from
courses.classes.models
import
Class
from
courses_learning_objects.models
import
LearningObject
,
Answer
...
...
@@ -296,3 +296,55 @@ class UsersByClassViewSet(PandasViewSet):
def
get_pandas_filename
(
self
,
request
,
format
):
return
'Relatório de progresso dos usuários'
class
ReportPagination
(
PageNumberPagination
):
page_size
=
50
page_size_query_param
=
'page_size'
max_page_size
=
100
class
UserCourseStats
(
viewsets
.
ReadOnlyModelViewSet
):
model
=
User
queryset
=
User
.
objects
.
all
().
order_by
(
'name'
)
serializer_class
=
UserCourseStatsSerializer
filter_fields
=
(
'group'
,)
# filter vai ser o group
permission_classes
=
[
IsAuthenticated
]
pagination_class
=
ReportPagination
filter_backends
=
[
filters
.
SearchFilter
,
DjangoFilterBackend
,
]
search_fields
=
[
'username'
,
'name'
,
'first_name'
,
'last_name'
,
'email'
]
def
get_queryset
(
self
):
## MANTER O FILTER ABAIXO?
queryset
=
super
(
User
,
self
).
get_queryset
().
filter
(
is_active
=
True
)
user
=
self
.
request
.
user
course_id
=
self
.
request
.
query_params
.
get
(
'course'
)
role
=
None
try
:
role
=
self
.
request
.
user
.
teaching_courses
.
get
(
course__id
=
course_id
).
role
except
ObjectDoesNotExist
:
pass
classes_id
=
self
.
request
.
query_params
.
getlist
(
'classes'
)
# class passed as get paremeter
classes
=
Class
.
objects
.
filter
(
course
=
course_id
)
if
classes_id
:
classes
=
classes
.
filter
(
id__in
=
classes_id
)
queryset
=
queryset
.
filter
(
user__classes__in
=
classes
)
if
not
((
role
and
role
==
'coordinator'
)
or
self
.
request
.
user
.
is_staff
or
self
.
request
.
user
.
is_superuser
):
# if user is not coordinator or admin, only show his classes
classes
=
classes
.
filter
(
assistants
=
user
)
queryset
=
queryset
.
filter
(
user__classes__in
=
classes
)
return
queryset
.
select_related
(
'user'
,
'course'
)
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