From 38c4dbb1ca740640ecdd695246dba89d7dc8f549 Mon Sep 17 00:00:00 2001
From: George Katsikas <giorgakis.katsikas@gmail.com>
Date: Wed, 24 Apr 2024 16:29:11 +0200
Subject: [PATCH] rename mailchimp lists appropriately

---
 scipost_django/SciPost_v1/urls.py             |  2 +-
 scipost_django/mailing_lists/forms.py         |  2 +-
 scipost_django/mailing_lists/models.py        |  5 +-
 .../mailing_lists/mailchimp_overview.html     | 70 +++++++++++++++++++
 .../mailing_lists/mailchimplist_form.html     | 42 +++++++----
 .../templates/mailing_lists/overview.html     | 50 -------------
 .../mailing_lists/widget_checkbox_option.html |  1 -
 scipost_django/mailing_lists/urls.py          | 31 +++++---
 scipost_django/mailing_lists/views.py         |  8 +--
 .../scipost/personal_page/_hx_admin.html      |  2 +-
 10 files changed, 131 insertions(+), 82 deletions(-)
 create mode 100644 scipost_django/mailing_lists/templates/mailing_lists/mailchimp_overview.html
 delete mode 100644 scipost_django/mailing_lists/templates/mailing_lists/overview.html
 delete mode 100644 scipost_django/mailing_lists/templates/mailing_lists/widget_checkbox_option.html

diff --git a/scipost_django/SciPost_v1/urls.py b/scipost_django/SciPost_v1/urls.py
index 41d3a55c1..6f5e274a8 100644
--- a/scipost_django/SciPost_v1/urls.py
+++ b/scipost_django/SciPost_v1/urls.py
@@ -103,7 +103,7 @@ urlpatterns = [
     path("helpdesk/", include("helpdesk.urls", namespace="helpdesk")),
     path("invitations/", include("invitations.urls", namespace="invitations")),
     path("journals/", include("journals.urls.general", namespace="journals")),
-    path("mailing_list/", include("mailing_lists.urls", namespace="mailing_lists")),
+    path("mailing_lists/", include("mailing_lists.urls", namespace="mailing_lists")),
     path("markup/", include("markup.urls", namespace="markup")),
     path("submissions/", include("submissions.urls", namespace="submissions")),
     path("submission/", include("submissions.urls", namespace="_submissions")),
diff --git a/scipost_django/mailing_lists/forms.py b/scipost_django/mailing_lists/forms.py
index 708c895a7..ce1058f00 100644
--- a/scipost_django/mailing_lists/forms.py
+++ b/scipost_django/mailing_lists/forms.py
@@ -41,5 +41,5 @@ class MailchimpUpdateForm(forms.Form):
             count += 1
         return count
 
-    def sync_members(self, _list):
+    def sync_mailchimp_members(self, _list):
         return _list.update_members()
diff --git a/scipost_django/mailing_lists/models.py b/scipost_django/mailing_lists/models.py
index 5aba01bc0..4c3ae16c6 100644
--- a/scipost_django/mailing_lists/models.py
+++ b/scipost_django/mailing_lists/models.py
@@ -57,7 +57,10 @@ class MailchimpList(TimeStampedModel):
         return self.name
 
     def get_absolute_url(self):
-        return reverse("mailing_lists:list_detail", args=[self.mailchimp_list_id])
+        return reverse(
+            "mailing_lists:mailchimp_list_detail",
+            args=[self.mailchimp_list_id],
+        )
 
     @transaction.atomic
     def update_members(self, status="subscribed"):
diff --git a/scipost_django/mailing_lists/templates/mailing_lists/mailchimp_overview.html b/scipost_django/mailing_lists/templates/mailing_lists/mailchimp_overview.html
new file mode 100644
index 000000000..676f49b4a
--- /dev/null
+++ b/scipost_django/mailing_lists/templates/mailing_lists/mailchimp_overview.html
@@ -0,0 +1,70 @@
+{% extends 'scipost/_personal_page_base.html' %}
+
+{% block pagetitle %}
+  : mailing lists
+{% endblock pagetitle %}
+
+{% block breadcrumb_items %}
+  {{ block.super }}
+  <span class="breadcrumb-item">Mailchimp lists</span>
+{% endblock %}
+
+{% block content %}
+
+
+  <div class="row">
+    <div class="col-12">
+      <h1>All MailChimp lists known to SciPost</h1>
+      <h3>Actions:</h3>
+      <ul class="actions">
+        <li>
+          <a href="{% url 'mailing_lists:sync_mailchimp_lists' %}">Syncronize lists with the mail server</a>
+        </li>
+
+        {% if perms.scipost.can_read_all_privacy_sensitive_data %}
+          <li>
+            <a href="{% url 'mailing_lists:export_non_registered_invitations' %}">Export non-registered user invitations for MailChimp</a>
+          </li>
+        {% endif %}
+
+      </ul>
+    </div>
+  </div>
+
+  <div class="row">
+    <div class="col-12">
+      <div class="card border-0">
+        <h3 class="card-title">All lists in the database:</h3>
+        <ul class="list-group list-group-flush">
+
+          {% for mail_list in object_list %}
+            <li class="list-group-item">
+              <div class="py-1">
+                <h3>
+                  <a href="{{ mail_list.get_absolute_url }}">{{ mail_list }}</a> <small><code>ID: {{ mail_list.mailchimp_list_id }}</code></small>
+
+                  {% if mail_list.open_for_subscription %}
+                    <span class="label label-sm label-outline-info">Open for subscription</span>
+                  {% endif %}
+
+                </h3>
+                <p class="text-muted mb-0">
+                  {{ mail_list.get_status_display }} | {{ mail_list.allowed_groups.count }} group{{ mail_list.allowed_groups.count|pluralize }} | last update: {{ mail_list.latest_activity }}
+                </p>
+              </div>
+            </li>
+          {% empty %}
+            <li class="list-group-item">
+              <p class="mb-0">
+                No mailing lists known. Please <a href="{% url 'mailing_lists:sync_mailchimp_lists' %}">update the list</a>.
+              </p>
+            </li>
+          {% endfor %}
+
+        </ul>
+      </div>
+    </div>
+  </div>
+
+
+{% endblock content %}
diff --git a/scipost_django/mailing_lists/templates/mailing_lists/mailchimplist_form.html b/scipost_django/mailing_lists/templates/mailing_lists/mailchimplist_form.html
index a6303ca6e..49aa74369 100644
--- a/scipost_django/mailing_lists/templates/mailing_lists/mailchimplist_form.html
+++ b/scipost_django/mailing_lists/templates/mailing_lists/mailchimplist_form.html
@@ -1,13 +1,16 @@
 {% extends 'scipost/_personal_page_base.html' %}
 
-{% block pagetitle %}: mailing lists{% endblock pagetitle %}
+{% block pagetitle %}
+  : mailing lists
+{% endblock pagetitle %}
 
 {% load bootstrap %}
 
 {% block breadcrumb_items %}
-  {{block.super}}
-  <a href="{% url 'mailing_lists:overview' %}" class="breadcrumb-item">Mailing lists</a>
-  <span class="breadcrumb-item">{{object}}</span>
+  {{ block.super }}
+  <a href="{% url 'mailing_lists:mailchimp_overview' %}"
+     class="breadcrumb-item">Mailing lists</a>
+  <span class="breadcrumb-item">{{ object }}</span>
 {% endblock %}
 
 {% block content %}
@@ -15,12 +18,16 @@
 
   <div class="row">
     <div class="col-12">
-      <h1>Edit the mailing list <i>{{object}}</i></h1>
+      <h1>
+        Edit the mailing list <i>{{ object }}</i>
+      </h1>
       <h3>Mailchimp configuration:</h3>
-      <pre><code>ID: {{object.mailchimp_list_id}}<br>Name: {{object.name}}<br>Status: {{object.get_status_display}}<br>Member count: {{object.subscriber_count}}</code></pre>
+      <pre><code>ID: {{object.mailchimp_list_id}}<br />Name: {{object.name}}<br />Status: {{object.get_status_display}}<br />Member count: {{object.subscriber_count}}</code></pre>
       <h3 class="mt-2">Actions:</h3>
       <ul class="actions">
-        <li><a href="{% url 'mailing_lists:sync_members' object.mailchimp_list_id %}">Syncronize members of the list</a></li>
+        <li>
+          <a href="{% url 'mailing_lists:sync_mailchimp_members' object.mailchimp_list_id %}">Syncronize members of the list</a>
+        </li>
       </ul>
     </div>
   </div>
@@ -29,19 +36,24 @@
     <div class="col-12">
       <form method="post">
         {% csrf_token %}
-        {{form|bootstrap}}
+        {{ form|bootstrap }}
         <input type="submit" value="Update" class="btn btn-outline-secondary" />
       </form>
+
       {% if request.GET.bulkid %}
         <div class="mb-3 mt-5">
-          <hr>
+          <hr />
           <h2>Synchronizing done</h2>
           <p>
-            Response bulk ID: <code>{{request.GET.bulkid}}</code><br>
-            Check <a href="//us1.api.mailchimp.com/playground" target="_blank" rel="noopener">MailChimp's Playground</a> to see the response status.
-        </div>
-      {% endif %}
+            Response bulk ID: <code>{{ request.GET.bulkid }}</code>
+            <br />
+            Check <a href="//us1.api.mailchimp.com/playground"
+    target="_blank"
+    rel="noopener">MailChimp's Playground</a> to see the response status.
+          </div>
+        {% endif %}
+
+      </div>
     </div>
-  </div>
 
-{% endblock content %}
+  {% endblock content %}
diff --git a/scipost_django/mailing_lists/templates/mailing_lists/overview.html b/scipost_django/mailing_lists/templates/mailing_lists/overview.html
deleted file mode 100644
index ee687436d..000000000
--- a/scipost_django/mailing_lists/templates/mailing_lists/overview.html
+++ /dev/null
@@ -1,50 +0,0 @@
-{% extends 'scipost/_personal_page_base.html' %}
-
-{% block pagetitle %}: mailing lists{% endblock pagetitle %}
-
-{% block breadcrumb_items %}
-  {{block.super}}
-  <span class="breadcrumb-item">Mailing lists</span>
-{% endblock %}
-
-{% block content %}
-
-
-  <div class="row">
-    <div class="col-12">
-      <h1>All mailing lists known to SciPost</h1>
-      <h3>Actions:</h3>
-      <ul class="actions">
-        <li><a href="{% url 'mailing_lists:sync_lists' %}">Syncronize lists with the mail server</a></li>
-        {% if perms.scipost.can_read_all_privacy_sensitive_data %}
-          <li><a href="{% url 'mailing_lists:export_non_registered_invitations' %}">Export non-registered user invitations for MailChimp</a></li>
-        {% endif %}
-
-      </ul>
-    </div>
-  </div>
-
-  <div class="row">
-    <div class="col-12">
-      <div class="card border-0">
-        <h3 class="card-title">All lists in the database:</h3>
-        <ul class="list-group list-group-flush">
-          {% for mail_list in object_list %}
-            <li class="list-group-item">
-              <div class="py-1">
-                <h3><a href="{{mail_list.get_absolute_url}}">{{mail_list}}</a> <small><code>ID: {{mail_list.mailchimp_list_id}}</code></small> {% if mail_list.open_for_subscription %}<span class="label label-sm label-outline-info">Open for subscription</span>{% endif %}</h3>
-                <p class="text-muted mb-0">{{mail_list.get_status_display}} | {{mail_list.allowed_groups.count}} group{{mail_list.allowed_groups.count|pluralize}} | last update: {{mail_list.latest_activity}}</p>
-              </div>
-            </li>
-          {% empty %}
-            <li class="list-group-item">
-              <p class="mb-0">No mailing lists known. Please <a href="{% url 'mailing_lists:sync_lists' %}">update the list</a>.</p>
-            </li>
-          {% endfor %}
-        </ul>
-      </div>
-    </div>
-  </div>
-
-
-{% endblock content %}
diff --git a/scipost_django/mailing_lists/templates/mailing_lists/widget_checkbox_option.html b/scipost_django/mailing_lists/templates/mailing_lists/widget_checkbox_option.html
deleted file mode 100644
index e428f69f4..000000000
--- a/scipost_django/mailing_lists/templates/mailing_lists/widget_checkbox_option.html
+++ /dev/null
@@ -1 +0,0 @@
-ecx
diff --git a/scipost_django/mailing_lists/urls.py b/scipost_django/mailing_lists/urls.py
index 616273cf4..e1d247b81 100644
--- a/scipost_django/mailing_lists/urls.py
+++ b/scipost_django/mailing_lists/urls.py
@@ -10,17 +10,32 @@ app_name = "mailing_lists"
 
 urlpatterns = [
     # Mailchimp
-    path("", views.MailchimpListView.as_view(), name="overview"),
-    path("sync", views.syncronize_lists, name="sync_lists"),
-    path("sync/<str:list_id>/members", views.syncronize_members, name="sync_members"),
-    path("<str:list_id>/", views.ListDetailView.as_view(), name="list_detail"),
     path(
-        "non_registered/export",
-        views.export_non_registered_invitations,
-        name="export_non_registered_invitations",
+        "mailchimp/",
+        include(
+            [
+                path("", views.MailchimpListView.as_view(), name="mailchimp_overview"),
+                path("sync", views.syncronize_lists, name="sync_mailchimp_lists"),
+                path(
+                    "sync/<str:list_id>/members",
+                    views.syncronize_members,
+                    name="sync_mailchimp_members",
+                ),
+                path(
+                    "<str:list_id>/",
+                    views.MailchimpListDetailView.as_view(),
+                    name="mailchimp_list_detail",
+                ),
+                path(
+                    "non_registered/export",
+                    views.export_non_registered_invitations,
+                    name="export_non_registered_invitations",
+                ),
+            ]
+        ),
     ),
     path(
-        "mailing_list/<int:pk>/",
+        "<int:pk>/",
         include(
             [
                 path(
diff --git a/scipost_django/mailing_lists/views.py b/scipost_django/mailing_lists/views.py
index c08072edd..6cd362ab1 100644
--- a/scipost_django/mailing_lists/views.py
+++ b/scipost_django/mailing_lists/views.py
@@ -33,7 +33,7 @@ class MailchimpListView(MailchimpMixin, ListView):
     some general mailchimp settings.
     """
 
-    template_name = "mailing_lists/overview.html"
+    template_name = "mailing_lists/mailchimp_overview.html"
     model = MailchimpList
 
 
@@ -49,7 +49,7 @@ def syncronize_lists(request):
     messages.success(
         request, "%i mailing lists have succesfully been updated." % updated
     )
-    return redirect(reverse("mailing_lists:overview"))
+    return redirect(reverse("mailing_lists:mailchimp_overview"))
 
 
 @login_required
@@ -85,7 +85,7 @@ def syncronize_members(request, list_id):
     """
     _list = get_object_or_404(MailchimpList, mailchimp_list_id=list_id)
     form = MailchimpUpdateForm()
-    unsubscribed, subscribed, response = form.sync_members(_list)
+    unsubscribed, subscribed, response = form.sync_mailchimp_members(_list)
 
     # Let the user know
     text = "<h3>Syncronize members complete.</h3>"
@@ -97,7 +97,7 @@ def syncronize_members(request, list_id):
     return redirect(_list.get_absolute_url() + "?bulkid=" + response.get("id"))
 
 
-class ListDetailView(MailchimpMixin, UpdateView):
+class MailchimpListDetailView(MailchimpMixin, UpdateView):
     """
     The detail view of a certain Mailchimp list. This allows the admin to i.e. manage group
     permissions to the group.
diff --git a/scipost_django/scipost/templates/scipost/personal_page/_hx_admin.html b/scipost_django/scipost/templates/scipost/personal_page/_hx_admin.html
index f330ec572..1180464f5 100644
--- a/scipost_django/scipost/templates/scipost/personal_page/_hx_admin.html
+++ b/scipost_django/scipost/templates/scipost/personal_page/_hx_admin.html
@@ -51,7 +51,7 @@
             <li><a href="{% url 'scipost:email_particular' %}">Email a particular individual/address</a></li>
           {% endif %}
           {% if perms.scipost.can_manage_mailchimp %}
-            <li><a href="{% url 'mailing_lists:overview' %}">Manage mailing lists</a></li>
+            <li><a href="{% url 'mailing_lists:mailchimp_overview' %}">Manage Mailchimp lists</a></li>
           {% endif %}
         </ul>
       {% endif %}
-- 
GitLab