wagtail-newsletter-django-backend 0.3.0__tar.gz → 0.3.2__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.
Files changed (76) hide show
  1. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/PKG-INFO +1 -1
  2. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/__init__.py +1 -1
  3. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/campaign_backend.py +3 -2
  4. wagtail_newsletter_django_backend-0.3.2/src/wagtail_newsletter_django_backend/migrations/0002_alter_audience_name_alter_audiencesegment_name_and_more.py +35 -0
  5. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/models.py +4 -4
  6. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/.gitignore +0 -0
  7. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/.readthedocs.yaml +0 -0
  8. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/LICENSE +0 -0
  9. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/README.md +0 -0
  10. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/manage.py +0 -0
  11. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/pyproject.toml +0 -0
  12. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/__init__.py +0 -0
  13. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/__init__.py +0 -0
  14. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/admin.py +0 -0
  15. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/apps.py +0 -0
  16. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/migrations/0001_initial.py +0 -0
  17. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/migrations/0002_newslettersignup.py +0 -0
  18. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/migrations/__init__.py +0 -0
  19. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/models.py +0 -0
  20. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/signals.py +0 -0
  21. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/templates/blog/blog_index_page.html +0 -0
  22. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/templates/blog/blog_page.html +0 -0
  23. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/templates/blog/blog_page_newsletter.html +0 -0
  24. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/templates/blog/newsletter_signup.html +0 -0
  25. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/tests.py +0 -0
  26. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/blog/views.py +0 -0
  27. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/home/__init__.py +0 -0
  28. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/home/apps.py +0 -0
  29. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/home/migrations/0001_initial.py +0 -0
  30. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/home/migrations/__init__.py +0 -0
  31. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/home/models.py +0 -0
  32. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/home/static/css/welcome_page.css +0 -0
  33. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/home/templates/home/home_page.html +0 -0
  34. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/home/templates/home/welcome_page.html +0 -0
  35. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/home/tests.py +0 -0
  36. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/search/__init__.py +0 -0
  37. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/search/apps.py +0 -0
  38. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/search/templates/search/search.html +0 -0
  39. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/search/views.py +0 -0
  40. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/settings/__init__.py +0 -0
  41. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/settings/base.py +0 -0
  42. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/settings/dev.py +0 -0
  43. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/settings/production.py +0 -0
  44. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/static/css/demo.css +0 -0
  45. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/static/js/demo.js +0 -0
  46. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/templates/404.html +0 -0
  47. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/templates/500.html +0 -0
  48. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/templates/base.html +0 -0
  49. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/urls.py +0 -0
  50. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/src/demo/wsgi.py +0 -0
  51. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/demo/uv.lock +0 -0
  52. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/docs/Makefile +0 -0
  53. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/docs/conf.py +0 -0
  54. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/docs/index.rst +0 -0
  55. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/docs/make.bat +0 -0
  56. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/pyproject.toml +0 -0
  57. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/admin.py +0 -0
  58. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/admin_viewsets.py +0 -0
  59. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/apps.py +0 -0
  60. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/forms.py +0 -0
  61. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/management/__init__.py +0 -0
  62. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/management/commands/__init__.py +0 -0
  63. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/management/commands/send_scheduled_campaigns.py +0 -0
  64. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/migrations/0001_initial.py +0 -0
  65. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/migrations/__init__.py +0 -0
  66. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/manage.html +0 -0
  67. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/manage_tag.html +0 -0
  68. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/unsubscribe.html +0 -0
  69. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/unsubscribe_tag.html +0 -0
  70. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/templatetags/__init__.py +0 -0
  71. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/templatetags/wagtail_newsletter_django_backend_tags.py +0 -0
  72. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/tests.py +0 -0
  73. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/urls.py +0 -0
  74. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/views.py +0 -0
  75. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/src/wagtail_newsletter_django_backend/wagtail_hooks.py +0 -0
  76. {wagtail_newsletter_django_backend-0.3.0 → wagtail_newsletter_django_backend-0.3.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wagtail-newsletter-django-backend
3
- Version: 0.3.0
3
+ Version: 0.3.2
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>
@@ -3,4 +3,4 @@
3
3
  This is a simple, basic internal backend for wagtail-newsletter, allowing you to manage your mailing lists internally and send them out through Django's standard email capabilities.
4
4
  '''
5
5
 
6
- __version__ = '0.3.0'
6
+ __version__ = '0.3.2'
@@ -4,6 +4,7 @@ from django.db import transaction
4
4
  from django.core.mail import send_mail
5
5
  from django.urls import reverse
6
6
  from django.utils import timezone
7
+ from django.utils.text import slugify
7
8
  from html2text import HTML2Text
8
9
  from django.core.mail import get_connection
9
10
  from django.core.mail.message import EmailMessage, EmailMultiAlternatives
@@ -24,7 +25,7 @@ class CampaignBackend(wncb.CampaignBackend):
24
25
  wna.Audience(
25
26
  id=str(audience.id),
26
27
  pk=str(audience.pk),
27
- name=audience.name,
28
+ name=slugify(audience.name),
28
29
  member_count=audience.subscriber_set.count(),
29
30
  )
30
31
  for audience in models.Audience.objects.all()
@@ -40,7 +41,7 @@ class CampaignBackend(wncb.CampaignBackend):
40
41
  wna.AudienceSegment(
41
42
  id=str(audience_segment.id),
42
43
  pk=str(audience_segment.pk),
43
- name=audience_segment.name,
44
+ name=slugify(audience_segment.name),
44
45
  member_count=audience_segment.subscribers.count(),
45
46
  )
46
47
  for audience_segment in audience.audience_segment_set.all()
@@ -0,0 +1,35 @@
1
+ # Generated by Django 5.2.5 on 2025-09-02 15:46
2
+
3
+ from django.db import migrations, models
4
+
5
+
6
+ class Migration(migrations.Migration):
7
+
8
+ dependencies = [
9
+ ("wagtail_newsletter_django_backend", "0001_initial"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterField(
14
+ model_name="audience",
15
+ name="name",
16
+ field=models.CharField(max_length=64),
17
+ ),
18
+ migrations.AlterField(
19
+ model_name="audiencesegment",
20
+ name="name",
21
+ field=models.CharField(max_length=64, unique=True),
22
+ ),
23
+ migrations.AlterField(
24
+ model_name="subscriber",
25
+ name="email_address",
26
+ field=models.EmailField(max_length=254, verbose_name="Email Address"),
27
+ ),
28
+ migrations.AlterField(
29
+ model_name="subscriber",
30
+ name="email_name",
31
+ field=models.CharField(
32
+ blank=True, default=None, max_length=256, null=True, verbose_name="Name"
33
+ ),
34
+ ),
35
+ ]
@@ -54,7 +54,7 @@ class Audience(models.Model):
54
54
  subscriber_set: 'RelatedManager[Subscriber]' # pyright: ignore[reportUninitializedInstanceVariable]
55
55
 
56
56
  site: 'models.ForeignKey[Site]' = models.ForeignKey(Site, blank=False, null=False, on_delete=models.CASCADE)
57
- name: 'models.SlugField[str]' = models.SlugField(blank=False, null=False)
57
+ name: 'models.CharField[str]' = models.CharField(max_length=64, blank=False, null=False)
58
58
  description: 'models.TextField[str]' = models.TextField(blank=True, null=False)
59
59
  smtp_user: 'models.CharField[str | None]' = models.CharField(
60
60
  max_length=256,
@@ -133,7 +133,7 @@ class AudienceSegment(models.Model):
133
133
  id: int # pyright: ignore[reportUninitializedInstanceVariable]
134
134
 
135
135
  audience: 'models.ForeignKey[Audience]' = models.ForeignKey(Audience, blank=False, null=False, on_delete=models.CASCADE, related_name='audience_segment_set', related_query_name='audience_segment')
136
- name: 'models.SlugField[str]' = models.SlugField(blank=False, null=False, unique=True)
136
+ name: 'models.CharField[str]' = models.CharField(max_length=64, blank=False, null=False, unique=True)
137
137
  description: 'models.TextField[str]' = models.TextField(blank=True, null=False)
138
138
  subscribers: 'models.ManyToManyField[Subscriber, Subscription]' = models.ManyToManyField(
139
139
  'Subscriber',
@@ -171,13 +171,13 @@ class Subscriber(models.Model):
171
171
  unique=True,
172
172
  )
173
173
  audience: 'models.ForeignKey[Audience]' = models.ForeignKey(Audience, blank=False, null=False, on_delete=models.CASCADE)
174
- email_address: 'models.EmailField[str]' = models.EmailField(blank=False, null=False)
174
+ email_address: 'models.EmailField[str]' = models.EmailField(verbose_name="Email Address", blank=False, null=False)
175
175
  email_name: 'models.CharField[str | None]' = models.CharField(
176
+ verbose_name="Name",
176
177
  max_length=256,
177
178
  blank=True,
178
179
  null=True,
179
180
  default=None,
180
- help_text='The display name portion of the email address.',
181
181
  )
182
182
  audience_segments: 'models.ManyToManyField[AudienceSegment, Subscription]' = models.ManyToManyField(
183
183
  AudienceSegment,