Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: A/B testing using wagtail-ab-testing #369

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions ietf/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
"analytical",
"wagtailmarkdown",
"wagtailorderable",
"wagtail_ab_testing",
)

MIDDLEWARE = [
Expand Down
1 change: 1 addition & 0 deletions ietf/static_src/js/pages.js
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
import '../../blog/js/index';
import '../../utils/js/ab_testing';
3 changes: 2 additions & 1 deletion ietf/templates_src/base.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% load static wagtailuserbar wagtailcore_tags wagtailimages_tags ietf_tags analytical %}
{% load static wagtailuserbar wagtailcore_tags wagtailimages_tags ietf_tags analytical wagtail_ab_testing_tags %}
{% wagtail_site as current_site %}
<!DOCTYPE html>
<!--[if lt IE 7]> <html lang="en" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
Expand Down Expand Up @@ -72,6 +72,7 @@
</script>

{% block extra_js %}{% endblock %}
{% wagtail_ab_testing_script %}
{% analytical_body_bottom %}
</body>
</html>
2 changes: 2 additions & 0 deletions ietf/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from wagtail.admin import urls as wagtailadmin_urls
from wagtail.contrib.sitemaps.views import sitemap
from wagtail.documents import urls as wagtaildocs_urls
from wagtail_ab_testing import urls as ab_testing_urls

from ietf.bibliography import urls as bibliography_urls
from ietf.blog.feeds import BlogFeed
Expand All @@ -24,6 +25,7 @@
re_path(r"^admin/", include(wagtailadmin_urls)),
re_path(r"^documents/", include(wagtaildocs_urls)),
re_path(r"^search/$", search, name="search"),
path("abtesting/", include(ab_testing_urls)),
]


Expand Down
11 changes: 11 additions & 0 deletions ietf/utils/js/ab_testing.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
document.querySelector("html").addEventListener("click", (e) => {
if (e.target.tagName == "A") {
const href = e.target.getAttribute("href") || ""
if (href.startsWith("https://www.ietf.org/mailman/listinfo/")) {
wagtailAbTesting.triggerEvent("navigate-mailman")
}
if (href.startsWith("https://registration.ietf.org/")) {
wagtailAbTesting.triggerEvent("navigate-registration")
}
}
})
24 changes: 23 additions & 1 deletion ietf/utils/wagtail_hooks.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from django.conf import settings
from django.utils.html import format_html
from wagtail import hooks
from wagtail.snippets.views.snippets import SnippetViewSet
from wagtail.snippets.models import register_snippet
from wagtail.snippets.views.snippets import SnippetViewSet
from wagtail_ab_testing.events import BaseEvent
from wagtail_modeladmin.options import ModelAdmin, modeladmin_register
from wagtailorderable.modeladmin.mixins import OrderableMixin

Expand Down Expand Up @@ -40,3 +41,24 @@ class MenuItemAdmin(OrderableMixin, ModelAdmin):


modeladmin_register(MenuItemAdmin)


class NavigateToRegistrationWebsite(BaseEvent):
name = "Navigate to registration website"


class NavigateToMailmanWebsite(BaseEvent):
name = "Navigate to Mailman website"


class SubmitDonationFormEvent(BaseEvent):
name = "Submit donation form"


@hooks.register("register_ab_testing_event_types")
def register_ab_testing_event_types():
return {
"navigate-registration": NavigateToRegistrationWebsite(),
"navigate-mailman": NavigateToMailmanWebsite(),
"submit-donation-form": SubmitDonationFormEvent(),
}
1 change: 1 addition & 0 deletions requirements/base.in
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ psycopg2
pymemcache
tqdm
typed-environment-configuration>=0.1.3,<0.2
wagtail-ab-testing
wagtail-markdown
wagtail-modeladmin
wagtail-orderable
Expand Down
13 changes: 13 additions & 0 deletions requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,10 @@ markdown==3.5.1
# via wagtail-markdown
mbstrdecoder==1.1.3
# via typepy
numpy==1.26.2
# via
# scipy
# wagtail-ab-testing
openpyxl==3.1.2
# via wagtail
packaging==23.2
Expand All @@ -84,6 +88,8 @@ pytz==2023.3.post1
# l18n
requests==2.31.0
# via wagtail
scipy==1.11.4
# via wagtail-ab-testing
six==1.16.0
# via
# bleach
Expand All @@ -103,14 +109,21 @@ typepy==1.3.0
# via typed-environment-configuration
typing-extensions==4.8.0
# via dj-database-url
ua-parser==0.18.0
# via user-agents
urllib3==2.1.0
# via requests
user-agents==2.2.0
# via wagtail-ab-testing
wagtail==5.2.1
# via
# -r base.in
# wagtail-ab-testing
# wagtail-markdown
# wagtail-modeladmin
# wagtail-orderable
wagtail-ab-testing==0.9
# via -r base.in
wagtail-markdown==0.11.1
# via -r base.in
wagtail-modeladmin==1.0.0
Expand Down
Loading