Sen descrición

views.py 2.7KB

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