SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 38c4dbb1 authored by George Katsikas's avatar George Katsikas :goat:
Browse files

rename mailchimp lists appropriately

parent 9b51eb38
No related branches found
No related tags found
No related merge requests found
......@@ -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")),
......
......@@ -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()
......@@ -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"):
......
{% extends 'scipost/_personal_page_base.html' %}
{% block pagetitle %}: mailing lists{% endblock pagetitle %}
{% block pagetitle %}
: mailing lists
{% endblock pagetitle %}
{% block breadcrumb_items %}
{{block.super}}
<span class="breadcrumb-item">Mailing lists</span>
{{ block.super }}
<span class="breadcrumb-item">Mailchimp lists</span>
{% endblock %}
{% block content %}
......@@ -12,12 +14,17 @@
<div class="row">
<div class="col-12">
<h1>All mailing lists known to SciPost</h1>
<h1>All MailChimp 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>
<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>
<li>
<a href="{% url 'mailing_lists:export_non_registered_invitations' %}">Export non-registered user invitations for MailChimp</a>
</li>
{% endif %}
</ul>
......@@ -29,18 +36,31 @@
<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>
<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>
<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>
......
{% 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 %}
......@@ -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(
......
......@@ -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.
......
......@@ -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 %}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment