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