wagtail-newsletter-django-backend 0.5.4__tar.gz → 0.5.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/PKG-INFO +1 -1
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/__init__.py +1 -1
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/campaign_backend.py +16 -7
- wagtail_newsletter_django_backend-0.5.6/src/wagtail_newsletter_django_backend/migrations/0003_alter_campaign_audience_segment.py +26 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/models.py +1 -1
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/.gitignore +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/.readthedocs.yaml +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/LICENSE +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/README.md +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/manage.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/pyproject.toml +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/admin.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/apps.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/migrations/0001_initial.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/migrations/0002_newslettersignup.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/migrations/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/models.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/signals.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/templates/blog/blog_index_page.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/templates/blog/blog_page.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/templates/blog/blog_page_newsletter.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/templates/blog/newsletter_signup.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/tests.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/blog/views.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/home/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/home/apps.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/home/migrations/0001_initial.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/home/migrations/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/home/models.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/home/static/css/welcome_page.css +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/home/templates/home/home_page.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/home/templates/home/welcome_page.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/home/tests.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/search/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/search/apps.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/search/templates/search/search.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/search/views.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/settings/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/settings/base.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/settings/dev.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/settings/production.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/static/css/demo.css +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/static/js/demo.js +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/templates/404.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/templates/500.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/templates/base.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/urls.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/src/demo/wsgi.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/uv.lock +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/docs/Makefile +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/docs/conf.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/docs/index.rst +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/docs/make.bat +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/pyproject.toml +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/admin.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/admin_viewsets.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/apps.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/forms.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/management/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/management/commands/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/management/commands/send_scheduled_campaigns.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/migrations/0001_initial.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/migrations/0002_alter_audience_name_alter_audiencesegment_name_and_more.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/migrations/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/manage.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/manage_tag.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/unsubscribe.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/unsubscribe_tag.html +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/templatetags/__init__.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/templatetags/wagtail_newsletter_django_backend_tags.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/tests.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/urls.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/views.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/src/wagtail_newsletter_django_backend/wagtail_hooks.py +0 -0
- {wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/uv.lock +0 -0
{wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wagtail-newsletter-django-backend
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.6
|
|
4
4
|
Summary: An internal Django backend to wagtail-newsletter.
|
|
5
5
|
Author-email: "Taylor C. Richberger" <taylor@axfive.net>
|
|
6
6
|
Maintainer-email: "Taylor C. Richberger" <taylor@axfive.net>
|
|
@@ -25,7 +25,7 @@ class CampaignBackend(wncb.CampaignBackend):
|
|
|
25
25
|
id=str(audience.id),
|
|
26
26
|
pk=str(audience.pk),
|
|
27
27
|
name=audience.name,
|
|
28
|
-
member_count=audience.subscriber_set.count(),
|
|
28
|
+
member_count=audience.subscriber_set.filter(verified=True).count(),
|
|
29
29
|
)
|
|
30
30
|
for audience in models.Audience.objects.all()
|
|
31
31
|
]
|
|
@@ -41,7 +41,7 @@ class CampaignBackend(wncb.CampaignBackend):
|
|
|
41
41
|
id=f'{audience_id}/{audience_segment.id}',
|
|
42
42
|
pk=f'{audience_id}/{audience_segment.id}',
|
|
43
43
|
name=audience_segment.name,
|
|
44
|
-
member_count=audience_segment.subscribers.count(),
|
|
44
|
+
member_count=audience_segment.subscribers.filter(verified=True).count(),
|
|
45
45
|
)
|
|
46
46
|
for audience_segment in audience.audience_segment_set.all()
|
|
47
47
|
]
|
|
@@ -55,11 +55,11 @@ class CampaignBackend(wncb.CampaignBackend):
|
|
|
55
55
|
subject: str,
|
|
56
56
|
html: str,
|
|
57
57
|
) -> str:
|
|
58
|
-
audience_segment: models.AudienceSegment | None = None
|
|
59
|
-
if recipients is not None and recipients.segment:
|
|
60
|
-
audience_segment = models.AudienceSegment.objects.get(id=int(recipients.segment.split('/')[-1]))
|
|
61
|
-
|
|
62
58
|
with transaction.atomic():
|
|
59
|
+
audience_segment: models.AudienceSegment | None = None
|
|
60
|
+
if recipients is not None and recipients.segment:
|
|
61
|
+
audience_segment = models.AudienceSegment.objects.get(id=int(recipients.segment.split('/')[-1]))
|
|
62
|
+
|
|
63
63
|
campaign: models.Campaign | None
|
|
64
64
|
if campaign_id:
|
|
65
65
|
int_campaign_id = int(campaign_id)
|
|
@@ -94,7 +94,13 @@ class CampaignBackend(wncb.CampaignBackend):
|
|
|
94
94
|
@override
|
|
95
95
|
def send_test_email(self, *, campaign_id: str, email: str) -> None:
|
|
96
96
|
campaign = models.Campaign.objects.get(id=int(campaign_id))
|
|
97
|
-
audience
|
|
97
|
+
audience: models.Audience
|
|
98
|
+
if campaign.audience_segment is not None:
|
|
99
|
+
audience = campaign.audience_segment.audience
|
|
100
|
+
else:
|
|
101
|
+
# Build empty audience. Will have no subscribers, and no smtp data.
|
|
102
|
+
# This will not work without default data in the config.
|
|
103
|
+
audience = models.Audience()
|
|
98
104
|
|
|
99
105
|
from_address = audience.from_address()
|
|
100
106
|
user, password = audience.smtp_auth()
|
|
@@ -113,6 +119,9 @@ class CampaignBackend(wncb.CampaignBackend):
|
|
|
113
119
|
def send_campaign(self, campaign_id: str) -> None:
|
|
114
120
|
with transaction.atomic():
|
|
115
121
|
campaign = models.Campaign.objects.get(id=int(campaign_id))
|
|
122
|
+
if campaign.audience_segment is None:
|
|
123
|
+
raise RuntimeError("Campaign can't be sent without an audience segment")
|
|
124
|
+
|
|
116
125
|
audience = campaign.audience_segment.audience
|
|
117
126
|
|
|
118
127
|
site = audience.site
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Generated by Django 5.2.5 on 2025-09-02 21:10
|
|
2
|
+
|
|
3
|
+
import django.db.models.deletion
|
|
4
|
+
from django.db import migrations, models
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class Migration(migrations.Migration):
|
|
8
|
+
|
|
9
|
+
dependencies = [
|
|
10
|
+
(
|
|
11
|
+
"wagtail_newsletter_django_backend",
|
|
12
|
+
"0002_alter_audience_name_alter_audiencesegment_name_and_more",
|
|
13
|
+
),
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
operations = [
|
|
17
|
+
migrations.AlterField(
|
|
18
|
+
model_name="campaign",
|
|
19
|
+
name="audience_segment",
|
|
20
|
+
field=models.ForeignKey(
|
|
21
|
+
null=True,
|
|
22
|
+
on_delete=django.db.models.deletion.SET_NULL,
|
|
23
|
+
to="wagtail_newsletter_django_backend.audiencesegment",
|
|
24
|
+
),
|
|
25
|
+
),
|
|
26
|
+
]
|
|
@@ -252,7 +252,7 @@ class Campaign(models.Model):
|
|
|
252
252
|
sent_at: 'models.DateTimeField[datetime | None]' = models.DateTimeField(blank=True, null=True, default=None)
|
|
253
253
|
subject: 'models.TextField[str]' = models.TextField(blank=False, null=False)
|
|
254
254
|
html: 'models.TextField[str]' = models.TextField(blank=False, null=False)
|
|
255
|
-
audience_segment: models.ForeignKey[AudienceSegment] = models.ForeignKey(AudienceSegment, blank=False, null=
|
|
255
|
+
audience_segment: 'models.ForeignKey[AudienceSegment | None]' = models.ForeignKey(AudienceSegment, blank=False, null=True, on_delete=models.SET_NULL)
|
|
256
256
|
|
|
257
257
|
created_at: 'models.DateTimeField[datetime]' = models.DateTimeField(auto_now_add=True)
|
|
258
258
|
updated_at: 'models.DateTimeField[datetime]' = models.DateTimeField(auto_now=True)
|
{wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/.gitignore
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/README.md
RENAMED
|
File without changes
|
{wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/manage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/demo/uv.lock
RENAMED
|
File without changes
|
{wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/docs/Makefile
RENAMED
|
File without changes
|
{wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/docs/conf.py
RENAMED
|
File without changes
|
{wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/docs/index.rst
RENAMED
|
File without changes
|
{wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/docs/make.bat
RENAMED
|
File without changes
|
{wagtail_newsletter_django_backend-0.5.4 → wagtail_newsletter_django_backend-0.5.6}/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|