wagtail-newsletter-django-backend 0.5.2__tar.gz → 0.5.4__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.5.2 → wagtail_newsletter_django_backend-0.5.4}/PKG-INFO +1 -1
  2. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/__init__.py +1 -1
  3. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/campaign_backend.py +19 -9
  4. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/.gitignore +0 -0
  5. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/.readthedocs.yaml +0 -0
  6. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/LICENSE +0 -0
  7. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/README.md +0 -0
  8. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/manage.py +0 -0
  9. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/pyproject.toml +0 -0
  10. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/__init__.py +0 -0
  11. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/__init__.py +0 -0
  12. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/admin.py +0 -0
  13. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/apps.py +0 -0
  14. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/migrations/0001_initial.py +0 -0
  15. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/migrations/0002_newslettersignup.py +0 -0
  16. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/migrations/__init__.py +0 -0
  17. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/models.py +0 -0
  18. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/signals.py +0 -0
  19. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/templates/blog/blog_index_page.html +0 -0
  20. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/templates/blog/blog_page.html +0 -0
  21. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/templates/blog/blog_page_newsletter.html +0 -0
  22. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/templates/blog/newsletter_signup.html +0 -0
  23. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/tests.py +0 -0
  24. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/blog/views.py +0 -0
  25. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/home/__init__.py +0 -0
  26. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/home/apps.py +0 -0
  27. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/home/migrations/0001_initial.py +0 -0
  28. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/home/migrations/__init__.py +0 -0
  29. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/home/models.py +0 -0
  30. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/home/static/css/welcome_page.css +0 -0
  31. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/home/templates/home/home_page.html +0 -0
  32. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/home/templates/home/welcome_page.html +0 -0
  33. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/home/tests.py +0 -0
  34. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/search/__init__.py +0 -0
  35. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/search/apps.py +0 -0
  36. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/search/templates/search/search.html +0 -0
  37. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/search/views.py +0 -0
  38. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/settings/__init__.py +0 -0
  39. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/settings/base.py +0 -0
  40. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/settings/dev.py +0 -0
  41. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/settings/production.py +0 -0
  42. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/static/css/demo.css +0 -0
  43. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/static/js/demo.js +0 -0
  44. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/templates/404.html +0 -0
  45. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/templates/500.html +0 -0
  46. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/templates/base.html +0 -0
  47. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/urls.py +0 -0
  48. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/src/demo/wsgi.py +0 -0
  49. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/demo/uv.lock +0 -0
  50. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/docs/Makefile +0 -0
  51. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/docs/conf.py +0 -0
  52. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/docs/index.rst +0 -0
  53. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/docs/make.bat +0 -0
  54. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/pyproject.toml +0 -0
  55. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/admin.py +0 -0
  56. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/admin_viewsets.py +0 -0
  57. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/apps.py +0 -0
  58. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/forms.py +0 -0
  59. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/management/__init__.py +0 -0
  60. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/management/commands/__init__.py +0 -0
  61. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/management/commands/send_scheduled_campaigns.py +0 -0
  62. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/migrations/0001_initial.py +0 -0
  63. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/migrations/0002_alter_audience_name_alter_audiencesegment_name_and_more.py +0 -0
  64. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/migrations/__init__.py +0 -0
  65. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/models.py +0 -0
  66. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/manage.html +0 -0
  67. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/manage_tag.html +0 -0
  68. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/unsubscribe.html +0 -0
  69. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/templates/wagtail_newsletter_django_backend/unsubscribe_tag.html +0 -0
  70. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/templatetags/__init__.py +0 -0
  71. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/templatetags/wagtail_newsletter_django_backend_tags.py +0 -0
  72. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/tests.py +0 -0
  73. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/urls.py +0 -0
  74. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/views.py +0 -0
  75. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/src/wagtail_newsletter_django_backend/wagtail_hooks.py +0 -0
  76. {wagtail_newsletter_django_backend-0.5.2 → wagtail_newsletter_django_backend-0.5.4}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wagtail-newsletter-django-backend
3
- Version: 0.5.2
3
+ Version: 0.5.4
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.5.2'
6
+ __version__ = '0.5.4'
@@ -60,15 +60,25 @@ class CampaignBackend(wncb.CampaignBackend):
60
60
  audience_segment = models.AudienceSegment.objects.get(id=int(recipients.segment.split('/')[-1]))
61
61
 
62
62
  with transaction.atomic():
63
- campaign: models.Campaign
63
+ campaign: models.Campaign | None
64
64
  if campaign_id:
65
- campaign = models.Campaign.objects.get(id=int(campaign_id))
66
- campaign.subject = subject
67
- campaign.html = html.strip()
68
- if audience_segment is not None:
69
- campaign.audience_segment = audience_segment
70
- campaign.full_clean()
71
- campaign.save()
65
+ int_campaign_id = int(campaign_id)
66
+ campaign = models.Campaign.objects.filter(id=int_campaign_id).first()
67
+ if campaign is None:
68
+ # No campaign exists with that ID anymore; recreate it.
69
+ campaign = models.Campaign.objects.create(
70
+ id=int_campaign_id,
71
+ subject=subject,
72
+ html=html.strip(),
73
+ audience_segment=audience_segment,
74
+ )
75
+ else:
76
+ campaign.subject = subject
77
+ campaign.html = html.strip()
78
+ if audience_segment is not None:
79
+ campaign.audience_segment = audience_segment
80
+ campaign.full_clean()
81
+ campaign.save()
72
82
  else:
73
83
  campaign = models.Campaign.objects.create(
74
84
  subject=subject,
@@ -160,7 +170,7 @@ class CampaignBackend(wncb.CampaignBackend):
160
170
  ])
161
171
 
162
172
  def send_scheduled_campaigns(self) -> None:
163
- for campaign in models.Campaign.objects.filter(sent_at=None, send_at__gte=timezone.now()):
173
+ for campaign in models.Campaign.objects.filter(sent_at=None, send_at__lte=timezone.now()):
164
174
  self.send_campaign(str(campaign.id))
165
175
 
166
176
  @override