Aucune description

views.py 2.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from django.shortcuts import render
  2. from counter.models import Counter,Reset
  3. from babel.dates import format_timedelta
  4. from datetime import datetime
  5. from django import forms
  6. from django.http import HttpResponseRedirect
  7. from django.core import serializers
  8. from graphos.renderers import gchart
  9. from graphos.sources.simple import SimpleDataSource
  10. class resetCounterForm(forms.ModelForm):
  11. class Meta:
  12. model = Reset
  13. fields = ['reason','counter']
  14. # Create your views here.
  15. def home(request):
  16. #Display counters
  17. counters = Counter.objects.all()
  18. lastResets = []
  19. #Calculates infos for each counter
  20. maxJSS = 0
  21. for counter in counters:
  22. lastReset = Reset.objects.filter(counter=counter).order_by('-timestamp')
  23. if (lastReset.count() == 0):
  24. counter.lastReset = False
  25. else:
  26. counter.lastReset = lastReset[0]
  27. counter.lastReset.delta = datetime.now()-counter.lastReset.timestamp.replace(tzinfo=None)
  28. lastResets.append([counter.trigramme,(counter.lastReset.delta.total_seconds())/(24*3600)])
  29. if (counter.lastReset.delta.total_seconds())/(24*3600) > maxJSS:
  30. maxJSS = (counter.lastReset.delta.total_seconds())/(24*3600)
  31. counter.lastReset.formatted_delta = format_timedelta(counter.lastReset.delta,locale='fr')
  32. counter.isHidden = "hidden"
  33. #Generate graph
  34. lastResets.sort(key=lambda x: (x[1],x[0]))
  35. lastResets.insert(0,['Trigramme','Jours sans seum'])
  36. data = SimpleDataSource(lastResets)
  37. chart = gchart.ColumnChart(data,options={'title' : 'Graphe du seum', 'legend' : 'none','vAxis' : { 'viewWindow' : { 'max' : max(maxJSS,1) , 'min' : 0} , 'ticks' : [1,2,3,4,5,6,7,8,9,10,11,12,13,14],'title' : 'Jours sans seum' }, 'hAxis' : {'title' : 'Trigramme' }})
  38. return render(request,'counterTemplate.html', {'counters' : counters, 'chart' : chart})
  39. def resetCounter(request):
  40. #Update Form counter
  41. if (request.method == 'POST'):
  42. # create a form instance and populate it with data from the request:
  43. data = dict(request.POST)
  44. counter = Counter.objects.get(pk=int(data['counter'][0]))
  45. print(counter)
  46. reset = Reset()
  47. reset.counter = counter
  48. reset.reason = data['reason'][0]
  49. reset.timestamp = datetime.now()
  50. reset.save()
  51. # check whether it's valid
  52. return HttpResponseRedirect('/')