forked from DGNum/gestioCOF
Meilleur affichage des dates
Configure la localisation (i10n) de Django afin d’afficher un format plus user-friendly par défaut pour les dates (par exemple, afficher "21 septembre 2016 à 15:00" plutôt que "21 septembre 2016 15:00"). Ceci permet d’éliminer les utilisations de `date_no_seconds` pour simplement les remplacer par l’affichage de la date, le format par défaut étant maintenant satisfaisant. Attention : le bon fonctionnement de ceci nécessite de changer les settings afin d’utiliser le module `cof.locale` comme module de localisation (définir `FORMAT_MODULE_PATH = "cof.locale"`). Le module `cof.locale` définit le format d’affichage des dates+heures (`DATETIME_FORMAT`) afin d’incorporer le "à" qui n'est pas présent dans la localisation française de Django.
This commit is contained in:
parent
afed3479b0
commit
567c9a0a6d
14 changed files with 24 additions and 23 deletions
|
@ -14,7 +14,7 @@ from django.contrib.auth.models import User
|
||||||
from django.template import loader
|
from django.template import loader
|
||||||
from django.core import mail
|
from django.core import mail
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils import timezone
|
from django.utils import timezone, formats
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,12 +28,8 @@ class Tirage(models.Model):
|
||||||
enable_do_tirage = models.BooleanField("Le tirage peut être lancé",
|
enable_do_tirage = models.BooleanField("Le tirage peut être lancé",
|
||||||
default=False)
|
default=False)
|
||||||
|
|
||||||
def date_no_seconds(self):
|
|
||||||
return self.fermeture.astimezone(timezone.get_current_timezone()) \
|
|
||||||
.strftime('%d %b %Y %H:%M')
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "%s - %s" % (self.title, self.date_no_seconds())
|
return "%s - %s" % (self.title, formats.localize(timezone.template_localtime(self.fermeture)))
|
||||||
|
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
|
@ -86,13 +82,13 @@ class Spectacle(models.Model):
|
||||||
def timestamp(self):
|
def timestamp(self):
|
||||||
return "%d" % calendar.timegm(self.date.utctimetuple())
|
return "%d" % calendar.timegm(self.date.utctimetuple())
|
||||||
|
|
||||||
def date_no_seconds(self):
|
|
||||||
return self.date.astimezone(timezone.get_current_timezone()) \
|
|
||||||
.strftime('%d %b %Y %H:%M')
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return "%s - %s, %s, %.02f€" % (self.title, self.date_no_seconds(),
|
return "%s - %s, %s, %.02f€" % (
|
||||||
self.location, self.price)
|
self.title,
|
||||||
|
formats.localize(timezone.template_localtime(self.date)),
|
||||||
|
self.location,
|
||||||
|
self.price
|
||||||
|
)
|
||||||
|
|
||||||
def send_rappel(self):
|
def send_rappel(self):
|
||||||
# On récupère la liste des participants
|
# On récupère la liste des participants
|
||||||
|
@ -108,8 +104,7 @@ class Spectacle(models.Model):
|
||||||
members[-1] = ['BdA', 2, 'bda@ens.fr']
|
members[-1] = ['BdA', 2, 'bda@ens.fr']
|
||||||
# On écrit un mail personnalisé à chaque participant
|
# On écrit un mail personnalisé à chaque participant
|
||||||
mails_to_send = []
|
mails_to_send = []
|
||||||
mail_object = "%s - %s - %s" % (self.title, self.date_no_seconds(),
|
mail_object = str(self)
|
||||||
self.location)
|
|
||||||
for member in members.values():
|
for member in members.values():
|
||||||
mail_body = loader.render_to_string('bda/mails/rappel.txt', {
|
mail_body = loader.render_to_string('bda/mails/rappel.txt', {
|
||||||
'name': member[0],
|
'name': member[0],
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
{% for show, members, losers in results %}
|
{% for show, members, losers in results %}
|
||||||
<div class="attribresult">
|
<div class="attribresult">
|
||||||
<h3 class="horizontal-title">{{ show.title }} - {{ show.date_no_seconds }} @ {{ show.location }}</h3>
|
<h3 class="horizontal-title">{{ show.title }} - {{ show.date }} @ {{ show.location }}</h3>
|
||||||
<p>
|
<p>
|
||||||
<strong>{{ show.nrequests }} demandes pour {{ show.slots }} places</strong>
|
<strong>{{ show.nrequests }} demandes pour {{ show.slots }} places</strong>
|
||||||
{{ show.price }}€ par place{% if user.profile.is_buro and show.nrequests < show.slots %}, {{ show.deficit }}€ de déficit{% endif %}
|
{{ show.price }}€ par place{% if user.profile.is_buro and show.nrequests < show.slots %}, {{ show.deficit }}€ de déficit{% endif %}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Bonjour {{ vendeur.first_name }} !
|
Bonjour {{ vendeur.first_name }} !
|
||||||
|
|
||||||
Je souhaiterais racheter ta place pour {{ spectacle.title }} le {{ spectacle.date_no_seconds }} ({{ spectacle.location }}) à {{ spectacle.price|floatformat:2 }}€.
|
Je souhaiterais racheter ta place pour {{ spectacle.title }} le {{ spectacle.date }} ({{ spectacle.location }}) à {{ spectacle.price|floatformat:2 }}€.
|
||||||
Contacte-moi si tu es toujours intéressé·e !
|
Contacte-moi si tu es toujours intéressé·e !
|
||||||
|
|
||||||
{{ acheteur.get_full_name }} ({{ acheteur.email }})
|
{{ acheteur.get_full_name }} ({{ acheteur.email }})
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Bonjour {{ name }},
|
Bonjour {{ name }},
|
||||||
|
|
||||||
Nous te rappellons que tu as eu la chance d'obtenir {{ nb_attr|pluralize:"une place,deux places" }}
|
Nous te rappellons que tu as eu la chance d'obtenir {{ nb_attr|pluralize:"une place,deux places" }}
|
||||||
pour {{ show.title }}, le {{ show.date_no_seconds }} au {{ show.location }}. N'oublie pas de t'y rendre !
|
pour {{ show.title }}, le {{ show.date }} au {{ show.location }}. N'oublie pas de t'y rendre !
|
||||||
{% if nb_attr == 2 %}
|
{% if nb_attr == 2 %}
|
||||||
Tu as obtenu deux places pour ce spectacle. Nous te rappelons que
|
Tu as obtenu deux places pour ce spectacle. Nous te rappelons que
|
||||||
ces places sont strictement réservées aux personnes de moins de 28 ans.
|
ces places sont strictement réservées aux personnes de moins de 28 ans.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Bonjour {{ acheteur.first_name }},
|
Bonjour {{ acheteur.first_name }},
|
||||||
|
|
||||||
Tu as été tiré-e au sort pour racheter une place pour {{ spectacle.title }} le {{ spectacle.date_no_seconds }} ({{ spectacle.location }}) à {{ spectacle.price|floatformat:2 }}€.
|
Tu as été tiré-e au sort pour racheter une place pour {{ spectacle.title }} le {{ spectacle.date }} ({{ spectacle.location }}) à {{ spectacle.price|floatformat:2 }}€.
|
||||||
Tu peux contacter le/la vendeur-se à l'adresse {{ vendeur.email }}, ou en répondant à ce mail.
|
Tu peux contacter le/la vendeur-se à l'adresse {{ vendeur.email }}, ou en répondant à ce mail.
|
||||||
|
|
||||||
Chaleureusement,
|
Chaleureusement,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Bonjour {{ user.first_name }}
|
Bonjour {{ user.first_name }}
|
||||||
|
|
||||||
Une place pour le spectacle {{ spectacle.title }} ({{ spectacle.date_no_seconds }})
|
Une place pour le spectacle {{ spectacle.title }} ({{ spectacle.date }})
|
||||||
a été postée sur BdA-Revente.
|
a été postée sur BdA-Revente.
|
||||||
|
|
||||||
Si ce spectacle t'intéresse toujours, merci de nous le signaler en cliquant
|
Si ce spectacle t'intéresse toujours, merci de nous le signaler en cliquant
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Bonjour {{ user.first_name }}
|
Bonjour {{ user.first_name }}
|
||||||
|
|
||||||
Une place pour le spectacle {{ spectacle.title }} ({{ spectacle.date_no_seconds }})
|
Une place pour le spectacle {{ spectacle.title }} ({{ spectacle.date }})
|
||||||
a été postée sur BdA-Revente.
|
a été postée sur BdA-Revente.
|
||||||
|
|
||||||
Puisque ce spectacle a lieu dans moins de 24h, il n'y a pas de tirage au sort pour
|
Puisque ce spectacle a lieu dans moins de 24h, il n'y a pas de tirage au sort pour
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
{% for spectacle in spectacles %}
|
{% for spectacle in spectacles %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{ spectacle.title }}</td>
|
<td>{{ spectacle.title }}</td>
|
||||||
<td data-sort-value="{{ spectacle.timestamp }}">{{ spectacle.date_no_seconds }}</td>
|
<td data-sort-value="{{ spectacle.timestamp }}">{{ spectacle.date }}</td>
|
||||||
<td data-sort-value="{{ spectacle.location }}">{{ spectacle.location }}</td>
|
<td data-sort-value="{{ spectacle.location }}">{{ spectacle.location }}</td>
|
||||||
<td data-sort-value="{{ spectacle.slots }}">{{ spectacle.slots }} places</td>
|
<td data-sort-value="{{ spectacle.slots }}">{{ spectacle.slots }} places</td>
|
||||||
<td data-sort-value="{{ spectacle.total }}">{{ spectacle.total }} demandes</td>
|
<td data-sort-value="{{ spectacle.total }}">{{ spectacle.total }} demandes</td>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{place.spectacle.title}}</td>
|
<td>{{place.spectacle.title}}</td>
|
||||||
<td>{{place.spectacle.location}}</td>
|
<td>{{place.spectacle.location}}</td>
|
||||||
<td>{{place.spectacle.date_no_seconds}}</td>
|
<td>{{place.spectacle.date}}</td>
|
||||||
<td>{% if place.double %}deux places{%else%}une place{% endif %}</td>
|
<td>{% if place.double %}deux places{%else%}une place{% endif %}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
{% for spectacle in object_list %}
|
{% for spectacle in object_list %}
|
||||||
<tr class="clickable-row" data-href="{% url 'bda-spectacle' tirage_id spectacle.id %}">
|
<tr class="clickable-row" data-href="{% url 'bda-spectacle' tirage_id spectacle.id %}">
|
||||||
<td><a href="{% url 'bda-spectacle' tirage_id spectacle.id %}">{{ spectacle.title }} <span style="font-size:small;" class="glyphicon glyphicon-link" aria-hidden="true"></span></a></td>
|
<td><a href="{% url 'bda-spectacle' tirage_id spectacle.id %}">{{ spectacle.title }} <span style="font-size:small;" class="glyphicon glyphicon-link" aria-hidden="true"></span></a></td>
|
||||||
<td data-sort-value="{{ spectacle.timestamp }}">{{ spectacle.date_no_seconds }}</td>
|
<td data-sort-value="{{ spectacle.timestamp }}">{{ spectacle.date }}</td>
|
||||||
<td data-sort-value="{{ spectacle.location }}">{{ spectacle.location }}</td>
|
<td data-sort-value="{{ spectacle.location }}">{{ spectacle.location }}</td>
|
||||||
<td data-sort-value="{{ spectacle.price |stringformat:".3f" }}">
|
<td data-sort-value="{{ spectacle.price |stringformat:".3f" }}">
|
||||||
{{ spectacle.price |floatformat }}€
|
{{ spectacle.price |floatformat }}€
|
||||||
|
|
0
cof/locale/__init__.py
Normal file
0
cof/locale/__init__.py
Normal file
0
cof/locale/fr/__init__.py
Normal file
0
cof/locale/fr/__init__.py
Normal file
4
cof/locale/fr/formats.py
Normal file
4
cof/locale/fr/formats.py
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
DATETIME_FORMAT = r'j F Y \à H:i'
|
|
@ -202,3 +202,5 @@ def show_toolbar(request):
|
||||||
DEBUG_TOOLBAR_CONFIG = {
|
DEBUG_TOOLBAR_CONFIG = {
|
||||||
'SHOW_TOOLBAR_CALLBACK': show_toolbar,
|
'SHOW_TOOLBAR_CALLBACK': show_toolbar,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FORMAT_MODULE_PATH = 'cof.locale'
|
||||||
|
|
Loading…
Reference in a new issue