mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-02 11:52:27 +02:00
use the grouped order unique code in url path
This commit is contained in:
parent
2083142d47
commit
6006cbe8df
15 changed files with 166 additions and 139 deletions
|
@ -62,7 +62,7 @@ class GroupedOrder(models.Model):
|
|||
return self.delivery_date >= timezone.now().date()
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse("order:manage_items", kwargs={"pk": self.pk})
|
||||
return reverse("order:manage_items", kwargs={"code": self.code})
|
||||
|
||||
def clean_fields(self, exclude=None):
|
||||
super().clean_fields(exclude=exclude)
|
||||
|
@ -80,7 +80,7 @@ class GroupedOrder(models.Model):
|
|||
return (
|
||||
self.name
|
||||
if self.name
|
||||
else f"Commande groupée {self.pk} du {self.date} organisée par {self.orga}"
|
||||
else f"Commande groupée {self.code} du {self.date} organisée par {self.orga}"
|
||||
)
|
||||
|
||||
|
||||
|
@ -130,7 +130,7 @@ class Order(models.Model):
|
|||
self.save()
|
||||
|
||||
def __str__(self): # pragma: no cover
|
||||
return f"Commande de {self.author} pour la commande groupée {self.grouped_order.pk}"
|
||||
return f"Commande de {self.author} pour la commande groupée {self.grouped_order.code}"
|
||||
|
||||
|
||||
class Item(models.Model):
|
||||
|
@ -161,7 +161,7 @@ class Item(models.Model):
|
|||
return None
|
||||
|
||||
def get_absolute_url(self):
|
||||
return reverse("order:manage_items", kwargs={"pk": self.grouped_order.pk})
|
||||
return reverse("order:manage_items", kwargs={"code": self.grouped_order.code})
|
||||
|
||||
def __str__(self): # pragma: no cover
|
||||
return f"{self.name} ({self.price} €)"
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<p class="title">Gestion des produits - {{ grouped_order.name }}</p>
|
||||
<p>Sur cette page, vous pouvez ajouter et modifier les produits de votre commande groupée.</p>
|
||||
|
||||
{% url 'order:item_create' pk=grouped_order.pk as create_item_url %}
|
||||
{% url 'order:item_create' grouped_order.code as create_item_url %}
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
|
@ -55,7 +55,7 @@
|
|||
<div class="modal-content">
|
||||
<div class="box">
|
||||
<p>Voulez-vous vraiment supprimer le produit {{ item.name }} de la commande ?</p>
|
||||
<form action="{% url 'order:item_delete' grouped_order.id item.id %}" method="post">
|
||||
<form action="{% url 'order:item_delete' grouped_order.code item.id %}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="submit" name="{{ item.id }}" value="Oui" class="button is-danger"/>
|
||||
<a class="button is-light" href="">Non</a>
|
||||
|
@ -70,7 +70,7 @@
|
|||
</table>
|
||||
|
||||
<div class="buttons is-pulled-right">
|
||||
<a href="{% url 'order:grouped_order_overview' pk=grouped_order.id %}" class="button is-primary">Valider</a>
|
||||
<a href="{% url 'order:grouped_order_overview' grouped_order.code %}" class="button is-primary">Valider</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
<div class="box">
|
||||
<p>Voulez-vous vraiment supprimer la commande groupée {{ grouped_order }} définitivement ?</p>
|
||||
<p>Cela supprimera toutes les commandes des participants et tous les produits de la commande.</p>
|
||||
<form action="{% url 'order:delete_grouped_order' grouped_order.pk %}" method="post">
|
||||
<form action="{% url 'order:delete_grouped_order' grouped_order.code %}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="submit" name="{{ item.id }}" value="Oui" class="button is-danger"/>
|
||||
<a class="button is-light" href="{% url 'order:grouped_order_overview' grouped_order.pk %}">Non</a>
|
||||
<a class="button is-light" href="{% url 'order:grouped_order_overview' grouped_order.code %}">Non</a>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
{% if grouped_order.description %}<p>{{ grouped_order.description }}</p>{% endif %}
|
||||
{% if not user.is_authenticated %}
|
||||
<p><span class="has-text-dark is-italic">Vous êtes l'organisateur·ice ?</span>
|
||||
<a href="{% url 'order:grouped_order_overview' grouped_order.id %}">
|
||||
<a href="{% url 'order:grouped_order_overview' grouped_order.code %}">
|
||||
Connectez-vous pour accéder à la page de gestion</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
|
@ -37,7 +37,7 @@
|
|||
</p>
|
||||
|
||||
{% if user == grouped_order.orga %}
|
||||
<a class="button is-primary" href="{% url 'order:grouped_order_overview' grouped_order.id %}">
|
||||
<a class="button is-primary" href="{% url 'order:grouped_order_overview' grouped_order.code %}">
|
||||
<i class="fa fa-list-ul mr-3" aria-hidden="true"></i>Gestion de la commande groupée
|
||||
</a>
|
||||
{% else %}
|
||||
|
@ -69,7 +69,7 @@
|
|||
<p>Il n'y a pas de produits disponibles dans cette commande !</p>
|
||||
{% else %}
|
||||
<p class="title">Commander</p>
|
||||
<form id="inputs-parent" method="post" action="{% url 'order:order' grouped_order.id %}">
|
||||
<form id="inputs-parent" method="post" action="{% url 'order:order' grouped_order.code %}">
|
||||
|
||||
<!-- Tableau de commandes - sur ordi -->
|
||||
<table class="table is-hidden-touch">
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
{% block content_title %}{{ grouped_order }} : gestion de la commande{% endblock %}
|
||||
</p>
|
||||
<div class="buttons">
|
||||
<a class="button is-light" href={% url 'order:grouped_order_detail' grouped_order.id %}>
|
||||
<a class="button is-light" href={% url 'order:grouped_order_detail' grouped_order.code %}>
|
||||
<i class="fa fa-arrow-left mr-3" aria-hidden="true"></i>Retour à la page de commande
|
||||
</a>
|
||||
<a class="button is-primary" href="{% url 'order:index' %}">
|
||||
|
@ -31,10 +31,10 @@
|
|||
Livraison le {{ grouped_order.delivery_date }}
|
||||
</p>
|
||||
<div class="buttons">
|
||||
<a class="button is-light" href="{% url 'order:update_grouped_order' grouped_order.id %}">
|
||||
<a class="button is-light" href="{% url 'order:update_grouped_order' grouped_order.code %}">
|
||||
<i class="fa fa-pencil mr-3" aria-hidden="true"></i>Modifier la commande
|
||||
</a>
|
||||
<a class="button is-light" href="{% url 'order:delete_grouped_order' grouped_order.id %}">
|
||||
<a class="button is-light" href="{% url 'order:delete_grouped_order' grouped_order.code %}">
|
||||
<i class="fa fa-trash mr-3" aria-hidden="true"></i>Supprimer la commande
|
||||
</a>
|
||||
</div>
|
||||
|
@ -89,10 +89,10 @@
|
|||
<div class="column">
|
||||
<p>Pour vous aider à distribuer les produits le jour J, vous pouvez télécharger la liste des commandes
|
||||
au format PDF pour l'<strong>imprimer</strong>, ou au format CSV pour l'<strong>afficher dans un tableur</strong> :</p>
|
||||
<a class="button is-info" href="{% url 'order:grouped_order_sheet' grouped_order.id %}" target="_blank">
|
||||
<a class="button is-info" href="{% url 'order:grouped_order_sheet' grouped_order.code %}" target="_blank">
|
||||
<i class="fa fa-file-pdf-o mr-3" aria-hidden="true"></i>Commandes en PDF
|
||||
</a>
|
||||
<a class="button is-info" href="{% url 'order:grouped_order_csv_export' grouped_order.id %}" target="_blank">
|
||||
<a class="button is-info" href="{% url 'order:grouped_order_csv_export' grouped_order.code %}" target="_blank">
|
||||
<i class="fa fa-file-excel-o mr-3" aria-hidden="true"></i>Commandes en CSV
|
||||
</a>
|
||||
</div>
|
||||
|
@ -100,7 +100,7 @@
|
|||
</div>
|
||||
|
||||
<div id="resume" class="box tabcontent">
|
||||
<a class="button is-primary is-pulled-right" href="{% url 'order:manage_items' grouped_order.pk %}">Gérer les produits</a>
|
||||
<a class="button is-primary is-pulled-right" href="{% url 'order:manage_items' grouped_order.code %}">Gérer les produits</a>
|
||||
<p class="title">Produits commandés</p>
|
||||
{% if grouped_order.item_set.all %}
|
||||
<table class="table">
|
||||
|
@ -130,13 +130,13 @@
|
|||
</tfoot>
|
||||
</table>
|
||||
{% else %}
|
||||
<p>Vous n'avez pas ajouté de produits à cette commande groupée. Ajoutez-en <a href="{% url 'order:manage_items' grouped_order.pk %}">ici</a></p>
|
||||
<p>Vous n'avez pas ajouté de produits à cette commande groupée. Ajoutez-en <a href="{% url 'order:manage_items' grouped_order.code %}">ici</a></p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div id="commandes" class="box tabcontent">
|
||||
<div class="buttons is-pulled-right">
|
||||
<a class="button is-info" href="{% url 'order:email_list' grouped_order.id %}" title="Télécharger la liste des mails des participants">
|
||||
<a class="button is-info" href="{% url 'order:email_list' grouped_order.code %}" title="Télécharger la liste des mails des participants">
|
||||
<i class="fa fa-download mr-3" aria-hidden="true"></i>Liste des mails
|
||||
</a>
|
||||
</div>
|
||||
|
@ -237,7 +237,7 @@
|
|||
<p>{{ order.price }} €</p>
|
||||
</div>
|
||||
<div class="column">
|
||||
<form action="{% url 'order:order_delete' grouped_order.id order.id %}" method="post">
|
||||
<form action="{% url 'order:order_delete' grouped_order.code order.id %}" method="post">
|
||||
{% csrf_token %}
|
||||
<input type="submit" name="{{ item.id }}" value="Oui" class="button is-danger"/>
|
||||
<a class="button is-light" aria-label="close">Non</a>
|
||||
|
|
|
@ -29,19 +29,19 @@
|
|||
<tr>
|
||||
<td>
|
||||
<i class="fa fa-unlock-alt mr-2 has-text-success-dark" aria-hidden="true" title="Commandes ouvertes"></i>
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.id %}">{{ gr_order }}</a>
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.code %}">{{ gr_order }}</a>
|
||||
</td>
|
||||
<td>{{ gr_order.delivery_date }}</td>
|
||||
<td>{{ gr_order.deadline }}</td>
|
||||
<td>{{ gr_order.order_set.count }}</td>
|
||||
<td>
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.id %}">
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.code %}">
|
||||
<i class="fa fa-eye mr-3" aria-hidden="true"></i>
|
||||
</a>
|
||||
<a title="Gestion de la commande groupée" href="{% url 'order:grouped_order_overview' gr_order.id %}">
|
||||
<a title="Gestion de la commande groupée" href="{% url 'order:grouped_order_overview' gr_order.code %}">
|
||||
<i class="fa fa-list-ul mr-3" aria-hidden="true"></i>
|
||||
</a>
|
||||
<a title="Dupliquer la commande groupée" href="{% url 'order:duplicate_grouped_order' gr_order.id %}">
|
||||
<a title="Dupliquer la commande groupée" href="{% url 'order:duplicate_grouped_order' gr_order.code %}">
|
||||
<i class="fa fa-files-o mr-3" aria-hidden="true"></i>
|
||||
</a>
|
||||
</td>
|
||||
|
@ -67,19 +67,19 @@
|
|||
<tr>
|
||||
<td>
|
||||
<i class="fa fa-lock mr-2 has-text-info" aria-hidden="true" title="Livraison à venir"></i>
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.id %}">{{ gr_order }}</a>
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.code %}">{{ gr_order }}</a>
|
||||
</td>
|
||||
<td>{{ gr_order.delivery_date }}</td>
|
||||
<td>{{ gr_order.deadline }}</td>
|
||||
<td>{{ gr_order.order_set.count }}</td>
|
||||
<td>
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.id %}">
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.code %}">
|
||||
<i class="fa fa-eye mr-3" aria-hidden="true"></i>
|
||||
</a>
|
||||
<a title="Gestion de la commande groupée" href="{% url 'order:grouped_order_overview' gr_order.id %}">
|
||||
<a title="Gestion de la commande groupée" href="{% url 'order:grouped_order_overview' gr_order.code %}">
|
||||
<i class="fa fa-list-ul mr-3" aria-hidden="true"></i>
|
||||
</a>
|
||||
<a title="Dupliquer la commande groupée" href="{% url 'order:duplicate_grouped_order' gr_order.id %}">
|
||||
<a title="Dupliquer la commande groupée" href="{% url 'order:duplicate_grouped_order' gr_order.code %}">
|
||||
<i class="fa fa-files-o mr-3" aria-hidden="true"></i>
|
||||
</a>
|
||||
</td>
|
||||
|
@ -105,19 +105,19 @@
|
|||
<tr>
|
||||
<td>
|
||||
<i class="fa fa-check-circle mr-2 has-text-link" aria-hidden="true" title="Commande terminée"></i>
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.id %}">{{ gr_order }}</a>
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.code %}">{{ gr_order }}</a>
|
||||
</td>
|
||||
<td>{{ gr_order.delivery_date }}</td>
|
||||
<td>{{ gr_order.deadline }}</td>
|
||||
<td>{{ gr_order.order_set.count }}</td>
|
||||
<td>
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.id %}">
|
||||
<a title="Détail de la commande groupée" href="{% url 'order:grouped_order_detail' gr_order.code %}">
|
||||
<i class="fa fa-eye mr-3" aria-hidden="true"></i>
|
||||
</a>
|
||||
<a title="Gestion de la commande groupée" href="{% url 'order:grouped_order_overview' gr_order.id %}">
|
||||
<a title="Gestion de la commande groupée" href="{% url 'order:grouped_order_overview' gr_order.code %}">
|
||||
<i class="fa fa-list-ul mr-3" aria-hidden="true"></i>
|
||||
</a>
|
||||
<a title="Dupliquer la commande groupée" href="{% url 'order:duplicate_grouped_order' gr_order.id %}">
|
||||
<a title="Dupliquer la commande groupée" href="{% url 'order:duplicate_grouped_order' gr_order.code %}">
|
||||
<i class="fa fa-files-o mr-3" aria-hidden="true"></i>
|
||||
</a>
|
||||
</td>
|
||||
|
|
|
@ -26,11 +26,11 @@
|
|||
<a href="mailto:{{ order.grouped_order.orga.username }}">Envoyer un mail</a></p>
|
||||
|
||||
<div class="buttons">
|
||||
<a class="button is-primary" href="{% url 'order:grouped_order_detail' order.grouped_order.pk %}">
|
||||
<a class="button is-primary" href="{% url 'order:grouped_order_detail' order.grouped_order.code %}">
|
||||
<i class="fa fa-arrow-left mr-3" aria-hidden="true"></i>Retour à la page de commande
|
||||
</a>
|
||||
{% if user == order.grouped_order.orga %}
|
||||
<a class="button is-light" href="{% url 'order:grouped_order_overview' order.grouped_order.pk %}">Page de gestion de la commande</a>
|
||||
<a class="button is-light" href="{% url 'order:grouped_order_overview' order.grouped_order.code %}">Page de gestion de la commande</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -218,7 +218,7 @@ class TestGroupedOrderDetailView:
|
|||
detail_url = reverse(
|
||||
"order:grouped_order_detail",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(detail_url)
|
||||
|
@ -233,7 +233,7 @@ class TestGroupedOrderDetailView:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.post(
|
||||
|
@ -254,7 +254,7 @@ class TestGroupedOrderDetailView:
|
|||
assert response.url == reverse(
|
||||
"order:order_confirm",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
"pk": order.pk,
|
||||
},
|
||||
)
|
||||
|
@ -294,7 +294,7 @@ class TestGroupedOrderDetailView:
|
|||
detail_url = reverse(
|
||||
"order:grouped_order_detail",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(detail_url)
|
||||
|
@ -305,7 +305,7 @@ class TestGroupedOrderDetailView:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.post(
|
||||
|
@ -353,7 +353,7 @@ class TestGroupedOrderDetailView:
|
|||
detail_url = reverse(
|
||||
"order:grouped_order_detail",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(detail_url)
|
||||
|
@ -381,7 +381,7 @@ class TestGroupedOrderDetailView:
|
|||
detail_url = reverse(
|
||||
"order:grouped_order_detail",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(detail_url)
|
||||
|
@ -404,7 +404,7 @@ class TestGroupedOrderDetailView:
|
|||
detail_url = reverse(
|
||||
"order:grouped_order_detail",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(detail_url)
|
||||
|
@ -415,7 +415,7 @@ class TestGroupedOrderDetailView:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.post(
|
||||
|
@ -451,7 +451,7 @@ class TestGroupedOrderDetailView:
|
|||
detail_url = reverse(
|
||||
"order:grouped_order_detail",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(detail_url)
|
||||
|
@ -462,7 +462,7 @@ class TestGroupedOrderDetailView:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.post(
|
||||
|
@ -498,7 +498,7 @@ class TestGroupedOrderDetailView:
|
|||
detail_url = reverse(
|
||||
"order:grouped_order_detail",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(detail_url)
|
||||
|
@ -509,7 +509,7 @@ class TestGroupedOrderDetailView:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.post(
|
||||
|
@ -562,7 +562,7 @@ class TestGroupedOrderDetailView:
|
|||
detail_url = reverse(
|
||||
"order:grouped_order_detail",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(detail_url)
|
||||
|
@ -575,7 +575,7 @@ class TestGroupedOrderDetailView:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.post(
|
||||
|
@ -595,7 +595,7 @@ class TestGroupedOrderDetailView:
|
|||
assert response.url == reverse(
|
||||
"order:order_confirm",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
"pk": order.pk,
|
||||
},
|
||||
)
|
||||
|
@ -632,14 +632,14 @@ class TestGroupedOrderOverview:
|
|||
overview_url = reverse(
|
||||
"order:grouped_order_overview",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
# some items are ordered
|
||||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
client_log.post(
|
||||
|
@ -674,7 +674,7 @@ class TestGroupedOrderOverview:
|
|||
orga_view_url = reverse(
|
||||
"order:grouped_order_overview",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
assert auth.get_user(client).is_anonymous
|
||||
|
@ -685,7 +685,7 @@ class TestGroupedOrderOverview:
|
|||
reverse(
|
||||
"order:grouped_order_overview",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
)
|
||||
|
@ -704,7 +704,7 @@ class TestGroupedOrderOverview:
|
|||
orga_view_url = reverse(
|
||||
"order:grouped_order_overview",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(orga_view_url)
|
||||
|
@ -729,7 +729,7 @@ class TestGroupedOrderOverview:
|
|||
orga_view_url = reverse(
|
||||
"order:grouped_order_overview",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(orga_view_url)
|
||||
|
@ -757,7 +757,7 @@ class TestGroupedOrderOverview:
|
|||
orga_view_url = reverse(
|
||||
"order:grouped_order_overview",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(orga_view_url)
|
||||
|
@ -822,7 +822,7 @@ class TestGroupedOrderUpdateView:
|
|||
|
||||
# get the update form
|
||||
update_grouped_order_url = reverse(
|
||||
"order:update_grouped_order", kwargs={"pk": grouped_order.pk}
|
||||
"order:update_grouped_order", kwargs={"code": grouped_order.code}
|
||||
)
|
||||
response = client_log.get(update_grouped_order_url)
|
||||
assert response.status_code == 200
|
||||
|
@ -863,7 +863,7 @@ class TestGroupedOrderUpdateView:
|
|||
|
||||
# get the update form
|
||||
update_grouped_order_url = reverse(
|
||||
"order:update_grouped_order", kwargs={"pk": grouped_order.pk}
|
||||
"order:update_grouped_order", kwargs={"code": grouped_order.code}
|
||||
)
|
||||
response = client_log.get(update_grouped_order_url)
|
||||
assert response.status_code == 200
|
||||
|
@ -899,7 +899,7 @@ class TestGroupedOrderUpdateView:
|
|||
|
||||
# get the update form
|
||||
update_grouped_order_url = reverse(
|
||||
"order:update_grouped_order", kwargs={"pk": grouped_order.pk}
|
||||
"order:update_grouped_order", kwargs={"code": grouped_order.code}
|
||||
)
|
||||
response = client_log.get(update_grouped_order_url)
|
||||
assert response.status_code == 403
|
||||
|
@ -916,7 +916,7 @@ class TestGroupedOrderUpdateView:
|
|||
|
||||
# get the update form
|
||||
update_grouped_order_url = reverse(
|
||||
"order:update_grouped_order", kwargs={"pk": grouped_order.pk}
|
||||
"order:update_grouped_order", kwargs={"code": grouped_order.code}
|
||||
)
|
||||
response = client.get(update_grouped_order_url)
|
||||
assert response.status_code == 302
|
||||
|
@ -941,7 +941,7 @@ class TestGroupedOrderAddItemsView:
|
|||
add_items_view_url = reverse(
|
||||
"order:manage_items",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(add_items_view_url)
|
||||
|
@ -960,7 +960,7 @@ class TestGroupedOrderAddItemsView:
|
|||
add_items_view_url = reverse(
|
||||
"order:manage_items",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
assert auth.get_user(client).is_anonymous
|
||||
|
@ -970,9 +970,7 @@ class TestGroupedOrderAddItemsView:
|
|||
assert response.url.endswith(
|
||||
reverse(
|
||||
"order:manage_items",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
},
|
||||
kwargs={"code": grouped_order.code},
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -1001,10 +999,10 @@ class TestGroupedOrderAddItemsView:
|
|||
|
||||
# Create an item
|
||||
grouped_order = models.GroupedOrder.objects.first()
|
||||
create_item_url = reverse("order:item_create", args=[grouped_order.id])
|
||||
create_item_url = reverse("order:item_create", args=[grouped_order.code])
|
||||
response = client_log.post(create_item_url, {"name": "Pain test", "price": "2"})
|
||||
response.status_code == 302
|
||||
response.url == reverse("order:manage_items", args=[grouped_order.pk])
|
||||
response.url == reverse("order:manage_items", args=[grouped_order.code])
|
||||
assert grouped_order.item_set.count() == 1
|
||||
|
||||
# Delete the item
|
||||
|
@ -1012,7 +1010,7 @@ class TestGroupedOrderAddItemsView:
|
|||
delete_item_url = reverse("order:item_delete", args=[grouped_order.id, item.id])
|
||||
response = client_log.post(delete_item_url)
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse("order:manage_items", args=[grouped_order.pk])
|
||||
assert response.url == reverse("order:manage_items", args=[grouped_order.code])
|
||||
assert grouped_order.item_set.count() == 0
|
||||
|
||||
def test_create_or_delete_item__not_orga(self, client_log, other_user):
|
||||
|
@ -1062,7 +1060,7 @@ class TestGroupedOrderDeleteView:
|
|||
|
||||
# get the delete view
|
||||
delete_view_url = reverse(
|
||||
"order:delete_grouped_order", kwargs={"pk": grouped_order.pk}
|
||||
"order:delete_grouped_order", kwargs={"code": grouped_order.code}
|
||||
)
|
||||
response = client_log.get(delete_view_url)
|
||||
assert response.status_code == 200
|
||||
|
@ -1091,7 +1089,7 @@ class TestGroupedOrderDeleteView:
|
|||
|
||||
# get the delete view
|
||||
delete_view_url = reverse(
|
||||
"order:delete_grouped_order", kwargs={"pk": grouped_order.pk}
|
||||
"order:delete_grouped_order", kwargs={"code": grouped_order.code}
|
||||
)
|
||||
response = client_log.get(delete_view_url)
|
||||
assert response.status_code == 403
|
||||
|
@ -1114,7 +1112,7 @@ class TestGroupedOrderDeleteView:
|
|||
|
||||
# get the delete view
|
||||
delete_view_url = reverse(
|
||||
"order:delete_grouped_order", kwargs={"pk": grouped_order.pk}
|
||||
"order:delete_grouped_order", kwargs={"code": grouped_order.code}
|
||||
)
|
||||
response = client.get(delete_view_url)
|
||||
assert response.status_code == 302
|
||||
|
@ -1148,7 +1146,7 @@ class TestGroupedOrderDuplicateView:
|
|||
|
||||
# duplicate
|
||||
duplicate_view_url = reverse(
|
||||
"order:duplicate_grouped_order", kwargs={"pk": grouped_order.pk}
|
||||
"order:duplicate_grouped_order", kwargs={"code": grouped_order.code}
|
||||
)
|
||||
response = client_log.get(duplicate_view_url)
|
||||
assert models.GroupedOrder.objects.count() == 2
|
||||
|
@ -1166,7 +1164,7 @@ class TestGroupedOrderDuplicateView:
|
|||
# redirection
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse(
|
||||
"order:update_grouped_order", kwargs={"pk": new_grouped_order.pk}
|
||||
"order:update_grouped_order", kwargs={"code": new_grouped_order.code}
|
||||
)
|
||||
|
||||
# The initial grouped order did not change
|
||||
|
@ -1184,7 +1182,7 @@ class TestGroupedOrderDuplicateView:
|
|||
|
||||
# get the duplicate view
|
||||
duplicate_view_url = reverse(
|
||||
"order:duplicate_grouped_order", kwargs={"pk": grouped_order.pk}
|
||||
"order:duplicate_grouped_order", kwargs={"code": grouped_order.code}
|
||||
)
|
||||
response = client_log.get(duplicate_view_url)
|
||||
assert response.status_code == 403
|
||||
|
@ -1203,7 +1201,7 @@ class TestGroupedOrderDuplicateView:
|
|||
|
||||
# get the duplicate view
|
||||
duplicate_view_url = reverse(
|
||||
"order:duplicate_grouped_order", kwargs={"pk": grouped_order.pk}
|
||||
"order:duplicate_grouped_order", kwargs={"code": grouped_order.code}
|
||||
)
|
||||
response = client.get(duplicate_view_url)
|
||||
assert response.status_code == 302
|
||||
|
@ -1225,7 +1223,7 @@ class TestGroupedOrderSheetView:
|
|||
generate_sheet_url = reverse(
|
||||
"order:grouped_order_sheet",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(generate_sheet_url)
|
||||
|
@ -1243,7 +1241,7 @@ class TestGroupedOrderSheetView:
|
|||
generate_sheet_url = reverse(
|
||||
"order:grouped_order_sheet",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(generate_sheet_url)
|
||||
|
@ -1261,7 +1259,7 @@ class TestGroupedOrderSheetView:
|
|||
generate_sheet_url = reverse(
|
||||
"order:grouped_order_sheet",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(generate_sheet_url)
|
||||
|
@ -1302,7 +1300,7 @@ class TestExportGroupedOrderEmailAddressesToCSVView:
|
|||
email_list_view_url = reverse(
|
||||
"order:email_list",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
assert auth.get_user(client).is_anonymous
|
||||
|
@ -1325,7 +1323,7 @@ class TestExportGroupedOrderEmailAddressesToCSVView:
|
|||
email_list_view_url = reverse(
|
||||
"order:email_list",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(email_list_view_url)
|
||||
|
@ -1344,7 +1342,7 @@ class TestExportGroupedOrderEmailAddressesToCSVView:
|
|||
email_list_view_url = reverse(
|
||||
"order:email_list",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(email_list_view_url)
|
||||
|
@ -1371,7 +1369,7 @@ class TestExportGroupedOrderToCSVView:
|
|||
csv_view_url = reverse(
|
||||
"order:grouped_order_csv_export",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
assert auth.get_user(client).is_anonymous
|
||||
|
@ -1394,7 +1392,7 @@ class TestExportGroupedOrderToCSVView:
|
|||
csv_view_url = reverse(
|
||||
"order:grouped_order_csv_export",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(csv_view_url)
|
||||
|
@ -1415,7 +1413,7 @@ class TestExportGroupedOrderToCSVView:
|
|||
csv_view_url = reverse(
|
||||
"order:grouped_order_csv_export",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.get(csv_view_url)
|
||||
|
|
|
@ -23,7 +23,7 @@ class TestItemCreateView:
|
|||
create_item_view_url = reverse(
|
||||
"order:item_create",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.post(
|
||||
|
@ -33,7 +33,7 @@ class TestItemCreateView:
|
|||
assert response.url == reverse(
|
||||
"order:manage_items",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
assert models.Item.objects.first().name == "titre item"
|
||||
|
@ -53,7 +53,7 @@ class TestItemCreateView:
|
|||
create_item_view_url = reverse(
|
||||
"order:item_create",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.post(create_item_view_url, {"name": "titre item"})
|
||||
|
@ -75,7 +75,7 @@ class TestItemCreateView:
|
|||
create_item_view_url = reverse(
|
||||
"order:item_create",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.post(create_item_view_url, {"name": "titre item"})
|
||||
|
|
|
@ -31,7 +31,7 @@ class TestOrder:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.post(
|
||||
|
@ -64,7 +64,7 @@ class TestOrder:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.post(
|
||||
|
@ -97,7 +97,7 @@ class TestOrder:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client_log.post(
|
||||
|
@ -132,7 +132,7 @@ class TestOrder:
|
|||
detail_url = reverse(
|
||||
"order:grouped_order_detail",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(detail_url)
|
||||
|
@ -144,7 +144,7 @@ class TestOrder:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.post(
|
||||
|
@ -191,7 +191,7 @@ class TestOrder:
|
|||
detail_url = reverse(
|
||||
"order:grouped_order_detail",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.get(detail_url)
|
||||
|
@ -203,7 +203,7 @@ class TestOrder:
|
|||
order_url = reverse(
|
||||
"order:order",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
response = client.post(
|
||||
|
@ -223,7 +223,7 @@ class TestOrder:
|
|||
assert response.url == reverse(
|
||||
"order:order_confirm",
|
||||
kwargs={
|
||||
"grouped_order_id": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
"pk": order.pk,
|
||||
},
|
||||
)
|
||||
|
@ -256,14 +256,14 @@ class TestOrder:
|
|||
assert item.ordered_nb == 4
|
||||
delete_url = reverse(
|
||||
"order:order_delete",
|
||||
kwargs={"grouped_order_id": grouped_order.id, "pk": order.id},
|
||||
kwargs={"code": grouped_order.code, "pk": order.id},
|
||||
)
|
||||
response = client_log.post(delete_url)
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse(
|
||||
"order:grouped_order_overview",
|
||||
kwargs={
|
||||
"pk": grouped_order.pk,
|
||||
"code": grouped_order.code,
|
||||
},
|
||||
)
|
||||
client_log.get(response.url)
|
||||
|
|
|
@ -22,6 +22,7 @@ def create_grouped_order(
|
|||
name=name, orga=orga_user, delivery_date=date, deadline=deadline
|
||||
)
|
||||
grouped_order.create_code_from_pk()
|
||||
grouped_order.save()
|
||||
return grouped_order
|
||||
|
||||
|
||||
|
|
|
@ -6,67 +6,69 @@ app_name = "order"
|
|||
urlpatterns = [
|
||||
path("", views.IndexView.as_view(), name="index"),
|
||||
path(
|
||||
"<int:pk>/", views.GroupedOrderDetailView.as_view(), name="grouped_order_detail"
|
||||
"<str:code>/",
|
||||
views.GroupedOrderDetailView.as_view(),
|
||||
name="grouped_order_detail",
|
||||
),
|
||||
path(
|
||||
"<int:pk>/gerer",
|
||||
"<str:code>/gerer",
|
||||
views.GroupedOrderOverview.as_view(),
|
||||
name="grouped_order_overview",
|
||||
),
|
||||
path("<int:grouped_order_id>/commander/", views.place_order, name="order"),
|
||||
path("<str:code>/commander/", views.place_order, name="order"),
|
||||
path(
|
||||
"<int:grouped_order_id>/<int:pk>/confirmation/",
|
||||
"<str:code>/<int:pk>/confirmation/",
|
||||
views.OrderDetailView.as_view(),
|
||||
name="order_confirm",
|
||||
),
|
||||
path(
|
||||
"<int:grouped_order_id>/gerer/<int:pk>/supprimer",
|
||||
"<str:code>/gerer/<int:pk>/supprimer",
|
||||
views.OrderDeleteView.as_view(),
|
||||
name="order_delete",
|
||||
),
|
||||
path("creer", views.GroupedOrderCreateView.as_view(), name="create_grouped_order"),
|
||||
path(
|
||||
"<int:pk>/gerer-produits",
|
||||
"<str:code>/gerer-produits",
|
||||
views.GroupedOrderAddItemsView.as_view(),
|
||||
name="manage_items",
|
||||
),
|
||||
path(
|
||||
"<int:pk>/modifier",
|
||||
"<str:code>/modifier",
|
||||
views.GroupedOrderUpdateView.as_view(),
|
||||
name="update_grouped_order",
|
||||
),
|
||||
path(
|
||||
"<int:pk>/supprimer",
|
||||
"<str:code>/supprimer",
|
||||
views.GroupedOrderDeleteView.as_view(),
|
||||
name="delete_grouped_order",
|
||||
),
|
||||
path(
|
||||
"<int:pk>/dupliquer",
|
||||
"<str:code>/dupliquer",
|
||||
views.GroupedOrderDuplicateView.as_view(),
|
||||
name="duplicate_grouped_order",
|
||||
),
|
||||
path(
|
||||
"<int:pk>/gerer-produits/nouveau",
|
||||
"<str:code>/gerer-produits/nouveau",
|
||||
views.ItemCreateView.as_view(),
|
||||
name="item_create",
|
||||
),
|
||||
path(
|
||||
"<int:grouped_order_id>/gerer-produits/<int:pk>/supprimer",
|
||||
"<str:code>/gerer-produits/<int:pk>/supprimer",
|
||||
views.ItemDeleteView.as_view(),
|
||||
name="item_delete",
|
||||
),
|
||||
path(
|
||||
"<int:pk>/gerer/imprimer",
|
||||
"<str:code>/gerer/imprimer",
|
||||
views.DownloadGroupedOrderSheetView.as_view(),
|
||||
name="grouped_order_sheet",
|
||||
),
|
||||
path(
|
||||
"<int:grouped_order_id>/gerer/liste-mails",
|
||||
"<str:code>/gerer/liste-mails",
|
||||
views.ExportGroupedOrderEmailAddressesToCSVView.as_view(),
|
||||
name="email_list",
|
||||
),
|
||||
path(
|
||||
"<int:pk>/gerer/csv",
|
||||
"<str:code>/gerer/csv",
|
||||
views.ExportGroupedOrderToCSVView.as_view(),
|
||||
name="grouped_order_csv_export",
|
||||
),
|
||||
|
|
|
@ -68,6 +68,10 @@ class GroupedOrderDetailView(generic.DetailView):
|
|||
template_name = "order/grouped_order_detail.html"
|
||||
context_object_name = "grouped_order"
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
"""Get the object from the code in url path"""
|
||||
return get_object_or_404(GroupedOrder, code=self.kwargs.get("code"))
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
# Get remaining quantities
|
||||
|
@ -91,6 +95,10 @@ class GroupedOrderOverview(UserPassesTestMixin, generic.DetailView):
|
|||
template_name = "order/grouped_order_overview.html"
|
||||
context_object_name = "grouped_order"
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
"""Get the object from the code in url path"""
|
||||
return get_object_or_404(GroupedOrder, code=self.kwargs.get("code"))
|
||||
|
||||
def test_func(self):
|
||||
"""Accessible only if the requesting user is the grouped order organizer"""
|
||||
return self.get_object().orga == self.request.user
|
||||
|
@ -137,6 +145,10 @@ class GroupedOrderUpdateView(UserPassesTestMixin, generic.UpdateView):
|
|||
context_object_name = "grouped_order"
|
||||
form_class = GroupedOrderForm
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
"""Get the object from the code in url path"""
|
||||
return get_object_or_404(GroupedOrder, code=self.kwargs.get("code"))
|
||||
|
||||
def test_func(self):
|
||||
"""Accessible only if the requesting user is the grouped order organizer"""
|
||||
return self.get_object().orga == self.request.user
|
||||
|
@ -151,20 +163,19 @@ class GroupedOrderDuplicateView(UserPassesTestMixin, generic.RedirectView):
|
|||
"""View for duplicating an existing grouped order : the groupedOrder is duplicated
|
||||
and the user is redirected to the new grouped order update view"""
|
||||
|
||||
# url = reverse_lazy("order:update_grouped_order", args=(self.get_object().pk,))
|
||||
|
||||
def test_func(self):
|
||||
"""Accessible only if the requesting user is the grouped order organizer"""
|
||||
initial_grouped_order_id = self.kwargs.get("pk")
|
||||
return (
|
||||
GroupedOrder.objects.get(pk=initial_grouped_order_id).orga
|
||||
== self.request.user
|
||||
initial_grouped_order = get_object_or_404(
|
||||
GroupedOrder, code=self.kwargs.get("code")
|
||||
)
|
||||
return initial_grouped_order.orga == self.request.user
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
# overwrite the get function to copy the initial grouped order before redirecting to
|
||||
# the update view of the new grouped order
|
||||
initial_grouped_order = GroupedOrder.objects.get(pk=self.kwargs.get("pk"))
|
||||
initial_grouped_order = get_object_or_404(
|
||||
GroupedOrder, code=self.kwargs.get("code")
|
||||
)
|
||||
new_grouped_order = GroupedOrder.objects.create(
|
||||
name=f"{initial_grouped_order.name} - copie",
|
||||
orga=self.request.user,
|
||||
|
@ -173,6 +184,9 @@ class GroupedOrderDuplicateView(UserPassesTestMixin, generic.RedirectView):
|
|||
place=initial_grouped_order.place,
|
||||
description=initial_grouped_order.description,
|
||||
)
|
||||
# create a unique code for the new grouped order
|
||||
new_grouped_order.create_code_from_pk()
|
||||
new_grouped_order.save()
|
||||
# duplicate each item and add it to new_grouped_order
|
||||
for item in initial_grouped_order.item_set.all():
|
||||
item.pk = None
|
||||
|
@ -180,13 +194,13 @@ class GroupedOrderDuplicateView(UserPassesTestMixin, generic.RedirectView):
|
|||
item.save()
|
||||
new_grouped_order.item_set.add(item)
|
||||
|
||||
self.kwargs["new_go_id"] = new_grouped_order.pk
|
||||
self.kwargs["new_go_code"] = new_grouped_order.code
|
||||
|
||||
return super().get(request, *args, **kwargs)
|
||||
|
||||
def get_redirect_url(self, *args, **kwargs):
|
||||
return reverse_lazy(
|
||||
"order:update_grouped_order", kwargs={"pk": self.kwargs["new_go_id"]}
|
||||
"order:update_grouped_order", kwargs={"code": self.kwargs["new_go_code"]}
|
||||
)
|
||||
|
||||
|
||||
|
@ -197,6 +211,10 @@ class GroupedOrderDeleteView(UserPassesTestMixin, generic.DeleteView):
|
|||
template_name = "order/grouped_order_confirm_delete.html"
|
||||
context_object_name = "grouped_order"
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
"""Get the object from the code in url path"""
|
||||
return get_object_or_404(GroupedOrder, code=self.kwargs.get("code"))
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy("order:index")
|
||||
|
||||
|
@ -221,18 +239,20 @@ class GroupedOrderAddItemsView(UserPassesTestMixin, generic.ListView):
|
|||
|
||||
def get_queryset(self):
|
||||
items = super().get_queryset()
|
||||
items = items.filter(grouped_order__id=self.kwargs.get("pk"))
|
||||
items = items.filter(grouped_order__code=self.kwargs.get("code"))
|
||||
return items
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(GroupedOrderAddItemsView, self).get_context_data(**kwargs)
|
||||
context["grouped_order"] = GroupedOrder.objects.get(id=self.kwargs.get("pk"))
|
||||
context["grouped_order"] = GroupedOrder.objects.get(
|
||||
code=self.kwargs.get("code")
|
||||
)
|
||||
return context
|
||||
|
||||
def test_func(self):
|
||||
"""Accessible only if the requesting user is the grouped order organizer"""
|
||||
grouped_order_id = self.kwargs.get("pk")
|
||||
return GroupedOrder.objects.get(pk=grouped_order_id).orga == self.request.user
|
||||
grouped_order = get_object_or_404(GroupedOrder, code=self.kwargs.get("code"))
|
||||
return grouped_order.orga == self.request.user
|
||||
|
||||
|
||||
class GroupedOrderExportView(UserPassesTestMixin, generic.DetailView):
|
||||
|
@ -243,6 +263,10 @@ class GroupedOrderExportView(UserPassesTestMixin, generic.DetailView):
|
|||
template_name = "order/grouped_order_sheet.html"
|
||||
context_object_name = "grouped_order"
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
"""Get the object from the code in url path"""
|
||||
return get_object_or_404(GroupedOrder, code=self.kwargs.get("code"))
|
||||
|
||||
def test_func(self):
|
||||
"""Accessible only if the requesting user is the grouped order organizer"""
|
||||
return self.get_object().orga == self.request.user
|
||||
|
@ -288,12 +312,13 @@ class ExportGroupedOrderEmailAddressesToCSVView(UserPassesTestMixin, generic.Vie
|
|||
|
||||
def test_func(self):
|
||||
"""Accessible only if the requesting user is the grouped order organizer"""
|
||||
grouped_order_id = self.kwargs.get("grouped_order_id")
|
||||
return GroupedOrder.objects.get(pk=grouped_order_id).orga == self.request.user
|
||||
initial_grouped_order = get_object_or_404(
|
||||
GroupedOrder, code=self.kwargs.get("code")
|
||||
)
|
||||
return initial_grouped_order.orga == self.request.user
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
grouped_order_id = self.kwargs.get("grouped_order_id")
|
||||
grouped_order = get_object_or_404(GroupedOrder, pk=grouped_order_id)
|
||||
grouped_order = get_object_or_404(GroupedOrder, code=self.kwargs.get("code"))
|
||||
participants = OrderAuthor.objects.filter(
|
||||
order__in=grouped_order.order_set.all()
|
||||
)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from django.contrib.auth.mixins import UserPassesTestMixin
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.urls import reverse_lazy
|
||||
from django.views import generic
|
||||
|
||||
|
@ -14,13 +15,13 @@ class ItemCreateView(UserPassesTestMixin, generic.CreateView):
|
|||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super().get_form_kwargs()
|
||||
kwargs["grouped_order"] = GroupedOrder.objects.get(id=self.kwargs.get("pk"))
|
||||
kwargs["grouped_order"] = GroupedOrder.objects.get(code=self.kwargs.get("code"))
|
||||
return kwargs
|
||||
|
||||
def test_func(self):
|
||||
"""Accessible only if the requesting user is the grouped order organizer"""
|
||||
grouped_order_id = self.kwargs.get("pk")
|
||||
return GroupedOrder.objects.get(pk=grouped_order_id).orga == self.request.user
|
||||
grouped_order = get_object_or_404(GroupedOrder, code=self.kwargs.get("code"))
|
||||
return grouped_order.orga == self.request.user
|
||||
|
||||
|
||||
class ItemDeleteView(UserPassesTestMixin, generic.DeleteView):
|
||||
|
@ -31,7 +32,7 @@ class ItemDeleteView(UserPassesTestMixin, generic.DeleteView):
|
|||
model = Item
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy("order:manage_items", args=[self.object.grouped_order.id])
|
||||
return reverse_lazy("order:manage_items", args=[self.object.grouped_order.code])
|
||||
|
||||
def test_func(self):
|
||||
"""Accessible only if the requesting user is the grouped order organizer"""
|
||||
|
|
|
@ -7,9 +7,9 @@ from django.views import generic
|
|||
from ..models import GroupedOrder, Order, OrderAuthor, OrderedItem
|
||||
|
||||
|
||||
def place_order(request, grouped_order_id):
|
||||
def place_order(request, code):
|
||||
"""Creates an AnonymousUser, and an Order for this GroupedOrder, with related OrderedItems"""
|
||||
grouped_order = get_object_or_404(GroupedOrder, pk=grouped_order_id)
|
||||
grouped_order = get_object_or_404(GroupedOrder, code=code)
|
||||
|
||||
# check if the grouped order is ongoing or if the user is allowed to order
|
||||
user_is_orga = request.user == grouped_order.orga
|
||||
|
@ -101,7 +101,7 @@ def place_order(request, grouped_order_id):
|
|||
# with POST data. This prevents data from being posted twice if a
|
||||
# user hits the Back button.
|
||||
return http.HttpResponseRedirect(
|
||||
reverse("order:order_confirm", args=(grouped_order.pk, order.pk))
|
||||
reverse("order:order_confirm", args=(grouped_order.code, order.pk))
|
||||
)
|
||||
|
||||
|
||||
|
@ -133,7 +133,7 @@ class OrderDeleteView(UserPassesTestMixin, generic.DeleteView):
|
|||
|
||||
def get_success_url(self):
|
||||
return reverse_lazy(
|
||||
"order:grouped_order_overview", args=[self.object.grouped_order.id]
|
||||
"order:grouped_order_overview", args=[self.object.grouped_order.code]
|
||||
)
|
||||
|
||||
def test_func(self):
|
||||
|
|
Loading…
Reference in a new issue