Skip to content

Commit fd207ee

Browse files
authored
Merge pull request #537 from bruecksen/536-bug-copy-newsletter-page-needs-to-set-sensible-defaults-for-campaign-values
Set propper default values on newsletterpage copy, show proper status…
2 parents f88c21a + 8931525 commit fd207ee

File tree

3 files changed

+42
-4
lines changed

3 files changed

+42
-4
lines changed

bakeup/newsletter/models.py

+18
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,24 @@ class NewsletterPage(NewsletterPageMixin): # type: ignore
218218

219219
newsletter_template = "newsletter/newsletter.html"
220220
template = "newsletter/newsletter.html"
221+
newsletter_persistent_fields = [
222+
"status",
223+
"sent_date",
224+
]
225+
226+
def with_content_json(self, content):
227+
obj = super().with_content_json(content)
228+
for field in self.newsletter_persistent_fields:
229+
setattr(obj, field, getattr(self, field))
230+
return obj
231+
232+
def save_revision(self, *args, **kwargs):
233+
revision = super().save_revision(*args, **kwargs)
234+
self.save(
235+
update_fields=self.newsletter_persistent_fields,
236+
clean=False,
237+
)
238+
return revision
221239

222240
def has_newsletter_permission(self, user, action):
223241
permission_policy = NewsletterPermissionPolicy(type(self))

bakeup/newsletter/wagtail_hooks.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,21 @@
88
from wagtail.models import Page
99

1010
from . import actions, views, viewsets
11-
from .models import NewsletterPageMixin
11+
from .models import CampaignStatus, NewsletterPageMixin
12+
13+
14+
@hooks.register("after_copy_page") # type: ignore
15+
def clear_campaign_after_copy(request, page, new_page):
16+
if isinstance(new_page, NewsletterPageMixin):
17+
new_page = new_page.specific
18+
new_page.status = CampaignStatus.UNSENT
19+
new_page.sent_date = None
20+
new_page.save(update_fields=["status", "sent_date"])
21+
if new_page.locked:
22+
new_page.locked = False
23+
new_page.locked_at = None
24+
new_page.locked_by = None
25+
new_page.save(update_fields=["locked", "locked_at", "locked_by"])
1226

1327

1428
@hooks.register("register_admin_urls") # type: ignore

bakeup/templates/newsletter/panels/newsletter_panel.html

+9-3
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,32 @@
2222
{% if report %}
2323
{% if report.send_time %}
2424
<p>
25-
<b>Send time:</b>
25+
<b>Versendet am:</b>
2626
{{ report.send_time }}
2727
({{ report.send_time|timesince }} ago).
2828
</p>
2929
{% endif %}
3030

3131
<p>
32-
<b>Emails sent:</b>
32+
<b>Emails versendet:</b>
3333
{{ report.emails_sent }}
3434
</p>
3535

3636
{% endif %}
3737
{% endblock %}
3838

39-
{% elif campaign.scheduled or campaign.sending %}
39+
{% elif campaign.scheduled %}
4040
<p>
4141
<b>{{ campaign.get_status_display }}:</b>
4242
{{ campaign.newsletter_schedule_date }} (in {{ campaign.newsletter_schedule_date|timeuntil }}).
4343
</p>
4444

45+
{% elif campaign.sending %}
46+
<p>
47+
<b>{{ campaign.get_status_display|upper }}: </b>
48+
Die Kampagne wird aktuell versendet, bitte warten!
49+
</p>
50+
4551
{% else %}
4652

4753
<p>

0 commit comments

Comments
 (0)