Revert "446 - Change Type Of Work to About Your Organization"

This commit is contained in:
Rebecca H 2023-09-13 14:58:50 -07:00 committed by GitHub
parent 2b61e4a69d
commit 9622c58c52
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 138 additions and 124 deletions

View file

@ -484,7 +484,8 @@ class DomainApplicationAdmin(ListHeaderAdmin):
"federal_agency", "federal_agency",
"federal_type", "federal_type",
"is_election_board", "is_election_board",
"about_your_organization", "type_of_work",
"more_organization_information",
] ]
}, },
), ),
@ -522,7 +523,8 @@ class DomainApplicationAdmin(ListHeaderAdmin):
# Read only that we'll leverage for CISA Analysts # Read only that we'll leverage for CISA Analysts
analyst_readonly_fields = [ analyst_readonly_fields = [
"creator", "creator",
"about_your_organization", "type_of_work",
"more_organization_information",
"address_line1", "address_line1",
"address_line2", "address_line2",
"zipcode", "zipcode",

View file

@ -27,7 +27,7 @@ for step, view in [
(Step.ORGANIZATION_FEDERAL, views.OrganizationFederal), (Step.ORGANIZATION_FEDERAL, views.OrganizationFederal),
(Step.ORGANIZATION_ELECTION, views.OrganizationElection), (Step.ORGANIZATION_ELECTION, views.OrganizationElection),
(Step.ORGANIZATION_CONTACT, views.OrganizationContact), (Step.ORGANIZATION_CONTACT, views.OrganizationContact),
(Step.ABOUT_YOUR_ORGANIZATION, views.AboutYourOrganization), (Step.TYPE_OF_WORK, views.TypeOfWork),
(Step.AUTHORIZING_OFFICIAL, views.AuthorizingOfficial), (Step.AUTHORIZING_OFFICIAL, views.AuthorizingOfficial),
(Step.CURRENT_SITES, views.CurrentSites), (Step.CURRENT_SITES, views.CurrentSites),
(Step.DOTGOV_DOMAIN, views.DotgovDomain), (Step.DOTGOV_DOMAIN, views.DotgovDomain),

View file

@ -310,9 +310,28 @@ class OrganizationContactForm(RegistrarForm):
return federal_agency return federal_agency
class AboutYourOrganizationForm(RegistrarForm): class TypeOfWorkForm(RegistrarForm):
about_your_organization = forms.CharField( type_of_work = forms.CharField(
label="About your organization", # label has to end in a space to get the label_suffix to show
label="What type of work does your organization do? ",
widget=forms.Textarea(),
validators=[
MaxLengthValidator(
1000,
message="Response must be less than 1000 characters.",
)
],
error_messages={"required": "Enter the type of work your organization does."},
)
more_organization_information = forms.CharField(
# label has to end in a space to get the label_suffix to show
label=(
"Describe how your organization is a government organization that is"
" independent of a state government. Include links to authorizing"
" legislation, applicable bylaws or charter, or other documentation to"
" support your claims. "
),
widget=forms.Textarea(), widget=forms.Textarea(),
validators=[ validators=[
MaxLengthValidator( MaxLengthValidator(
@ -321,7 +340,9 @@ class AboutYourOrganizationForm(RegistrarForm):
) )
], ],
error_messages={ error_messages={
"required": ("Enter more information about your organization.") "required": (
"Describe how your organization is independent of a state government."
)
}, },
) )

View file

@ -1,42 +0,0 @@
# Generated by Django 4.2.1 on 2023-09-13 16:58
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("registrar", "0032_merge_0031_alter_domain_state_0031_transitiondomain"),
]
operations = [
migrations.RemoveField(
model_name="domainapplication",
name="more_organization_information",
),
migrations.RemoveField(
model_name="domainapplication",
name="type_of_work",
),
migrations.RemoveField(
model_name="domaininformation",
name="more_organization_information",
),
migrations.RemoveField(
model_name="domaininformation",
name="type_of_work",
),
migrations.AddField(
model_name="domainapplication",
name="about_your_organization",
field=models.TextField(
blank=True, help_text="Information about your organization", null=True
),
),
migrations.AddField(
model_name="domaininformation",
name="about_your_organization",
field=models.TextField(
blank=True, help_text="Information about your organization", null=True
),
),
]

View file

@ -378,10 +378,16 @@ class DomainApplication(TimeStampedModel):
help_text="Urbanization (Puerto Rico only)", help_text="Urbanization (Puerto Rico only)",
) )
about_your_organization = models.TextField( type_of_work = models.TextField(
null=True, null=True,
blank=True, blank=True,
help_text="Information about your organization", help_text="Type of work of the organization",
)
more_organization_information = models.TextField(
null=True,
blank=True,
help_text="More information about your organization",
) )
authorizing_official = models.ForeignKey( authorizing_official = models.ForeignKey(
@ -647,7 +653,7 @@ class DomainApplication(TimeStampedModel):
] ]
return bool(user_choice and user_choice not in excluded) return bool(user_choice and user_choice not in excluded)
def show_about_your_organization(self) -> bool: def show_type_of_work(self) -> bool:
"""Show this step if this is a special district or interstate.""" """Show this step if this is a special district or interstate."""
user_choice = self.organization_type user_choice = self.organization_type
return user_choice in [ return user_choice in [

View file

@ -134,10 +134,16 @@ class DomainInformation(TimeStampedModel):
verbose_name="Urbanization (Puerto Rico only)", verbose_name="Urbanization (Puerto Rico only)",
) )
about_your_organization = models.TextField( type_of_work = models.TextField(
null=True, null=True,
blank=True, blank=True,
help_text="Information about your organization", help_text="Type of work of the organization",
)
more_organization_information = models.TextField(
null=True,
blank=True,
help_text="Further information about the government organization",
) )
authorizing_official = models.ForeignKey( authorizing_official = models.ForeignKey(

View file

@ -1,23 +0,0 @@
{% extends 'application_form.html' %}
{% load field_helpers %}
{% block form_instructions %}
<p>Wed like to know more about your organization. Include the following in your response: </p>
<ul class="usa-list">
<li>The type of work your organization does </li>
<li>How your organization is a government organization that is independent of a state government </li>
<li>Include links to authorizing legislation, applicable bylaws or charter, or other documentation to support your claims.</li>
</ul>
</p>
{% endblock %}
{% block form_required_fields_help_text %}
<p class="text-semibold"><abbr class="usa-hint usa-hint--required" title="required">*</abbr>This question is required.</p>
{% endblock %}
{% block form_fields %}
{% with attr_maxlength=1000 add_label_class="usa-sr-only" %}
{% input_with_errors forms.0.about_your_organization %}
{% endwith %}
{% endblock %}

View file

@ -46,8 +46,9 @@
Incomplete Incomplete
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if step == Step.ABOUT_YOUR_ORGANIZATION %} {% if step == Step.TYPE_OF_WORK %}
<p>{{ application.about_your_organization|default:"Incomplete" }}</p> <p>{{ application.type_of_work|default:"Incomplete" }}</p>
<p>{{ application.more_organization_information|default:"Incomplete" }}</p>
{% endif %} {% endif %}
{% if step == Step.AUTHORIZING_OFFICIAL %} {% if step == Step.AUTHORIZING_OFFICIAL %}
{% if application.authorizing_official %} {% if application.authorizing_official %}

View file

@ -77,8 +77,12 @@
{% include "includes/summary_item.html" with title='Organization name and mailing address' value=domainapplication address='true' heading_level=heading_level %} {% include "includes/summary_item.html" with title='Organization name and mailing address' value=domainapplication address='true' heading_level=heading_level %}
{% endif %} {% endif %}
{% if domainapplication.about_your_organization %} {% if domainapplication.type_of_work %}
{% include "includes/summary_item.html" with title='About your organization' value=domainapplication.about_your_organization heading_level=heading_level %} {% include "includes/summary_item.html" with title='Type of work' value=domainapplication.type_of_work heading_level=heading_level %}
{% endif %}
{% if domainapplication.more_organization_information %}
{% include "includes/summary_item.html" with title='More information about your organization' value=domainapplication.more_organization_information heading_level=heading_level %}
{% endif %} {% endif %}
{% if domainapplication.authorizing_official %} {% if domainapplication.authorizing_official %}

View file

@ -0,0 +1,10 @@
{% extends 'application_form.html' %}
{% load field_helpers %}
{% block form_fields %}
{% with attr_maxlength=1000 %}
{% input_with_errors forms.0.type_of_work %}
{% input_with_errors forms.0.more_organization_information %}
{% endwith %}
{% endblock %}

View file

@ -10,9 +10,9 @@ Organization name and mailing address:
{{ application.city }}, {{ application.state_territory }} {{ application.city }}, {{ application.state_territory }}
{{ application.zipcode }}{% if application.urbanization %} {{ application.zipcode }}{% if application.urbanization %}
{{ application.urbanization }}{% endif %}{% endspaceless %} {{ application.urbanization }}{% endif %}{% endspaceless %}
{% if application.about_your_organization %}{# if block makes one newline if it's false #} {% if application.type_of_work %}{# if block makes one newline if it's false #}
About your organization: Type of work:
{% spaceless %}{{ application.about_your_organization }}{% endspaceless %} {% spaceless %}{{ application.type_of_work }}{% endspaceless %}
{% endif %} {% endif %}
Authorizing official: Authorizing official:
{% spaceless %}{% include "emails/includes/contact.txt" with contact=application.authorizing_official %}{% endspaceless %} {% spaceless %}{% include "emails/includes/contact.txt" with contact=application.authorizing_official %}{% endspaceless %}

View file

@ -250,7 +250,7 @@ class AuditedAdminMockData:
is_policy_acknowledged: boolean = True, is_policy_acknowledged: boolean = True,
state_territory: str = "NY", state_territory: str = "NY",
zipcode: str = "10002", zipcode: str = "10002",
about_your_organization: str = "e-Government", type_of_work: str = "e-Government",
anything_else: str = "There is more", anything_else: str = "There is more",
authorizing_official: Contact = self.dummy_contact(item_name, "authorizing_official"), authorizing_official: Contact = self.dummy_contact(item_name, "authorizing_official"),
submitter: Contact = self.dummy_contact(item_name, "submitter"), submitter: Contact = self.dummy_contact(item_name, "submitter"),
@ -267,7 +267,7 @@ class AuditedAdminMockData:
is_policy_acknowledged=True, is_policy_acknowledged=True,
state_territory="NY", state_territory="NY",
zipcode="10002", zipcode="10002",
about_your_organization="e-Government", type_of_work="e-Government",
anything_else="There is more", anything_else="There is more",
authorizing_official=self.dummy_contact(item_name, "authorizing_official"), authorizing_official=self.dummy_contact(item_name, "authorizing_official"),
submitter=self.dummy_contact(item_name, "submitter"), submitter=self.dummy_contact(item_name, "submitter"),
@ -453,7 +453,7 @@ def completed_application(
has_other_contacts=True, has_other_contacts=True,
has_current_website=True, has_current_website=True,
has_alternative_gov_domain=True, has_alternative_gov_domain=True,
has_about_your_organization=True, has_type_of_work=True,
has_anything_else=True, has_anything_else=True,
status=DomainApplication.STARTED, status=DomainApplication.STARTED,
user=False, user=False,
@ -501,8 +501,8 @@ def completed_application(
creator=user, creator=user,
status=status, status=status,
) )
if has_about_your_organization: if has_type_of_work:
domain_application_kwargs["about_your_organization"] = "e-Government" domain_application_kwargs["type_of_work"] = "e-Government"
if has_anything_else: if has_anything_else:
domain_application_kwargs["anything_else"] = "There is more" domain_application_kwargs["anything_else"] = "There is more"

View file

@ -441,7 +441,8 @@ class TestDomainApplicationAdmin(TestCase):
"state_territory", "state_territory",
"zipcode", "zipcode",
"urbanization", "urbanization",
"about_your_organization", "type_of_work",
"more_organization_information",
"authorizing_official", "authorizing_official",
"approved_domain", "approved_domain",
"requested_domain", "requested_domain",
@ -465,7 +466,8 @@ class TestDomainApplicationAdmin(TestCase):
expected_fields = [ expected_fields = [
"creator", "creator",
"about_your_organization", "type_of_work",
"more_organization_information",
"address_line1", "address_line1",
"address_line2", "address_line2",
"zipcode", "zipcode",

View file

@ -48,7 +48,7 @@ class TestEmails(TestCase):
self.assertIn("Testy2 Tester2", body) self.assertIn("Testy2 Tester2", body)
self.assertIn("Current website for your organization:", body) self.assertIn("Current website for your organization:", body)
self.assertIn("city.com", body) self.assertIn("city.com", body)
self.assertIn("About your organization:", body) self.assertIn("Type of work:", body)
self.assertIn("Anything else", body) self.assertIn("Anything else", body)
@boto3_mocking.patching @boto3_mocking.patching
@ -126,26 +126,26 @@ class TestEmails(TestCase):
self.assertRegex(body, r"city.gov\n\nPurpose of your domain:") self.assertRegex(body, r"city.gov\n\nPurpose of your domain:")
@boto3_mocking.patching @boto3_mocking.patching
def test_submission_confirmation_about_your_organization_spacing(self): def test_submission_confirmation_type_of_work_spacing(self):
"""Test line spacing with about your organization.""" """Test line spacing with type of work."""
application = completed_application(has_about_your_organization=True) application = completed_application(has_type_of_work=True)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class): with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
application.submit() application.submit()
_, kwargs = self.mock_client.send_email.call_args _, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"] body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
self.assertIn("About your organization:", body) self.assertIn("Type of work:", body)
# spacing should be right between adjacent elements # spacing should be right between adjacent elements
self.assertRegex(body, r"10002\n\nAbout your organization:") self.assertRegex(body, r"10002\n\nType of work:")
@boto3_mocking.patching @boto3_mocking.patching
def test_submission_confirmation_no_about_your_organization_spacing(self): def test_submission_confirmation_no_type_of_work_spacing(self):
"""Test line spacing without about your organization.""" """Test line spacing without type of work."""
application = completed_application(has_about_your_organization=False) application = completed_application(has_type_of_work=False)
with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class): with boto3_mocking.clients.handler_for("sesv2", self.mock_client_class):
application.submit() application.submit()
_, kwargs = self.mock_client.send_email.call_args _, kwargs = self.mock_client.send_email.call_args
body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"] body = kwargs["Content"]["Simple"]["Body"]["Text"]["Data"]
self.assertNotIn("About your organization:", body) self.assertNotIn("Type of work:", body)
# spacing should be right between adjacent elements # spacing should be right between adjacent elements
self.assertRegex(body, r"10002\n\nAuthorizing official:") self.assertRegex(body, r"10002\n\nAuthorizing official:")

View file

@ -13,7 +13,7 @@ from registrar.forms.application_wizard import (
TribalGovernmentForm, TribalGovernmentForm,
PurposeForm, PurposeForm,
AnythingElseForm, AnythingElseForm,
AboutYourOrganizationForm, TypeOfWorkForm,
) )
from registrar.forms.domain import ContactForm from registrar.forms.domain import ContactForm
@ -118,7 +118,7 @@ class TestFormValidation(TestCase):
["Response must be less than 1000 characters."], ["Response must be less than 1000 characters."],
) )
def test_anything_else_form_about_your_organization_character_count_invalid(self): def test_anything_else_form_type_of_work_character_count_invalid(self):
"""Response must be less than 1000 characters.""" """Response must be less than 1000 characters."""
form = AnythingElseForm( form = AnythingElseForm(
data={ data={
@ -147,12 +147,43 @@ class TestFormValidation(TestCase):
["Response must be less than 1000 characters."], ["Response must be less than 1000 characters."],
) )
def test_anything_else_form_more_organization_information_character_count_invalid(
self,
):
"""Response must be less than 1000 characters."""
form = TypeOfWorkForm(
data={
"more_organization_information": "Bacon ipsum dolor amet fatback"
"shankle, drumstick doner chicken landjaeger turkey andouille."
"Buffalo biltong chuck pork chop tongue bresaola turkey. Doner"
"ground round strip steak, jowl tail chuck ribeye bacon"
"beef ribs swine filet ball tip pancetta strip steak sirloin"
"mignon ham spare ribs rump. Tail shank biltong beef ribs doner"
"buffalo swine bacon. Tongue cow picanha brisket bacon chuck"
"leberkas pork loin pork, drumstick capicola. Doner short loin"
"ground round fatback turducken chislic shoulder turducken"
"spare ribs, burgdoggen kielbasa kevin frankfurter ball tip"
"pancetta cupim. Turkey meatball andouille porchetta hamburger"
"pork chop corned beef. Brisket short ribs turducken, pork chop"
"chislic turkey ball pork chop leberkas rump, rump bacon, jowl"
"tip ham. Shankle salami tongue venison short ribs kielbasa"
"tri-tip ham hock swine hamburger. Flank meatball corned beef"
"cow sausage ball tip kielbasa ham hock. Ball tip cupim meatloaf"
"beef ribs rump jowl tenderloin swine sausage biltong"
"bacon rump tail boudin meatball boudin meatball boudin"
"strip steak pastrami."
}
)
self.assertEqual(
form.errors["more_organization_information"],
["Response must be less than 1000 characters."],
)
def test_anything_else_form_character_count_invalid(self): def test_anything_else_form_character_count_invalid(self):
"""Response must be less than 1000 characters.""" """Response must be less than 1000 characters."""
form = AboutYourOrganizationForm( form = TypeOfWorkForm(
data={ data={
"about_your_organization": "Bacon ipsum dolor amet fatback" "type_of_work": "Bacon ipsum dolor amet fatback strip steak pastrami"
"strip steak pastrami"
"shankle, drumstick doner chicken landjaeger turkey andouille." "shankle, drumstick doner chicken landjaeger turkey andouille."
"Buffalo biltong chuck pork chop tongue bresaola turkey. Doner" "Buffalo biltong chuck pork chop tongue bresaola turkey. Doner"
"ground round strip steak, jowl tail chuck ribeye bacon" "ground round strip steak, jowl tail chuck ribeye bacon"
@ -173,7 +204,7 @@ class TestFormValidation(TestCase):
} }
) )
self.assertEqual( self.assertEqual(
form.errors["about_your_organization"], form.errors["type_of_work"],
["Response must be less than 1000 characters."], ["Response must be less than 1000 characters."],
) )

View file

@ -660,14 +660,12 @@ class DomainApplicationTests(TestWithUser, WebTest):
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id) self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
contact_result = org_contact_form.submit() contact_result = org_contact_form.submit()
# the post request should return a redirect to the # the post request should return a redirect to the type of work page
# about your organization page if it was successful. # if it was successful.
self.assertEqual(contact_result.status_code, 302) self.assertEqual(contact_result.status_code, 302)
self.assertEqual( self.assertEqual(contact_result["Location"], "/register/type_of_work/")
contact_result["Location"], "/register/about_your_organization/"
)
def test_application_about_your_organization_special(self): def test_application_type_of_work_special(self):
"""Special districts have to answer an additional question.""" """Special districts have to answer an additional question."""
type_page = self.app.get(reverse("application:")).follow() type_page = self.app.get(reverse("application:")).follow()
# django-webtest does not handle cookie-based sessions well because it keeps # django-webtest does not handle cookie-based sessions well because it keeps
@ -686,7 +684,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id) self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
contact_page = type_result.follow() contact_page = type_result.follow()
self.assertContains(contact_page, self.TITLES[Step.ABOUT_YOUR_ORGANIZATION]) self.assertContains(contact_page, self.TITLES[Step.TYPE_OF_WORK])
def test_application_no_other_contacts(self): def test_application_no_other_contacts(self):
"""Applicants with no other contacts have to give a reason.""" """Applicants with no other contacts have to give a reason."""
@ -706,7 +704,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
actual_url_slug = no_contacts_page.request.path.split("/")[-2] actual_url_slug = no_contacts_page.request.path.split("/")[-2]
self.assertEqual(expected_url_slug, actual_url_slug) self.assertEqual(expected_url_slug, actual_url_slug)
def test_application_about_your_organiztion_interstate(self): def test_application_type_of_work_interstate(self):
"""Special districts have to answer an additional question.""" """Special districts have to answer an additional question."""
type_page = self.app.get(reverse("application:")).follow() type_page = self.app.get(reverse("application:")).follow()
# django-webtest does not handle cookie-based sessions well because it keeps # django-webtest does not handle cookie-based sessions well because it keeps
@ -725,7 +723,7 @@ class DomainApplicationTests(TestWithUser, WebTest):
self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id) self.app.set_cookie(settings.SESSION_COOKIE_NAME, session_id)
contact_page = type_result.follow() contact_page = type_result.follow()
self.assertContains(contact_page, self.TITLES[Step.ABOUT_YOUR_ORGANIZATION]) self.assertContains(contact_page, self.TITLES[Step.TYPE_OF_WORK])
def test_application_tribal_government(self): def test_application_tribal_government(self):
"""Tribal organizations have to answer an additional question.""" """Tribal organizations have to answer an additional question."""

View file

@ -30,7 +30,7 @@ class Step(StrEnum):
ORGANIZATION_FEDERAL = "organization_federal" ORGANIZATION_FEDERAL = "organization_federal"
ORGANIZATION_ELECTION = "organization_election" ORGANIZATION_ELECTION = "organization_election"
ORGANIZATION_CONTACT = "organization_contact" ORGANIZATION_CONTACT = "organization_contact"
ABOUT_YOUR_ORGANIZATION = "about_your_organization" TYPE_OF_WORK = "type_of_work"
AUTHORIZING_OFFICIAL = "authorizing_official" AUTHORIZING_OFFICIAL = "authorizing_official"
CURRENT_SITES = "current_sites" CURRENT_SITES = "current_sites"
DOTGOV_DOMAIN = "dotgov_domain" DOTGOV_DOMAIN = "dotgov_domain"
@ -77,7 +77,7 @@ class ApplicationWizard(ApplicationWizardPermissionView, TemplateView):
Step.ORGANIZATION_FEDERAL: _("Federal government branch"), Step.ORGANIZATION_FEDERAL: _("Federal government branch"),
Step.ORGANIZATION_ELECTION: _("Election office"), Step.ORGANIZATION_ELECTION: _("Election office"),
Step.ORGANIZATION_CONTACT: _("Organization name and mailing address"), Step.ORGANIZATION_CONTACT: _("Organization name and mailing address"),
Step.ABOUT_YOUR_ORGANIZATION: _("About your organization"), Step.TYPE_OF_WORK: _("Type of work"),
Step.AUTHORIZING_OFFICIAL: _("Authorizing official"), Step.AUTHORIZING_OFFICIAL: _("Authorizing official"),
Step.CURRENT_SITES: _("Current website for your organization"), Step.CURRENT_SITES: _("Current website for your organization"),
Step.DOTGOV_DOMAIN: _(".gov domain"), Step.DOTGOV_DOMAIN: _(".gov domain"),
@ -100,9 +100,7 @@ class ApplicationWizard(ApplicationWizardPermissionView, TemplateView):
Step.ORGANIZATION_ELECTION: lambda w: w.from_model( Step.ORGANIZATION_ELECTION: lambda w: w.from_model(
"show_organization_election", False "show_organization_election", False
), ),
Step.ABOUT_YOUR_ORGANIZATION: lambda w: w.from_model( Step.TYPE_OF_WORK: lambda w: w.from_model("show_type_of_work", False),
"show_about_your_organization", False
),
Step.NO_OTHER_CONTACTS: lambda w: w.from_model( Step.NO_OTHER_CONTACTS: lambda w: w.from_model(
"show_no_other_contacts_rationale", False "show_no_other_contacts_rationale", False
), ),
@ -375,9 +373,9 @@ class OrganizationContact(ApplicationWizard):
forms = [forms.OrganizationContactForm] forms = [forms.OrganizationContactForm]
class AboutYourOrganization(ApplicationWizard): class TypeOfWork(ApplicationWizard):
template_name = "application_about_your_organization.html" template_name = "application_type_of_work.html"
forms = [forms.AboutYourOrganizationForm] forms = [forms.TypeOfWorkForm]
class AuthorizingOfficial(ApplicationWizard): class AuthorizingOfficial(ApplicationWizard):