diff --git a/src/registrar/admin.py b/src/registrar/admin.py index a373757cd..d8fc4a232 100644 --- a/src/registrar/admin.py +++ b/src/registrar/admin.py @@ -267,11 +267,13 @@ class DomainApplicationAdminForm(forms.ModelForm): instance = kwargs.get("instance") if instance and instance.pk: current_state = instance.status + + # first option in status transitions is current state + available_transitions = [(current_state, current_state)] + transitions = get_available_FIELD_transitions( instance, models.DomainApplication._meta.get_field("status") ) - # first option in status transitions is current state - available_transitions = [(current_state, current_state)] for transition in transitions: available_transitions.append((transition.target, transition.target)) diff --git a/src/registrar/tests/test_admin.py b/src/registrar/tests/test_admin.py index f2225d877..78d358034 100644 --- a/src/registrar/tests/test_admin.py +++ b/src/registrar/tests/test_admin.py @@ -106,6 +106,20 @@ class TestDomainApplicationAdminForm(TestCase): expected_choices = [("started", "started"), ("submitted", "submitted")] self.assertEqual(form.fields["status"].widget.choices, expected_choices) + def test_form_choices_when_no_instance(self): + # Create a form instance without an instance + form = DomainApplicationAdminForm() + + # Verify that the form choices show all choices when no instance is provided; + # this is necessary to show all choices when creating a new domain + # application in django admin; + # note that FSM ensures that no domain application exists with invalid status, + # so don't need to test for invalid status + self.assertEqual( + form.fields["status"].widget.choices, + DomainApplication._meta.get_field("status").choices, + ) + class TestDomainApplicationAdmin(TestCase): def setUp(self):