Doc et meilleure utilisation de l'ORM

- Indique a l'utilisateur comment utiliser le calendrier
- Utilise l'ORM Django plutôt que des `set` python pour avoir la bonne
  liste des spectacles.
- Rajoute un lien vers le calendrier sur la page “mes places”
This commit is contained in:
Martin Pépin 2016-07-16 18:22:53 +02:00
parent 7fcaaef527
commit 8c7ad24af8
3 changed files with 22 additions and 8 deletions

View file

@ -12,6 +12,9 @@
{% endfor %}
</ol>
<h4>Total à payer : {{ total|floatformat }}€</h4>
<h4>Ne manque pas un spectacle avec le
<a href="{% url "gestioncof.views.calendar" %}">calendrier
automatique&#8239;!</a></h4>
{% else %}
<h3>Vous n'avez aucune place :(</h3>
{% endif %}

View file

@ -18,8 +18,18 @@ souscrire aux événements du COF et/ou aux spectacles BdA.
</p>
{% if token %}
<p>Le lien à fournir avec votre application agenda préférée se trouve
<a href="{% url 'gestioncof.views.calendar_ics' token %}">ici</a>.</p>
<p>Votre calendrier (compatible avec toutes les applications d'agenda) se trouve à
<a href="{% url 'gestioncof.views.calendar_ics' token %}">cette adresse</a>.</p>
<ul>
<li>Pour l'ajouter à Thunderbird (lightning), il faut copier ce lien et aller
dans <tt>Fichier &gt; Nouveau &gt; Agenda</tt> puis choisir <tt>Sur le
réseau</tt> et le format <tt>.ics</tt>.</li>
<li>Avec Apple, il suffit de cliquer sur lien et d'ouvrir le fichier avec
l'application calendrier.</li>
<li>Google Agenda permet d'importer le fichier au format .ics depuis le menu
<tt>Préférences.</tt></li>
</ul>
{% endif %}
<br />

View file

@ -24,7 +24,7 @@ from gestioncof.forms import UserProfileForm, EventStatusFilterForm, \
SurveyForm, SurveyStatusFilterForm, RegistrationUserForm, \
RegistrationProfileForm, AdminEventForm, EventForm, CalendarForm
from bda.models import Tirage, Attribution
from bda.models import Tirage, Spectacle
@login_required
@ -654,11 +654,12 @@ def calendar(request):
def calendar_ics(request, token):
subscription = get_object_or_404(CalendarSubscription, token=token)
shows = set(subscription.other_shows.all()) \
| {attr.spectacle
for attr in Attribution.objects.filter(
participant__user=subscription.user,
participant__tirage__active=True)}
shows = subscription.other_shows.all()
if subscription.subscribe_to_my_shows:
shows |= Spectacle.objects.filter(
attribues__participant__user=subscription.user,
tirage__active=True)
shows = shows.distinct()
vcal = Calendar()
for show in shows:
vevent = Vevent()