diff --git a/la_chariotte/order/templates/order/grouped_order_overview.html b/la_chariotte/order/templates/order/grouped_order_overview.html index 02498a7..49432e1 100644 --- a/la_chariotte/order/templates/order/grouped_order_overview.html +++ b/la_chariotte/order/templates/order/grouped_order_overview.html @@ -137,9 +137,12 @@
Liste des commandes
{% if grouped_order.order_set.all %} @@ -281,6 +284,68 @@ navigator.clipboard.writeText(copyText.value); } + // Download emails list to csv + document.addEventListener('DOMContentLoaded', function () { + const downloadButton = document.getElementById('downloadButton'); + + downloadButton.addEventListener('click', function () { + fetch("{% url 'order:email_list' grouped_order.code %}") + .then(response => response.json()) + .then(data => { + + const orderName = data.order_name; + + const header = "Emails"; + const emailList = data.email_list; + const csvText = [header].concat(emailList).join('\n'); + + const blob = new Blob([csvText], { type: 'text/csv' }); + + const url = window.URL.createObjectURL(blob); + + const a = document.createElement('a'); + a.href = url; + a.download = orderName + '-mails.csv'; + document.body.appendChild(a); + + a.click(); + + document.body.removeChild(a); + + window.URL.revokeObjectURL(url); + }); + }); + }); + + // Copy emails list to clipboard + document.addEventListener('DOMContentLoaded', function () { + const copyButton = document.getElementById('copyButton'); + + copyButton.addEventListener('click', function () { + fetch("{% url 'order:email_list' grouped_order.code %}") + .then(response => response.json()) + .then(data => { + + const emailList = data.email_list; + + const emailText = emailList.join('\n'); + + const textArea = document.createElement('textarea'); + textArea.value = emailText; + + document.body.appendChild(textArea); + + textArea.select(); + + document.execCommand('copy'); + + document.body.removeChild(textArea); + + alert('Emails copiés depuis l\'URL dans le presse-papiers !'); + }); + }); + }); + // Tabs function openTab(idToOpen) { var i, tabcontent, tablinks; diff --git a/la_chariotte/order/tests/test_views/test_views_grouped_order.py b/la_chariotte/order/tests/test_views/test_views_grouped_order.py index 9d1b145..c208638 100644 --- a/la_chariotte/order/tests/test_views/test_views_grouped_order.py +++ b/la_chariotte/order/tests/test_views/test_views_grouped_order.py @@ -1396,7 +1396,10 @@ class TestExportGroupedOrderEmailAddressesToCSVView: ) response = client_log.get(email_list_view_url) assert response.status_code == 200 - assert response.content.decode() == "\r\n" + assert ( + response.content.decode() + == '{"order_name": "gr order test", "email_list": []}' + ) email = order_items_in_grouped_order(grouped_order).author.email response = client_log.get(email_list_view_url) diff --git a/la_chariotte/order/urls.py b/la_chariotte/order/urls.py index c6226e6..54d49ca 100644 --- a/la_chariotte/order/urls.py +++ b/la_chariotte/order/urls.py @@ -69,7 +69,7 @@ urlpatterns = [ ), path( "