Переглянути джерело

Put reset_counter view into right file

Camille Masset 9 роки тому
батько
комміт
1597db414c
3 змінених файлів з 56 додано та 58 видалено
  1. 1 1
      counter/urls.py
  2. 55 0
      counter/views/counter.py
  3. 0 57
      counter/views/views.py

+ 1 - 1
counter/urls.py

@@ -7,7 +7,7 @@ from .views import views, hashtag, counter
7 7
 
8 8
 urlpatterns = [
9 9
     url(r'^$', views.home, name='home'),
10
-    url(r'^reset-counter/$', views.resetCounter, name='reset-counter'),
10
+    url(r'^reset-counter/$', counter.reset_counter, name='reset-counter'),
11 11
     url(r'^counter/(?P<id_counter>\d+)/$', counter.get, name='counter'),
12 12
     url(r'^hashtag/(?P<keyword>.+)/$', hashtag.get, name='hashtag'),
13 13
     url(r'^rss/$', SeumFeed()),

+ 55 - 0
counter/views/counter.py

@@ -2,9 +2,11 @@ from datetime import datetime, timedelta
2 2
 import copy
3 3
 
4 4
 from django.contrib.auth.decorators import login_required
5
+from django.core.mail import EmailMessage
5 6
 from django.core.urlresolvers import reverse
6 7
 from django.http import HttpResponseRedirect
7 8
 from django.shortcuts import render
9
+from django.template.loader import render_to_string
8 10
 from django.utils.translation import ugettext as _, get_language
9 11
 
10 12
 import arrow
@@ -13,6 +15,7 @@ from graphos.renderers import gchart
13 15
 from graphos.sources.model import ModelDataSource
14 16
 
15 17
 from counter.models import *
18
+from counter.utils import parseSeumReason
16 19
 
17 20
 
18 21
 @login_required
@@ -101,3 +104,55 @@ def get(request, id_counter):
101 104
         'seumFrequency': seumFrequency,
102 105
         'myCounter': myCounter,
103 106
     })
107
+
108
+
109
+@login_required
110
+def reset_counter(request):
111
+    # Update Form counter
112
+    if request.method == 'POST':
113
+        # create a form instance and populate it with data from the request:
114
+        data = dict(request.POST)
115
+
116
+        who = Counter.objects.get(pk=int(data['who'][0]))
117
+        reason = data['reason'][0]
118
+        if 'counter' in data.keys():
119
+            counter = Counter.objects.get(pk=int(data['counter'][0]))
120
+        else:
121
+            try:
122
+                counter = Counter.objects.get(trigramme=data['trigramme'][0])
123
+            except Counter.DoesNotExist:
124
+                return HttpResponseRedirect(data['redirect'][0])
125
+
126
+        reset = Reset(counter=counter, who=who, reason=data['reason'][0])
127
+
128
+        # we check that the seumer is the autenticated user
129
+        if reset.who.user is None or reset.who.user != request.user:
130
+            return HttpResponseRedirect(data['redirect'][0])
131
+
132
+        reset.save()
133
+
134
+        # Now we deal with the hashtags
135
+        keywords = parseSeumReason(reason)
136
+        Hashtag.objects.bulk_create([Hashtag(reset=reset, keyword=keyword) for keyword in keywords])
137
+
138
+        # We send the emails only to those who want
139
+        emails = [u['email'] for u in Counter.objects.filter(email_notifications=True).values('email')]
140
+        # Now send emails to everyone
141
+        if reset.who is None or reset.who == counter:
142
+            selfSeum = True
143
+        else:
144
+            selfSeum = False
145
+        text_of_email = render_to_string(
146
+            'seumEmail.txt', {'reason': data['reason'][0],
147
+                              'name': counter.name,
148
+                              'who': reset.who,
149
+                              'selfSeum': selfSeum,
150
+                              })
151
+        email_to_send = EmailMessage(
152
+            '[SeumBook] ' + counter.trigramme + ' a le seum',
153
+            text_of_email,
154
+            'SeumMan <seum@merigoux.ovh>', emails, [],
155
+            reply_to=emails)
156
+        email_to_send.send(fail_silently=True)
157
+
158
+    return HttpResponseRedirect(data['redirect'][0])

+ 0 - 57
counter/views/views.py

@@ -293,64 +293,7 @@ def home(request):
293 293
     })
294 294
 
295 295
 
296
-@login_required
297
-def resetCounter(request):
298
-    # Update Form counter
299
-    if (request.method == 'POST'):
300
-        # create a form instance and populate it with data from the request:
301
-        data = dict(request.POST)
302
-
303
-        who = Counter.objects.get(pk=int(data['who'][0]))
304
-        reason = data['reason'][0]
305
-        if 'counter' in data.keys():
306
-            counter = Counter.objects.get(pk=int(data['counter'][0]))
307
-        else:
308
-            try:
309
-                counter = Counter.objects.get(trigramme=data['trigramme'][0])
310
-            except Counter.DoesNotExist:
311
-                return HttpResponseRedirect(data['redirect'][0])
312
-        reset = Reset()
313
-        reset.counter = counter
314
-        reset.who = who
315
-        reset.reason = data['reason'][0]
316
-        reset.timestamp = datetime.now()
317 296
 
318
-        # we check that the seumer is the autenticated user
319
-        if (reset.who.user is None or
320
-                reset.who.user.id != request.user.id):
321
-            return HttpResponseRedirect(data['redirect'][0])
322
-
323
-        reset.save()
324
-
325
-        # Now we deal with the hashtags
326
-        keywords = parseSeumReason(reason)
327
-        for keyword in keywords:
328
-            hashtag = Hashtag(reset=reset, keyword=keyword)
329
-            hashtag.save()
330
-
331
-        # We send the emails only to those who want
332
-        emails = [u.email for u in Counter.objects.all()
333
-                  if u.email_notifications]
334
-        # Now send emails to everyone
335
-        if (reset.who is None or
336
-                reset.who.id == counter.id):
337
-            selfSeum = True
338
-        else:
339
-            selfSeum = False
340
-        text_of_email = render_to_string(
341
-            'seumEmail.txt', {'reason': data['reason'][0],
342
-                              'name': counter.name,
343
-                              'who': reset.who,
344
-                              'selfSeum': selfSeum,
345
-                              })
346
-        email_to_send = EmailMessage(
347
-            '[SeumBook] ' + counter.trigramme + ' a le seum',
348
-            text_of_email,
349
-            'SeumMan <seum@merigoux.ovh>', emails, [],
350
-            reply_to=emails)
351
-        email_to_send.send(fail_silently=True)
352
-
353
-    return HttpResponseRedirect(data['redirect'][0])
354 297
 
355 298
 
356 299
 def createUser(request):