Show campaign QR codes for email as well as postcard (#14)
Deploy Beta / unit-tests (push) Successful in 21s
Deploy Beta / docker (push) Successful in 29s
Deploy Beta / deploy-beta (push) Successful in 6m33s

## Summary
Closes #13.
- Draw the tracked-link QR for email campaigns as well as postcard (copy / download PNG).
- Keep the QR hidden for SMS.
- Fix `.utm-qr { display: flex }` overriding the HTML `hidden` attribute so SMS does not leak an empty canvas.

## Test plan
- [ ] Open campaign composer on Email — QR renders for the short `piha.li` URL
- [ ] Copy QR image / Download PNG work
- [ ] Switch to SMS — QR box is gone
- [ ] Switch to Postcard — QR still renders; postcard-designer hint still shows
- [ ] Email campaign report page also shows a filled QR

Reviewed-on: #14
This commit was merged in pull request #14.
This commit is contained in:
2026-09-01 11:51:57 -07:00
parent bc7c47a69c
commit a867a57750
4 changed files with 22 additions and 3 deletions
+5
View File
@@ -1554,6 +1554,8 @@ class CampaignUtmLinkTests(TestCase):
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Tracked site link")
self.assertContains(response, "campaign-utm.js")
self.assertContains(response, "qrcode.min.js")
self.assertContains(response, "data-utm-qr")
self.assertContains(response, "utm_campaign")
self.assertContains(response, reverse("messaging:campaign_short_link"))
@@ -1573,6 +1575,9 @@ class CampaignUtmLinkTests(TestCase):
self.assertEqual(response.status_code, 200)
self.assertContains(response, "utm_campaign=spring-seller-tips")
self.assertContains(response, "utm_medium=email")
self.assertContains(response, "qrcode.min.js")
self.assertContains(response, "data-utm-qr")
self.assertContains(response, "QR below encodes the same short link")
def test_sms_replaces_existing_short_url(self):
from messaging.services import ensure_campaign_utm_in_text