forked from DGNum/gestioCOF
Merge branch 'Aufinal/bda_fixes' of git.eleves.ens.fr:cof-geek/gestioCOF into Aufinal/bda_fixes
This commit is contained in:
commit
dfa8c1a1a1
|
@ -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
|
||||||
|
@ -401,7 +402,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()
|
||||||
|
|
|
@ -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">
|
||||||
|
<div class="bg-info text-info center-block">
|
||||||
|
<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 %}
|
{% csrf_token %}
|
||||||
{{resellform|bootstrap}}
|
{{ 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 }}
|
||||||
|
</div>
|
||||||
<button type="submit" class="btn btn-primary" name="transfer">Transférer</button>
|
<button type="submit" class="btn btn-primary" name="transfer">Transférer</button>
|
||||||
<button type="submit" class="btn btn-primary" name="reinit">Réinitialiser</button>
|
<button type="submit" class="btn btn-primary" name="reinit">Réinitialiser</button>
|
||||||
</form>
|
</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>
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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">
|
||||||
|
<div class="bg-info text-info center-block">
|
||||||
|
<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 %}
|
{% csrf_token %}
|
||||||
{{annulform|bootstrap}}
|
{{ 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">
|
||||||
|
<div class="bg-info text-info center-block">
|
||||||
|
<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 %}
|
{% csrf_token %}
|
||||||
{{subform|bootstrap}}
|
{{ 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 %}
|
||||||
|
|
18
bda/views.py
18
bda/views.py
|
@ -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 où 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)
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in a new issue