Commit 7947a71b18eedf868f1af97eae82c1d42f23adba
1 parent
60d308d7
Exists in
master
and in
3 other branches
finished first report based on student
Showing
1 changed file
with
50 additions
and
3 deletions
Show diff stats
api/views.py
@@ -3,7 +3,7 @@ from django.http import HttpResponse, JsonResponse | @@ -3,7 +3,7 @@ from django.http import HttpResponse, JsonResponse | ||
3 | 3 | ||
4 | 4 | ||
5 | import django.views.generic as generic | 5 | import django.views.generic as generic |
6 | -from mural.models import SubjectPost | 6 | +from mural.models import SubjectPost, Comment, MuralVisualizations |
7 | from django.db.models import Q | 7 | from django.db.models import Q |
8 | from django.contrib.auth.mixins import LoginRequiredMixin | 8 | from django.contrib.auth.mixins import LoginRequiredMixin |
9 | from datetime import datetime, date | 9 | from datetime import datetime, date |
@@ -31,9 +31,56 @@ class ReportView(LoginRequiredMixin, generic.TemplateView): | @@ -31,9 +31,56 @@ class ReportView(LoginRequiredMixin, generic.TemplateView): | ||
31 | 31 | ||
32 | for student in students: | 32 | for student in students: |
33 | interactions = {} | 33 | interactions = {} |
34 | - | ||
35 | - interactions['doubts'] = SubjectPost.objects.filter(action="help", create_date__range=(init_date, end_date), | 34 | + #first columns |
35 | + interactions['subject_name'] = subject.name | ||
36 | + interactions['username'] = student.social_name | ||
37 | + interactions['init_date'] = init_date | ||
38 | + interactions['end_date'] = end_date | ||
39 | + print(datetime.now()) | ||
40 | + #number of help posts created by the student | ||
41 | + interactions['doubts_count'] = SubjectPost.objects.filter(action="help", create_date__range=(init_date, end_date), | ||
36 | space__id=subject_id, user=student).count() | 42 | space__id=subject_id, user=student).count() |
43 | + | ||
44 | + help_posts = SubjectPost.objects.filter(action="help", create_date__range=(init_date, end_date), | ||
45 | + space__id=subject_id) | ||
46 | + | ||
47 | + #comments count on help posts created by the student | ||
48 | + interactions['comments_count'] = Comment.objects.filter(post__in = help_posts.filter(user=student), | ||
49 | + create_date__range=(init_date, end_date)).count() | ||
50 | + | ||
51 | + | ||
52 | + #count the amount of comments made by the student on posts made by one of the professors | ||
53 | + interactions['comments_professor_count'] = Comment.objects.filter(post__in = help_posts.filter(user__in= subject.professor.all()), create_date__range=(init_date, end_date), | ||
54 | + user=student).count() | ||
55 | + | ||
56 | + #comments made by the user on other users posts | ||
57 | + interactions['comments_on_others_count'] = Comment.objects.filter(post__in = help_posts.exclude(user=student), | ||
58 | + create_date__range=(init_date, end_date), | ||
59 | + user= student).count() | ||
60 | + | ||
61 | + | ||
62 | + | ||
63 | + comments_by_teacher = Comment.objects.filter(user__in=subject.professor.all()) | ||
64 | + help_posts_ids = [] | ||
65 | + for comment in comments_by_teacher: | ||
66 | + help_posts_ids.append(comment.post.id) | ||
67 | + #number of help posts created by the user that the teacher commented on | ||
68 | + interactions['help_posts_commented_by_teacher'] = help_posts.filter(user=student, id__in = help_posts_ids) | ||
69 | + | ||
70 | + | ||
71 | + comments_by_others = Comment.objects.filter(user__in=subject.students.exclude(id = student.id)) | ||
72 | + help_posts_ids = [] | ||
73 | + for comment in comments_by_teacher: | ||
74 | + help_posts_ids.append(comment.post.id) | ||
75 | + #number of help posts created by the user others students commented on | ||
76 | + interactions['help_posts_commented_by_others'] = help_posts.filter(user=student, id__in = help_posts_ids).count() | ||
77 | + | ||
78 | + | ||
79 | + #Number of student visualizations on the mural of the subject | ||
80 | + interactions['mural_visualizations_count'] = MuralVisualizations.objects.filter(post__in = SubjectPost.objects.filter(space__id=subject.id), | ||
81 | + user = student).count() | ||
82 | + print(datetime.now()) | ||
83 | + | ||
37 | data[student] = interactions | 84 | data[student] = interactions |
38 | 85 | ||
39 | print(data) | 86 | print(data) |