|
|
@@ -5,6 +5,7 @@ from datetime import datetime, timedelta
|
|
5
|
5
|
from django import forms
|
|
6
|
6
|
from django.http import HttpResponseRedirect
|
|
7
|
7
|
from django.core.mail import EmailMessage
|
|
|
8
|
+from django.contrib.auth.decorators import login_required
|
|
8
|
9
|
from graphos.renderers import gchart
|
|
9
|
10
|
from graphos.sources.simple import SimpleDataSource
|
|
10
|
11
|
from graphos.sources.model import ModelDataSource
|
|
|
@@ -14,6 +15,7 @@ import copy
|
|
14
|
15
|
from django.utils import timezone
|
|
15
|
16
|
|
|
16
|
17
|
|
|
|
18
|
+@login_required
|
|
17
|
19
|
def home(request):
|
|
18
|
20
|
# JSS above this limit will not be displayed on the col graph
|
|
19
|
21
|
JSS_limit = 7
|
|
|
@@ -24,32 +26,27 @@ def home(request):
|
|
24
|
26
|
# Calculates infos for each counter
|
|
25
|
27
|
timezero = timedelta(0)
|
|
26
|
28
|
|
|
27
|
|
- # First we determine if the session
|
|
28
|
|
- if 'my-counter' in request.session:
|
|
29
|
|
- chooseCounter = False
|
|
30
|
|
- try:
|
|
31
|
|
- myCounter = Counter.objects.get(id=request.session['my-counter'])
|
|
32
|
|
- lastReset = Reset.objects.filter(
|
|
33
|
|
- counter=myCounter).order_by('-timestamp')
|
|
34
|
|
- if (lastReset.count() == 0):
|
|
35
|
|
- # This person never had the seum
|
|
36
|
|
- myCounter.lastReset = Reset()
|
|
37
|
|
- myCounter.lastReset.delta = timezero
|
|
38
|
|
- myCounter.lastReset.noSeum = True
|
|
39
|
|
- else:
|
|
40
|
|
- myCounter.lastReset = lastReset[0]
|
|
41
|
|
- myCounter.lastReset.noSeum = False
|
|
42
|
|
- myCounter.lastReset.delta = datetime.now(
|
|
43
|
|
- ) - myCounter.lastReset.timestamp.replace(tzinfo=None)
|
|
44
|
|
- myCounter.seumCount = Reset.objects.filter(
|
|
45
|
|
- counter=myCounter).count()
|
|
46
|
|
- myCounter.lastReset.formatted_delta = format_timedelta(
|
|
47
|
|
- myCounter.lastReset.delta, locale='fr', threshold=1)
|
|
48
|
|
- except ObjectDoesNotExist:
|
|
49
|
|
- chooseCounter = True
|
|
50
|
|
- else:
|
|
51
|
|
- myCounter = None
|
|
52
|
|
- chooseCounter = True
|
|
|
29
|
+ # First select our counter
|
|
|
30
|
+ try:
|
|
|
31
|
+ myCounter = Counter.objects.get(user__id=request.user.id)
|
|
|
32
|
+ lastReset = Reset.objects.filter(
|
|
|
33
|
+ counter=myCounter).order_by('-timestamp')
|
|
|
34
|
+ if (lastReset.count() == 0):
|
|
|
35
|
+ # This person never had the seum
|
|
|
36
|
+ myCounter.lastReset = Reset()
|
|
|
37
|
+ myCounter.lastReset.delta = timezero
|
|
|
38
|
+ myCounter.lastReset.noSeum = True
|
|
|
39
|
+ else:
|
|
|
40
|
+ myCounter.lastReset = lastReset[0]
|
|
|
41
|
+ myCounter.lastReset.noSeum = False
|
|
|
42
|
+ myCounter.lastReset.delta = datetime.now(
|
|
|
43
|
+ ) - myCounter.lastReset.timestamp.replace(tzinfo=None)
|
|
|
44
|
+ myCounter.seumCount = Reset.objects.filter(
|
|
|
45
|
+ counter=myCounter).count()
|
|
|
46
|
+ myCounter.lastReset.formatted_delta = format_timedelta(
|
|
|
47
|
+ myCounter.lastReset.delta, locale='fr', threshold=1)
|
|
|
48
|
+ except Counter.DoesNotExist:
|
|
|
49
|
+ return HttpResponseRedirect('login')
|
|
53
|
50
|
|
|
54
|
51
|
# Building data for counters display
|
|
55
|
52
|
counters = Counter.objects.all()
|
|
|
@@ -212,11 +209,11 @@ def home(request):
|
|
212
|
209
|
'noGraph': noGraph,
|
|
213
|
210
|
'noBestSeum': noBestSeum,
|
|
214
|
211
|
'noSeumActivity': noSeumActivity,
|
|
215
|
|
- 'chooseCounter': chooseCounter,
|
|
216
|
212
|
'myCounter': myCounter,
|
|
217
|
213
|
})
|
|
218
|
214
|
|
|
219
|
215
|
|
|
|
216
|
+@login_required
|
|
220
|
217
|
def resetCounter(request):
|
|
221
|
218
|
# Update Form counter
|
|
222
|
219
|
if (request.method == 'POST'):
|
|
|
@@ -246,6 +243,7 @@ P.S. : Pour ne plus recevoir ces messages, envoie un mail à denis.merigoux@gmai
|
|
246
|
243
|
return HttpResponseRedirect(data['redirect'][0])
|
|
247
|
244
|
|
|
248
|
245
|
|
|
|
246
|
+@login_required
|
|
249
|
247
|
def counter(request, id_counter):
|
|
250
|
248
|
|
|
251
|
249
|
counter = Counter.objects.get(pk=id_counter)
|
|
|
@@ -312,19 +310,3 @@ def counter(request, id_counter):
|
|
312
|
310
|
'resets': resets,
|
|
313
|
311
|
'seumFrequency': seumFrequency
|
|
314
|
312
|
})
|
|
315
|
|
-
|
|
316
|
|
-
|
|
317
|
|
-def setMyCounter(request):
|
|
318
|
|
- if (request.method == 'POST'):
|
|
319
|
|
- # create a form instance and populate it with data from the request:
|
|
320
|
|
- data = dict(request.POST)
|
|
321
|
|
- # We put the id of the counter in the session
|
|
322
|
|
- request.session['my-counter'] = data['myCounter'][0]
|
|
323
|
|
- return HttpResponseRedirect(data['redirect'][0])
|
|
324
|
|
-
|
|
325
|
|
-
|
|
326
|
|
-def resetMyCounter(request):
|
|
327
|
|
- if (request.method == 'POST'):
|
|
328
|
|
- data = dict(request.POST)
|
|
329
|
|
- del request.session['my-counter']
|
|
330
|
|
- return HttpResponseRedirect(data['redirect'][0])
|