Skip to content
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
2 changes: 2 additions & 0 deletions openstax/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

from api import urls as api_urls
from global_settings.views import throw_error, clear_entire_cache, sitemap
from pages.views import pardot_form_submit

admin.site.site_header = 'OpenStax'

Expand Down Expand Up @@ -43,6 +44,7 @@
path('apps/cms/api/webinars/', include('webinars.urls')),
path('apps/cms/api/donations/', include('donations.urls')),
path('apps/cms/api/oxmenus/', include('oxmenus.urls')),
path('apps/cms/api/pardot-forms/<int:page_id>/submit/', pardot_form_submit, name='pardot_form_submit'),

# route everything to /api/spike also...
path('apps/cms/api/spike/', include(wagtail_urls)),
Expand Down
128 changes: 128 additions & 0 deletions pages/migrations/0166_pardotformpage_pardotformfield.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# Generated by Django 5.2.11 on 2026-03-17 23:31

import django.db.models.deletion
import modelcluster.fields
import wagtail.contrib.forms.models
import wagtail.fields
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("pages", "0165_alter_rootpage_body"),
("wagtailcore", "0096_referenceindex_referenceindex_source_object_and_more"),
]

operations = [
migrations.CreateModel(
name="PardotFormPage",
fields=[
(
"page_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="wagtailcore.page",
),
),
("pardot_form_handler_url", models.URLField(help_text="The Pardot form handler endpoint URL.")),
(
"intro",
wagtail.fields.RichTextField(blank=True, help_text="Introductory text displayed above the form."),
),
(
"thank_you_text",
wagtail.fields.RichTextField(blank=True, help_text="Text displayed after a successful submission."),
),
("submit_button_text", models.CharField(default="Submit", max_length=255)),
],
options={
"verbose_name": "Pardot Form Page",
},
bases=(wagtail.contrib.forms.models.FormMixin, "wagtailcore.page"),
),
migrations.CreateModel(
name="PardotFormField",
fields=[
("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
("sort_order", models.IntegerField(blank=True, editable=False, null=True)),
(
"clean_name",
models.CharField(
blank=True,
default="",
help_text="Safe name of the form field, the label converted to ascii_snake_case",
max_length=255,
verbose_name="name",
),
),
(
"label",
models.CharField(help_text="The label of the form field", max_length=255, verbose_name="label"),
),
(
"field_type",
models.CharField(
choices=[
("singleline", "Single line text"),
("multiline", "Multi-line text"),
("email", "Email"),
("number", "Number"),
("url", "URL"),
("checkbox", "Checkbox"),
("checkboxes", "Checkboxes"),
("dropdown", "Drop down"),
("multiselect", "Multiple select"),
("radio", "Radio buttons"),
("date", "Date"),
("datetime", "Date/time"),
("hidden", "Hidden field"),
],
max_length=16,
verbose_name="field type",
),
),
("required", models.BooleanField(default=True, verbose_name="required")),
(
"choices",
models.TextField(
blank=True,
help_text="Comma or new line separated list of choices. Only applicable in checkboxes, radio and dropdown.",
verbose_name="choices",
),
),
(
"default_value",
models.TextField(
blank=True,
help_text="Default value. Comma or new line separated values supported for checkboxes.",
verbose_name="default value",
),
),
("help_text", models.CharField(blank=True, max_length=255, verbose_name="help text")),
(
"pardot_field_name",
models.CharField(
help_text="The Pardot external field name used as the POST parameter (e.g. email, firstName, company).",
max_length=255,
),
),
(
"page",
modelcluster.fields.ParentalKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="form_fields",
to="pages.pardotformpage",
),
),
],
options={
"ordering": ["sort_order"],
"abstract": False,
},
),
]
Loading
Loading