Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
7332bf9
initial commit - new confirm delete page
joelwilliam2005 Jan 20, 2025
f422a6b
Added All word to warning statement for plural abtests
joelwilliam2005 Jan 20, 2025
9999dc4
added unit tests
joelwilliam2005 Jan 25, 2025
84a067c
added ab_test_delete view get request test
joelwilliam2005 Jan 25, 2025
19a2ac4
removed blank lines from the template
joelwilliam2005 Feb 17, 2025
4a22685
registered views using register_admin_urls hook
joelwilliam2005 Feb 17, 2025
51bd75e
added bad permissions handling
joelwilliam2005 Feb 17, 2025
456d9dd
added new line to html
joelwilliam2005 Mar 1, 2025
5ec5e4c
moved creating abtest objects to setUp, removed check abtest order
joelwilliam2005 Mar 1, 2025
40e862c
removed check abtest count
joelwilliam2005 Mar 1, 2025
f9954dc
used default delete view and added follow=True
joelwilliam2005 Mar 1, 2025
c43a964
added permission tests
joelwilliam2005 Mar 1, 2025
0cb0c5b
fixed var names
joelwilliam2005 Mar 1, 2025
ac02964
merged confirm_delete and delete function, renamed template
joelwilliam2005 Mar 1, 2025
951218b
rename template
joelwilliam2005 Mar 2, 2025
1dc95a3
removed test confirm_delete_view functions
joelwilliam2005 Mar 2, 2025
9a6bf66
removed unneccessary comments
joelwilliam2005 Mar 2, 2025
b55b19f
used double quotations
joelwilliam2005 Mar 2, 2025
d7a0a9b
repace blocktrans with trans for title
joelwilliam2005 Mar 2, 2025
33d1a2d
removed count from context, used .count in template
joelwilliam2005 Mar 2, 2025
4635216
removed form action
joelwilliam2005 Mar 2, 2025
edf9ef1
formatted template
joelwilliam2005 Mar 2, 2025
07bafd9
added initial perm check and modified test
joelwilliam2005 Mar 12, 2025
04e5768
removed url
joelwilliam2005 Mar 14, 2025
19b1460
updated test to check redirection to wagtailadmin_home
joelwilliam2005 Mar 14, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 30 additions & 18 deletions wagtail_ab_testing/test/tests/test_delete_abtest.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from django.contrib.contenttypes.models import ContentType
from django.test import RequestFactory, TestCase
from django.urls import reverse
from wagtail.models import Page
from wagtail.models import GroupPagePermission, Page
from wagtail.test.utils import WagtailTestUtils

from wagtail_ab_testing.models import AbTest
Expand All @@ -22,10 +22,6 @@ def setUp(self):
):
self.moderators_group.permissions.add(permission)

for permission in Permission.objects.filter(
content_type=ContentType.objects.get_for_model(Page)
):
self.moderators_group.permissions.add(permission)
self.user.is_superuser = False
self.user.groups.add(self.moderators_group)
self.user.save()
Expand Down Expand Up @@ -53,7 +49,7 @@ def test_check_ab_tests_hook_with_tests(self):

self.assertRedirects(
response,
reverse("wagtail_ab_testing:ab_test_delete", args=[self.page.id]),
reverse("wagtail_ab_testing_admin:ab_test_delete", args=[self.page.id]),
msg_prefix="Redirection to the delete A/B tests confirmation page failed.",
)

Expand All @@ -71,7 +67,7 @@ def test_ab_test_delete_view(self):
self.assertTemplateUsed(response, "wagtail_ab_testing/delete_ab_tests.html")

response = self.client.post(
reverse("wagtail_ab_testing:ab_test_delete", args=[self.page.id])
reverse("wagtail_ab_testing_admin:ab_test_delete", args=[self.page.id])
)

self.assertEqual(AbTest.objects.filter(page=self.page).count(), 0)
Expand All @@ -88,30 +84,46 @@ def test_ab_test_delete_view_without_delete_abtest_permission(self):
self.user.save()

response = self.client.get(
reverse("wagtail_ab_testing:ab_test_delete", args=[self.page.id])
reverse("wagtail_ab_testing_admin:ab_test_delete", args=[self.page.id])
)

self.assertEqual(response.status_code, 403)
self.assertRedirects(response, reverse("wagtailadmin_home"))
self.assertEqual(
response.context["message"],
"Sorry, you do not have permission to access this area.",
)

response = self.client.post(
reverse("wagtail_ab_testing:ab_test_delete", args=[self.page.id])
reverse("wagtail_ab_testing_admin:ab_test_delete", args=[self.page.id])
)

self.assertEqual(response.status_code, 403)
self.assertRedirects(response, reverse("wagtailadmin_home"))
self.assertEqual(
response.context["message"],
"Sorry, you do not have permission to access this area.",
)

def test_ab_test_delete_view_without_delete_page_permission(self):
delete_page_permission = Permission.objects.get(codename="delete_page")
self.moderators_group.permissions.remove(delete_page_permission)
self.user.save()
GroupPagePermission.objects.filter(
group=self.moderators_group, permission__codename="change_page"
).delete()

response = self.client.get(
reverse("wagtail_ab_testing:ab_test_delete", args=[self.page.id])
reverse("wagtail_ab_testing_admin:ab_test_delete", args=[self.page.id])
)

self.assertEqual(response.status_code, 403)
self.assertRedirects(response, reverse("wagtailadmin_home"))
self.assertEqual(
response.context["message"],
"Sorry, you do not have permission to access this area.",
)

response = self.client.post(
reverse("wagtail_ab_testing:ab_test_delete", args=[self.page.id])
reverse("wagtail_ab_testing_admin:ab_test_delete", args=[self.page.id])
)

self.assertEqual(response.status_code, 403)
self.assertRedirects(response, reverse("wagtailadmin_home"))
self.assertEqual(
response.context["message"],
"Sorry, you do not have permission to access this area.",
)
5 changes: 0 additions & 5 deletions wagtail_ab_testing/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,4 @@
"register-participant/", views.register_participant, name="register_participant"
),
path("goal-reached/", views.goal_reached, name="goal_reached"),
path(
"pages/<int:page_id>/delete/abtests/",
views.ab_test_delete,
name="ab_test_delete",
),
]
7 changes: 4 additions & 3 deletions wagtail_ab_testing/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -720,9 +720,10 @@ def ab_test_delete(request, page_id):
page = get_object_or_404(Page, id=page_id)
ab_tests = page.ab_tests.order_by("-first_started_at")

if not request.user.has_perm(
"wagtailcore.delete_page"
) or not request.user.has_perm("wagtail_ab_testing.delete_abtest"):
if not (
page.permissions_for_user(request.user).can_delete()
and request.user.has_perm("wagtail_ab_testing.delete_abtest")
):
raise PermissionDenied

if request.method == "POST":
Expand Down
4 changes: 3 additions & 1 deletion wagtail_ab_testing/wagtail_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,9 @@ def register_add_abtest_permission():
def check_ab_tests_for_page(request, page):
if page.ab_tests.exists():
return HttpResponseRedirect(
reverse("wagtail_ab_testing:ab_test_delete", kwargs={"page_id": page.id})
reverse(
"wagtail_ab_testing_admin:ab_test_delete", kwargs={"page_id": page.id}
)
)

return None