mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-05 21:31:50 +02:00
duplicate grouped order part 2
This commit is contained in:
parent
c8c9744c98
commit
0bf680c74b
3 changed files with 49 additions and 2 deletions
|
@ -35,6 +35,11 @@ urlpatterns = [
|
||||||
views.GroupedOrderDeleteView.as_view(),
|
views.GroupedOrderDeleteView.as_view(),
|
||||||
name="delete_grouped_order",
|
name="delete_grouped_order",
|
||||||
),
|
),
|
||||||
|
path(
|
||||||
|
"<int:pk>/dupliquer",
|
||||||
|
views.GroupedOrderDuplicateView.as_view(),
|
||||||
|
name="duplicate_grouped_order",
|
||||||
|
),
|
||||||
path(
|
path(
|
||||||
"<int:pk>/gerer-produits/nouveau",
|
"<int:pk>/gerer-produits/nouveau",
|
||||||
views.ItemCreateView.as_view(),
|
views.ItemCreateView.as_view(),
|
||||||
|
|
|
@ -2,8 +2,9 @@
|
||||||
from .grouped_order import (ExportGroupedOrderEmailAddressesToCSVView,
|
from .grouped_order import (ExportGroupedOrderEmailAddressesToCSVView,
|
||||||
GroupedOrderAddItemsView, GroupedOrderCreateView,
|
GroupedOrderAddItemsView, GroupedOrderCreateView,
|
||||||
GroupedOrderDeleteView, GroupedOrderDetailView,
|
GroupedOrderDeleteView, GroupedOrderDetailView,
|
||||||
GroupedOrderOverview, GroupedOrderSheetView,
|
GroupedOrderDuplicateView, GroupedOrderOverview,
|
||||||
GroupedOrderUpdateView, IndexView)
|
GroupedOrderSheetView, GroupedOrderUpdateView,
|
||||||
|
IndexView)
|
||||||
from .item import ItemCreateView, ItemDeleteView
|
from .item import ItemCreateView, ItemDeleteView
|
||||||
from .order import OrderDetailView, order
|
from .order import OrderDetailView, order
|
||||||
|
|
||||||
|
|
|
@ -129,6 +129,47 @@ class GroupedOrderUpdateView(UserPassesTestMixin, generic.UpdateView):
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
|
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"""
|
||||||
|
|
||||||
|
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
|
||||||
|
)
|
||||||
|
|
||||||
|
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"))
|
||||||
|
new_grouped_order = GroupedOrder.objects.create(
|
||||||
|
name=f"{initial_grouped_order.name} - copie",
|
||||||
|
orga=self.request.user,
|
||||||
|
delivery_date=initial_grouped_order.delivery_date,
|
||||||
|
deadline=initial_grouped_order.deadline,
|
||||||
|
place=initial_grouped_order.place,
|
||||||
|
description=initial_grouped_order.description,
|
||||||
|
)
|
||||||
|
# duplicate each item and add it to new_grouped_order
|
||||||
|
for item in initial_grouped_order.item_set.all():
|
||||||
|
item.pk = None
|
||||||
|
item.ordered_nb = 0
|
||||||
|
item.save()
|
||||||
|
new_grouped_order.item_set.add(item)
|
||||||
|
|
||||||
|
self.kwargs["new_go_id"] = new_grouped_order.pk
|
||||||
|
|
||||||
|
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"]}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class GroupedOrderDeleteView(UserPassesTestMixin, generic.DeleteView):
|
class GroupedOrderDeleteView(UserPassesTestMixin, generic.DeleteView):
|
||||||
"""View for deleting a grouped order"""
|
"""View for deleting a grouped order"""
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue