| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- from django.shortcuts import render
- from census.models import Course,Count,Lesson
- from django import forms
- #Auxiliariy functions
- def getProgressBarClass(ratio):
- if (ratio > 75):
- return "success"
- elif (ratio > 50):
- return "info"
- elif (ratio > 25):
- return "warning"
- else:
- return "danger"
- def getCourseStatistics(course):
- course.lessons = Lesson.objects.filter(course=course).order_by('number')
- course.totalsum = 0
- course.nonnulllessonscount = 0
- for lesson in course.lessons:
- lesson.counts = Count.objects.filter(lesson=lesson)
- if (lesson.counts.count() != 0):
- lesson.totalsum = 0
- for count in lesson.counts:
- count.ratio = round(count.census/lesson.course.enrolled*100)
- lesson.totalsum += count.census
- lesson.totalratio = round(lesson.totalsum/(lesson.counts.count()*course.enrolled)*100)
- lesson.progressbarclass = getProgressBarClass(lesson.totalratio)
- course.totalsum += lesson.totalratio
- course.nonnulllessonscount += 1
- else:
- lesson.counts = None
- if (course.lessons.count() != 0):
- course.totalratio = round(course.totalsum / course.nonnulllessonscount)
- course.progressbarclass = getProgressBarClass(course.totalratio)
- else:
- course.totalratio = 0
- course.lessonscount= course.lessons.count()
- return course
- class addCountForm(forms.Form):
- course = forms.CharField(label="Cours",max_length=60)
- #Views
- def home(request):
- #Retrieving the course list and the statistics
- courses = Course.objects.filter(promotion__number=2014)
- for course in courses:
- course = getCourseStatistics(course)
- #Retrieving last count
- lastcount = Count.objects.latest('date')
- lastcount.ratio = round(lastcount.census/lastcount.lesson.course.enrolled*100)
- lastcount.progressbarclass= getProgressBarClass(lastcount.ratio)
- return render(request,'homeTemplate.html', {'courses' : courses, 'lastcount' : lastcount,})
- def comptage(request):
- return render(request,'comptageTemplate.html')
- def cours(request, id_cours):
- course = Course.objects.get(id=id_cours)
- course = getCourseStatistics(course)
- return render(request, 'coursTemplate.html', {'course' : course,})
- def addcount(request):
- # if this is a POST request we need to process the form data
- if request.method == 'POST':
- # create a form instance and populate it with data from the request:
- form = addCountForm(request.POST)
- # check whether it's valid:
- if form.is_valid():
- # process the data in form.cleaned_data as required
- # ...
- # redirect to a new URL:
- return HttpResponseRedirect('/')
- # if a GET (or any other method) we'll create a blank form
- else:
- form = addCountForm()
- return render(request, 'addcountTemplate.html', {'form': form})
|