|
|
@@ -1,24 +1,24 @@
|
|
1
|
1
|
from django.shortcuts import render
|
|
2
|
2
|
from census.models import Course,Count,Lesson
|
|
|
3
|
+from django import forms
|
|
3
|
4
|
|
|
4
|
|
-# Create your views here.
|
|
|
5
|
+#Auxiliariy functions
|
|
5
|
6
|
|
|
6
|
|
-def home(request):
|
|
7
|
|
- #Retrieving the course list
|
|
8
|
|
- courses = Course.objects.filter(promotion__number=2014)
|
|
9
|
|
- #Retrieving last count
|
|
10
|
|
- lastcount = Count.objects.latest('lesson__date')
|
|
11
|
|
- lastcountratio = round(lastcount.census/lastcount.lesson.course.enrolled*100)
|
|
12
|
|
-
|
|
13
|
|
- return render(request,'homeTemplate.html', {'courses' : courses, 'lastcount' : lastcount, 'lastcountratio' : lastcountratio})
|
|
14
|
|
-
|
|
15
|
|
-def comptage(request):
|
|
16
|
|
- return render(request,'comptageTemplate.html')
|
|
|
7
|
+def getProgressBarClass(ratio):
|
|
|
8
|
+ if (ratio > 75):
|
|
|
9
|
+ return "success"
|
|
|
10
|
+ elif (ratio > 50):
|
|
|
11
|
+ return "info"
|
|
|
12
|
+ elif (ratio > 25):
|
|
|
13
|
+ return "warning"
|
|
|
14
|
+ else:
|
|
|
15
|
+ return "danger"
|
|
17
|
16
|
|
|
18
|
|
-def cours(request, id_cours):
|
|
19
|
|
- course = Course.objects.get(id=id_cours)
|
|
20
|
|
- lessons = Lesson.objects.filter(course=course).order_by('number')
|
|
21
|
|
- for lesson in lessons:
|
|
|
17
|
+def getCourseStatistics(course):
|
|
|
18
|
+ course.lessons = Lesson.objects.filter(course=course).order_by('number')
|
|
|
19
|
+ course.totalsum = 0
|
|
|
20
|
+ course.nonnulllessonscount = 0
|
|
|
21
|
+ for lesson in course.lessons:
|
|
22
|
22
|
lesson.counts = Count.objects.filter(lesson=lesson)
|
|
23
|
23
|
if (lesson.counts.count() != 0):
|
|
24
|
24
|
lesson.totalsum = 0
|
|
|
@@ -26,6 +26,58 @@ def cours(request, id_cours):
|
|
26
|
26
|
count.ratio = round(count.census/lesson.course.enrolled*100)
|
|
27
|
27
|
lesson.totalsum += count.census
|
|
28
|
28
|
lesson.totalratio = round(lesson.totalsum/(lesson.counts.count()*course.enrolled)*100)
|
|
|
29
|
+ lesson.progressbarclass = getProgressBarClass(lesson.totalratio)
|
|
|
30
|
+ course.totalsum += lesson.totalratio
|
|
|
31
|
+ course.nonnulllessonscount += 1
|
|
29
|
32
|
else:
|
|
30
|
33
|
lesson.counts = None
|
|
31
|
|
- return render(request, 'coursTemplate.html', {'course' : course, 'lessons' : lessons,})
|
|
|
34
|
+ if (course.lessons.count() != 0):
|
|
|
35
|
+ course.totalratio = round(course.totalsum / course.nonnulllessonscount)
|
|
|
36
|
+ course.progressbarclass = getProgressBarClass(course.totalratio)
|
|
|
37
|
+ else:
|
|
|
38
|
+ course.totalratio = 0
|
|
|
39
|
+ course.lessonscount= course.lessons.count()
|
|
|
40
|
+ return course
|
|
|
41
|
+
|
|
|
42
|
+class addCountForm(forms.Form):
|
|
|
43
|
+ course = forms.CharField(label="Cours",max_length=60)
|
|
|
44
|
+
|
|
|
45
|
+#Views
|
|
|
46
|
+
|
|
|
47
|
+def home(request):
|
|
|
48
|
+ #Retrieving the course list and the statistics
|
|
|
49
|
+ courses = Course.objects.filter(promotion__number=2014)
|
|
|
50
|
+ for course in courses:
|
|
|
51
|
+ course = getCourseStatistics(course)
|
|
|
52
|
+ #Retrieving last count
|
|
|
53
|
+ lastcount = Count.objects.latest('date')
|
|
|
54
|
+ lastcount.ratio = round(lastcount.census/lastcount.lesson.course.enrolled*100)
|
|
|
55
|
+ lastcount.progressbarclass= getProgressBarClass(lastcount.ratio)
|
|
|
56
|
+
|
|
|
57
|
+ return render(request,'homeTemplate.html', {'courses' : courses, 'lastcount' : lastcount,})
|
|
|
58
|
+
|
|
|
59
|
+def comptage(request):
|
|
|
60
|
+ return render(request,'comptageTemplate.html')
|
|
|
61
|
+
|
|
|
62
|
+def cours(request, id_cours):
|
|
|
63
|
+ course = Course.objects.get(id=id_cours)
|
|
|
64
|
+ course = getCourseStatistics(course)
|
|
|
65
|
+ return render(request, 'coursTemplate.html', {'course' : course,})
|
|
|
66
|
+
|
|
|
67
|
+def addcount(request):
|
|
|
68
|
+ # if this is a POST request we need to process the form data
|
|
|
69
|
+ if request.method == 'POST':
|
|
|
70
|
+ # create a form instance and populate it with data from the request:
|
|
|
71
|
+ form = addCountForm(request.POST)
|
|
|
72
|
+ # check whether it's valid:
|
|
|
73
|
+ if form.is_valid():
|
|
|
74
|
+ # process the data in form.cleaned_data as required
|
|
|
75
|
+ # ...
|
|
|
76
|
+ # redirect to a new URL:
|
|
|
77
|
+ return HttpResponseRedirect('/')
|
|
|
78
|
+
|
|
|
79
|
+ # if a GET (or any other method) we'll create a blank form
|
|
|
80
|
+ else:
|
|
|
81
|
+ form = addCountForm()
|
|
|
82
|
+
|
|
|
83
|
+ return render(request, 'addcountTemplate.html', {'form': form})
|