Няма описание

views.py 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 = [['Trigramme','Jours sans seum']]
  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. data = SimpleDataSource(lastResets)
  35. chart = gchart.ColumnChart(data,options={'title' : 'Graphe du seum', 'legend' : 'none','vAxis' : { 'viewWindow' : { 'max' : maxJSS+0.25} , 'ticks' : [1,2,3,4,5,6,7,8,9,10,11,12,13,14],'title' : 'Jours sans seum' }, 'hAxis' : {'title' : 'Trigramme' }})
  36. return render(request,'counterTemplate.html', {'counters' : counters, 'chart' : chart})
  37. def resetCounter(request):
  38. #Update Form counter
  39. if (request.method == 'POST'):
  40. # create a form instance and populate it with data from the request:
  41. data = dict(request.POST)
  42. counter = Counter.objects.get(pk=int(data['counter'][0]))
  43. print(counter)
  44. reset = Reset()
  45. reset.counter = counter
  46. reset.reason = data['reason'][0]
  47. reset.timestamp = datetime.now()
  48. reset.save()
  49. # check whether it's valid
  50. return HttpResponseRedirect('/')