Kaynağa Gözat

Refactor hashtag view. Translate hashtag view

Camille Masset 9 yıl önce
ebeveyn
işleme
76a913d614

+ 4 - 4
counter/models.py

@@ -56,8 +56,8 @@ class Reset(models.Model):
56 56
 
57 57
 
58 58
 class Like(models.Model):
59
-    liker = models.ForeignKey('Counter', verbose_name='likeur')
60
-    reset = models.ForeignKey('Reset', verbose_name='seum')
59
+    liker = models.ForeignKey('Counter', verbose_name='likeur', related_name='likes')
60
+    reset = models.ForeignKey('Reset', verbose_name='seum', related_name='likes')
61 61
     timestamp = models.DateTimeField('date et heure', auto_now_add=True)
62 62
 
63 63
     class Meta:
@@ -81,8 +81,8 @@ class Keyword(models.Model):
81 81
 
82 82
 
83 83
 class Hashtag(models.Model):
84
-    keyword = models.ForeignKey('Keyword', verbose_name='hashtag')
85
-    reset = models.ForeignKey('Reset', verbose_name='remise à zéro')
84
+    keyword = models.ForeignKey('Keyword', verbose_name='hashtag', related_name='hashtags')
85
+    reset = models.ForeignKey('Reset', verbose_name='remise à zéro', related_name='hashtags')
86 86
 
87 87
     class Meta:
88 88
         verbose_name = 'hashtag'

+ 18 - 10
counter/templates/hashtagTemplate.html

@@ -1,7 +1,14 @@
1
-{% extends 'baseTemplate.html' %} {% block title %}{{hashtag}}{% endblock %} {% block content %} {% load hashtags %}
1
+{% extends 'baseTemplate.html' %}
2
+
3
+{% block title %}{{hashtag}}{% endblock %}
4
+
5
+{% block content %}
6
+{% load i18n %}
7
+{% load hashtags %}
8
+
2 9
 <div class="text-center">
3 10
   <h1>
4
-      <a class="counter-link" href="{% url 'home' %}"><b>{{hashtag}}</b></a>
11
+    <a class="counter-link" href="{% url 'home' %}"><b>{{hashtag}}</b></a>
5 12
   </h1>
6 13
 </div>
7 14
 <div class="container-fluid">
@@ -9,23 +16,24 @@
9 16
     <div class="col-sm-12">
10 17
       <div class="panel panel-default">
11 18
         <div class="panel-heading">
12
-          <h2 class="panel-title">Liste des seums contenant {{ hashtag }}<small class="badge pull-right">{{ totalNumber }}</small></h2>
19
+          <h2 class="panel-title">
20
+            {% trans "Seums containing" %} {{ hashtag }}<small class="badge pull-right">{{ totalNumber }}</small></h2>
13 21
         </div>
14 22
         <div class="panel-body">
15 23
           <table class="table table-striped">
16 24
             <thead>
17 25
               <tr>
18
-                <th>Date</th>
19
-                <th>Motif</th>
20
-                <th>Victime</th>
21
-                <th>Fouteur de seum</th>
22
-                <th>Nombre de likes</th>
26
+                <th>{% trans "Date" %}</th>
27
+                <th>{% trans "Motive" %}</th>
28
+                <th>{% trans "Victim" %}</th>
29
+                <th>{% trans "Seum giver" %}</th>
30
+                <th>{% trans "Number of likes" %}</th>
23 31
               </tr>
24 32
             </thead>
25 33
             <tbody>
26 34
               {% for reset in resets %}
27 35
               <tr>
28
-                <td><b>{{ reset.date }}</b></td>
36
+                <td><b>{{ reset.timestamp | date:"SHORT_DATETIME_FORMAT" }}</b></td>
29 37
                 <td>{{ reset.reason | hashtag }}</td>
30 38
                 <td>{{ reset.counter.trigramme }}</td>
31 39
                 <td>
@@ -45,7 +53,7 @@
45 53
 </div>
46 54
 <div class="row">
47 55
   <div class="text-center">
48
-    <a class="btn btn-success" href="{% url 'home' %}">Retour à la liste des compteurs</a>
56
+    <a class="btn btn-success" href="{% url 'home' %}">{% trans "Back to counters list" %}</a>
49 57
   </div>
50 58
 </div>
51 59
 </div>

+ 2 - 2
counter/urls.py

@@ -3,13 +3,13 @@ from counter.rss import SeumFeed
3 3
 from django.contrib.auth import views as auth_views
4 4
 from django.views.generic.base import RedirectView
5 5
 
6
-from . import views
6
+from .views import views, hashtag
7 7
 
8 8
 urlpatterns = [
9 9
     url(r'^$', views.home, name='home'),
10 10
     url(r'^reset-counter/$', views.resetCounter, name='reset-counter'),
11 11
     url(r'^counter/(?P<id_counter>\d+)/$', views.counter, name='counter'),
12
-    url(r'^hashtag/(?P<keyword>.+)/$', views.hashtag, name='hashtag'),
12
+    url(r'^hashtag/(?P<keyword>.+)/$', hashtag.get, name='hashtag'),
13 13
     url(r'^rss/$', SeumFeed()),
14 14
     url(r'^create_user/$', views.createUser, name='create_user'),
15 15
     url(r'^like/$', views.like, name='like'),

+ 36 - 0
counter/views/hashtag.py

@@ -0,0 +1,36 @@
1
+from babel.dates import format_timedelta, format_datetime
2
+import arrow
3
+
4
+from django.contrib.auth.decorators import login_required
5
+from django.core.urlresolvers import reverse
6
+from django.http import HttpResponseRedirect
7
+from django.shortcuts import render
8
+from django.utils.translation import ugettext as _, get_language
9
+
10
+from counter.models import *
11
+
12
+
13
+@login_required
14
+def get(request, keyword):
15
+    try:
16
+        keyword = Keyword.objects.get(text=keyword)
17
+    except Keyword.DoesNotExist:
18
+        print('erreur !')
19
+        return HttpResponseRedirect(reverse('home'))
20
+
21
+    hashtag = '#' + keyword.text
22
+    resets = Reset.objects.prefetch_related('likes', 'who', 'counter').filter(hashtags__keyword=keyword).order_by('-timestamp')
23
+    totalNumber = resets.count()
24
+    cur_lang = get_language()
25
+
26
+    for reset in resets:
27
+        if reset.who is None or reset.who == reset.counter:
28
+            reset.selfSeum = True
29
+        else:
30
+            reset.selfSeum = False
31
+        reset.likeCount = reset.likes.count()
32
+    return render(request, 'hashtagTemplate.html', {
33
+        'hashtag': hashtag,
34
+        'totalNumber': totalNumber,
35
+        'resets': resets,
36
+    })

+ 25 - 25
counter/views.py

@@ -456,31 +456,31 @@ def counter(request, id_counter):
456 456
     })
457 457
 
458 458
 
459
-@login_required
460
-def hashtag(request, keyword):
461
-    try:
462
-        keyword = Keyword.objects.get(text=keyword)
463
-    except Keyword.DoesNotExist:
464
-        print('erreur !')
465
-        return HttpResponseRedirect(reverse('home'))
466
-    hashtag = '#' + keyword.text
467
-    resets = Reset.objects.filter(
468
-        hashtag__keyword=keyword).order_by('-timestamp')
469
-    for reset in resets:
470
-        if (reset.who is None or
471
-                reset.who.id == reset.counter.id):
472
-            reset.selfSeum = True
473
-        else:
474
-            reset.selfSeum = False
475
-        reset.date = format_datetime(
476
-            reset.timestamp, locale='fr',
477
-            format="dd/MM/Y HH:mm")
478
-        reset.likeCount = Like.objects.filter(reset=reset).count()
479
-    return render(request, 'hashtagTemplate.html', {
480
-        'hashtag': hashtag,
481
-        'totalNumber': resets.count(),
482
-        'resets': resets,
483
-    })
459
+# @login_required
460
+# def hashtag(request, keyword):
461
+#     try:
462
+#         keyword = Keyword.objects.get(text=keyword)
463
+#     except Keyword.DoesNotExist:
464
+#         print('erreur !')
465
+#         return HttpResponseRedirect(reverse('home'))
466
+#     hashtag = '#' + keyword.text
467
+#     resets = Reset.objects.filter(
468
+#         hashtag__keyword=keyword).order_by('-timestamp')
469
+#     for reset in resets:
470
+#         if (reset.who is None or
471
+#                 reset.who.id == reset.counter.id):
472
+#             reset.selfSeum = True
473
+#         else:
474
+#             reset.selfSeum = False
475
+#         reset.date = format_datetime(
476
+#             reset.timestamp, locale='fr',
477
+#             format="dd/MM/Y HH:mm")
478
+#         reset.likeCount = Like.objects.filter(reset=reset).count()
479
+#     return render(request, 'hashtagTemplate.html', {
480
+#         'hashtag': hashtag,
481
+#         'totalNumber': resets.count(),
482
+#         'resets': resets,
483
+#     })
484 484
 
485 485
 
486 486
 def createUser(request):

+ 54 - 0
locale/en/LC_MESSAGES/django.po

@@ -0,0 +1,54 @@
1
+# SOME DESCRIPTIVE TITLE.
2
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+# This file is distributed under the same license as the PACKAGE package.
4
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+#
6
+#, fuzzy
7
+msgid ""
8
+msgstr ""
9
+"Project-Id-Version: PACKAGE VERSION\n"
10
+"Report-Msgid-Bugs-To: \n"
11
+"POT-Creation-Date: 2017-01-21 13:36+0100\n"
12
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+"Language-Team: LANGUAGE <LL@li.org>\n"
15
+"Language: \n"
16
+"MIME-Version: 1.0\n"
17
+"Content-Type: text/plain; charset=UTF-8\n"
18
+"Content-Transfer-Encoding: 8bit\n"
19
+
20
+#: counter/templates/hashtagTemplate.html:20
21
+msgid "Seums containing"
22
+msgstr ""
23
+
24
+#: counter/templates/hashtagTemplate.html:26
25
+msgid "Date"
26
+msgstr ""
27
+
28
+#: counter/templates/hashtagTemplate.html:27
29
+msgid "Motive"
30
+msgstr ""
31
+
32
+#: counter/templates/hashtagTemplate.html:28
33
+msgid "Victim"
34
+msgstr ""
35
+
36
+#: counter/templates/hashtagTemplate.html:29
37
+msgid "Seum giver"
38
+msgstr ""
39
+
40
+#: counter/templates/hashtagTemplate.html:30
41
+msgid "Number of likes"
42
+msgstr ""
43
+
44
+#: counter/templates/hashtagTemplate.html:56
45
+msgid "Back to counters list"
46
+msgstr ""
47
+
48
+#: seum/settings.py:110
49
+msgid "French"
50
+msgstr ""
51
+
52
+#: seum/settings.py:111
53
+msgid "English"
54
+msgstr ""

+ 58 - 0
locale/fr/LC_MESSAGES/django.po

@@ -0,0 +1,58 @@
1
+# SOME DESCRIPTIVE TITLE.
2
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
+# This file is distributed under the same license as the PACKAGE package.
4
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
+#
6
+#, fuzzy
7
+msgid ""
8
+msgstr ""
9
+"Project-Id-Version: PACKAGE VERSION\n"
10
+"Report-Msgid-Bugs-To: \n"
11
+"POT-Creation-Date: 2017-01-21 13:36+0100\n"
12
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
+"Language-Team: LANGUAGE <LL@li.org>\n"
15
+"Language: \n"
16
+"MIME-Version: 1.0\n"
17
+"Content-Type: text/plain; charset=UTF-8\n"
18
+"Content-Transfer-Encoding: 8bit\n"
19
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
20
+
21
+#: counter/templates/hashtagTemplate.html:20
22
+msgid "Seums containing"
23
+msgstr "Liste des seums contenant"
24
+
25
+#: counter/templates/hashtagTemplate.html:26
26
+msgid "Date"
27
+msgstr "Date"
28
+
29
+#: counter/templates/hashtagTemplate.html:27
30
+msgid "Motive"
31
+msgstr "Motif"
32
+
33
+#: counter/templates/hashtagTemplate.html:28
34
+msgid "Victim"
35
+msgstr "Victime"
36
+
37
+#: counter/templates/hashtagTemplate.html:29
38
+msgid "Seum giver"
39
+msgstr "Fouteur de seum"
40
+
41
+#: counter/templates/hashtagTemplate.html:30
42
+msgid "Number of likes"
43
+msgstr "Nombre de likes"
44
+
45
+#: counter/templates/hashtagTemplate.html:56
46
+msgid "Back to counters list"
47
+msgstr "Retour à la liste des compteurs"
48
+
49
+#: seum/settings.py:110
50
+msgid "French"
51
+msgstr "Français"
52
+
53
+#: seum/settings.py:111
54
+msgid "English"
55
+msgstr "Anglais"
56
+
57
+#~ msgid "Seum"
58
+#~ msgstr "Seum"

+ 1 - 1
seum/urls.py

@@ -23,7 +23,6 @@ urlpatterns = i18n_patterns(
23 23
     url(r'^admin/', admin.site.urls),
24 24
     url(r'^favicon\.ico$', RedirectView.as_view(url='/static/favicon.ico')),
25 25
     url(r'^robots\.txt$', RedirectView.as_view(url='/static/robots.txt')),
26
-    url(r'^', include('counter.urls')),
27 26
 )
28 27
 
29 28
 if settings.DEBUG:
@@ -32,3 +31,4 @@ if settings.DEBUG:
32 31
         url(r'^__debug__/', include(debug_toolbar.urls)),
33 32
     )
34 33
 
34
+urlpatterns += i18n_patterns(url(r'^', include('counter.urls')), )