Merge branch 'Kerl/bda_fixes' into 'Aufinal/bda_fixes'

Kerl/bda fixes

See merge request !273
This commit is contained in:
Ludovic Stephan 2017-12-19 11:53:31 +01:00
commit 5f9f222cda
7 changed files with 137 additions and 37 deletions

View file

@ -361,6 +361,7 @@ class SpectacleRevente(models.Model):
inscrits = list(self.confirmed_entry.all()) inscrits = list(self.confirmed_entry.all())
spectacle = self.attribution.spectacle spectacle = self.attribution.spectacle
seller = self.seller seller = self.seller
winner = None
if inscrits: if inscrits:
# Envoie un mail au gagnant et au vendeur # Envoie un mail au gagnant et au vendeur
@ -400,7 +401,6 @@ class SpectacleRevente(models.Model):
# Si personne ne veut de la place, elle part au shotgun # Si personne ne veut de la place, elle part au shotgun
else: else:
winner = None
self.shotgun = True self.shotgun = True
self.tirage_done = True self.tirage_done = True
self.save() self.save()

View file

@ -3,50 +3,84 @@
{% block realcontent %} {% block realcontent %}
<h2>Revente de place</h2> <h2>Gestion des places que je revends</h2>
{% with resell_attributions=resellform.attributions annul_attributions=annulform.attributions sold_attributions=soldform.attributions %} {% with resell_attributions=resellform.attributions annul_attributions=annulform.attributions sold_attributions=soldform.attributions %}
{% if resellform.attributions %} {% if resellform.attributions %}
<br />
<h3>Places non revendues</h3> <h3>Places non revendues</h3>
<form class="form-horizontal" action="" method="post"> <form class="form-horizontal" action="" method="post">
{% csrf_token %} <div class="bg-info text-info center-block">
{{resellform|bootstrap}} <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
Cochez les places que vous souhaitez revendre, et validez. Vous aurez
ensuite 1h pour changer d'avis avant que la revente soit confirmée et
que les notifications soient envoyées aux intéressé·e·s.
</div>
<div class="bootstrap-form-reduce">
{% csrf_token %}
{{ resellform|bootstrap }}
</div>
<div class="form-actions"> <div class="form-actions">
<input type="submit" class="btn btn-primary" name="resell" value="Revendre les places sélectionnées"> <input type="submit" class="btn btn-primary" name="resell" value="Revendre les places sélectionnées">
</div> </div>
</form> </form>
<hr />
{% endif %} {% endif %}
<br>
{% if annul_attributions or overdue %} {% if annul_attributions or overdue %}
<h3>Places en cours de revente</h3> <h3>Places en cours de revente</h3>
<form action="" method="post"> <form action="" method="post">
{% if annul_attributions %}
<div class="bg-info text-info center-block">
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
Vous pouvez annuler les places mises en vente il y a moins d'une heure.
</div>
{% endif %}
{% csrf_token %} {% csrf_token %}
<div class='form-group'> <div class='form-group'>
<div class='multiple-checkbox'> <div class='multiple-checkbox'>
<ul> <ul>
{% for attrib in annul_attributions %} {% for attrib in annul_attributions %}
<li>{{attrib.tag}} {{attrib.choice_label}}</li> <li>{{ attrib.tag }} {{ attrib.choice_label }}</li>
{% endfor %} {% endfor %}
{% for attrib in overdue %} {% for attrib in overdue %}
<li> <li>
<input type="checkbox" style="visibility:hidden"> <input type="checkbox" style="visibility:hidden">
{{attrib.spectacle}} {{ attrib.spectacle }}
</li> </li>
{% endfor %} {% endfor %}
</ul>
</div>
</div>
{% if annul_attributions %} {% if annul_attributions %}
<input type="submit" class="btn btn-primary" name="annul" value="Annuler les reventes sélectionnées"> <input type="submit" class="btn btn-primary" name="annul" value="Annuler les reventes sélectionnées">
{% endif %} {% endif %}
</form> </form>
<hr />
{% endif %} {% endif %}
<br>
{% if sold_attributions %} {% if sold_attributions %}
<h3>Places revendues</h3> <h3>Places revendues</h3>
<form action="" method="post"> <form action="" method="post">
<div class="bg-info text-info center-block">
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
Pour chaque revente, vous devez soit l'annuler soit la confirmer pour
transférer la place la place à la personne tirée au sort.
L'annulation sert par exemple à pouvoir remettre la place en jeu si
vous ne parvenez pas à entrer en contact avec la personne tirée au
sort.
</div>
<div class="bootstrap-form-reduce">
{% csrf_token %} {% csrf_token %}
{{soldform|bootstrap}} {{ soldform|bootstrap }}
<button type="submit" class="btn btn-primary" name="transfer">Transférer</button> </div>
<button type="submit" class="btn btn-primary" name="reinit">Réinitialiser</button> <button type="submit" class="btn btn-primary" name="transfer">Transférer</button>
</form> <button type="submit" class="btn btn-primary" name="reinit">Réinitialiser</button>
</form>
{% endif %} {% endif %}
{% if not resell_attributions and not annul_attributions and not overdue and not sold_attributions %} {% if not resell_attributions and not annul_attributions and not overdue and not sold_attributions %}
<p>Plus de reventes possibles !</p> <p>Plus de reventes possibles !</p>

View file

@ -4,28 +4,41 @@
{% block realcontent %} {% block realcontent %}
<h2>Inscriptions pour BdA-Revente</h2> <h2>Inscriptions pour BdA-Revente</h2>
<form action="" class="form-horizontal" method="post"> <form action="" class="form-horizontal" method="post">
<div class="bg-info text-info center-block">
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
Cochez les spectacles pour lesquels vous souhaitez recevoir un
notification quand une place est disponible en revente. <br />
Lorsque vous validez vos choix, si un tirage au sort est en cours pour
un des spectacles que vous avez sélectionné, vous serez automatiquement
inscrit à ce tirage.
</div>
<br />
{% csrf_token %} {% csrf_token %}
<div class="form-group"> <div class="form-group">
<h3>Spectacles</h3> <button type="button"
<br/> class="btn btn-primary"
<button type="button" class="btn btn-primary" onClick="select(true)">Tout sélectionner</button> onClick="select(true)">Tout sélectionner</button>
<button type="button" class="btn btn-primary" onClick="select(false)">Tout désélectionner</button> <button type="button"
class="btn btn-primary"
onClick="select(false)">Tout désélectionner</button>
<div class="multiple-checkbox"> <div class="multiple-checkbox">
<ul> <ul>
{% for checkbox in form.spectacles %} {% for checkbox in form.spectacles %}
<li>{{checkbox}}</li> <li>{{ checkbox }}</li>
{%endfor%} {% endfor %}
</ul> </ul>
</div> </div>
</div> </div>
<input type="submit" class="btn btn-primary" value="S'inscrire pour les places sélectionnées"> <input type="submit"
class="btn btn-primary"
value="S'inscrire pour les places sélectionnées">
</form> </form>
<script language="JavaScript"> <script language="JavaScript">
function select(check) { function select(check) {
checkboxes = document.getElementsByName("spectacles"); checkboxes = document.getElementsByName("spectacles");
for(var i=0, n=checkboxes.length;i<n;i++) { for(var i=0, n=checkboxes.length; i < n; i++) {
checkboxes[i].checked = check; checkboxes[i].checked = check;
} }
} }

View file

@ -4,25 +4,49 @@
{% block realcontent %} {% block realcontent %}
<h2>Tirages au sort de reventes</h2> <h2>Tirages au sort de reventes</h2>
{% if annulform.reventes %} {% if annulform.reventes %}
<h3>Mes inscriptions</h3> <h3>Les reventes auxquelles vous êtes inscrit·e</h3>
<form class="form-horizontal" action="" method="post"> <form class="form-horizontal" action="" method="post">
{% csrf_token %} <div class="bg-info text-info center-block">
{{annulform|bootstrap}} <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
Vous pouvez vous désinscrire des reventes suivantes tant que le tirage n'a
pas eu lieu
</div>
<div class="bootstrap-form-reduce">
{% csrf_token %}
{{ annulform|bootstrap }}
</div>
<div class="form-actions"> <div class="form-actions">
<input type="submit" class="btn btn-primary" name="annul" value="Se désinscrire des tirages sélectionnés"> <input type="submit"
class="btn btn-primary"
name="annul"
value="Se désinscrire des tirages sélectionnés">
</div> </div>
</form> </form>
<hr />
{% endif %} {% endif %}
<br>
{% if subform.reventes %} {% if subform.reventes %}
<h3>Tirages en cours</h3> <h3>Tirages en cours</h3>
<form class="form-horizontal" action="" method="post"> <form class="form-horizontal" action="" method="post">
{% csrf_token %} <div class="bg-info text-info center-block">
{{subform|bootstrap}} <span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
Vous pouvez vous inscrire aux tirage en cours suivants
</div>
<div class="bootstrap-form-reduce">
{% csrf_token %}
{{ subform|bootstrap }}
</div>
<div class="form-actions"> <div class="form-actions">
<input type="submit" class="btn btn-primary" name="subscribe" value="S'inscrire aux tirages sélectionnés"> <input type="submit"
class="btn btn-primary"
name="subscribe"
value="S'inscrire aux tirages sélectionnés">
</div> </div>
</form> </form>
{% endif %} {% endif %}
{% endblock %} {% endblock %}

View file

@ -350,6 +350,14 @@ def tirage(request, tirage_id):
@login_required @login_required
def revente_manage(request, tirage_id): def revente_manage(request, tirage_id):
"""
Gestion de ses propres reventes :
- Création d'une revente
- Annulation d'une revente
- Confirmation d'une revente = transfert de la place à la personne qui
rachète
- Annulation d'une revente après que le tirage a eu lieu
"""
tirage = get_object_or_404(Tirage, id=tirage_id) tirage = get_object_or_404(Tirage, id=tirage_id)
participant, created = Participant.objects.get_or_create( participant, created = Participant.objects.get_or_create(
user=request.user, tirage=tirage) user=request.user, tirage=tirage)
@ -435,6 +443,10 @@ def revente_manage(request, tirage_id):
@login_required @login_required
def revente_tirages(request, tirage_id): def revente_tirages(request, tirage_id):
"""
Affiche à un participant la liste de toutes les reventes en cours (pour un
tirage donné) et lui permet de s'inscrire et se désinscrire à ces reventes.
"""
tirage = get_object_or_404(Tirage, id=tirage_id) tirage = get_object_or_404(Tirage, id=tirage_id)
participant, _ = Participant.objects.get_or_create( participant, _ = Participant.objects.get_or_create(
user=request.user, tirage=tirage) user=request.user, tirage=tirage)
@ -492,6 +504,12 @@ def revente_confirm(request, revente_id):
@login_required @login_required
def revente_subscribe(request, tirage_id): def revente_subscribe(request, tirage_id):
"""
Permet à un participant de sélectionner ses préférences pour les reventes.
Il recevra des notifications pour les spectacles qui l'intéressent et il
est automatiquement inscrit aux reventes en cours au moment il ajoute un
spectacle à la liste des spectacles qui l'intéressent.
"""
tirage = get_object_or_404(Tirage, id=tirage_id) tirage = get_object_or_404(Tirage, id=tirage_id)
participant, _ = Participant.objects.get_or_create( participant, _ = Participant.objects.get_or_create(
user=request.user, tirage=tirage) user=request.user, tirage=tirage)

View file

@ -1140,3 +1140,14 @@ p.help-block {
margin: 5px auto; margin: 5px auto;
width: 90%; width: 90%;
} }
div.bg-info {
border-radius: 3px;
padding: 0.3em 1em;
margin-left: 1em;
margin-right: 1em;
}
.bootstrap-form-reduce > .form-group {
margin-top: -16px;
}

View file

@ -43,9 +43,9 @@
<li><a href="{% url "bda-etat-places" tirage.id %}">État des demandes</a></li> <li><a href="{% url "bda-etat-places" tirage.id %}">État des demandes</a></li>
{% else %} {% else %}
<li><a href="{% url "bda-places-attribuees" tirage.id %}">Mes places</a></li> <li><a href="{% url "bda-places-attribuees" tirage.id %}">Mes places</a></li>
<li><a href="{% url "bda-revente-manage" tirage.id %}">Gestion de mes reventes</a></li> <li><a href="{% url "bda-revente-manage" tirage.id %}">Gérer les places que je revends</a></li>
<li><a href="{% url "bda-revente-tirages" tirage.id %}">Reventes en cours</a></li> <li><a href="{% url "bda-revente-tirages" tirage.id %}">Voir les reventes en cours</a></li>
<li><a href="{% url "bda-revente-subscribe" tirage.id %}">S'inscrire à BdA-Revente</a></li> <li><a href="{% url "bda-revente-subscribe" tirage.id %}">Indiquer les spectacles qui m'intéressent</a></li>
<li><a href="{% url "bda-revente-shotgun" tirage.id %}">Places disponibles immédiatement</a></li> <li><a href="{% url "bda-revente-shotgun" tirage.id %}">Places disponibles immédiatement</a></li>
{% endif %} {% endif %}
</ul> </ul>