Repository: cisagov/manage.get.gov

Issue:
Set up skeleton pages for manage domain request
**Acceptance Criteria**

- Create skeleton pages for "Review Progress" and "Domain Request Details"
- Update route when user clicks on "Manage" on the domain dashboard to bring them to these pages
- Figma prototype for [received applications](https://www.figma.com/proto/ninNjo0bTg7XfB4mvTp4hG/GetGov%2FDesigns?page-id=3124%3A32294&node-id=3217-36420&viewport=242%2C-137%2C0.23&scaling=min-zoom&starting-point-node-id=3194%3A35488)
- Figma prototype for [In-review applications](https://www.figma.com/proto/ninNjo0bTg7XfB4mvTp4hG/GetGov%2FDesigns?page-id=3124%3A32294&node-id=3124-32694&viewport=242%2C-137%2C0.23&scaling=min-zoom&starting-point-node-id=3194%3A35488)


Discussion:
Talking with @kewlguy781 about this, a good place to start would be changing the manage button to go to a new route with a sidebar for reviewing application, adding DNS information, and seeing your application status. Since there is a 1:1 relationship between User and DomainApplication, there shouldn't be any RBAC or sense of multiple folks managing this object. 
Confirming with @h-m-f-t , the DNS should be part of the accepted domain section: https://gsa-tts.slack.com/archives/C03QM0JGSQG/p1677263604160309

Resolving patch:
diff --git a/src/registrar/config/urls.py b/src/registrar/config/urls.py
--- a/src/registrar/config/urls.py
+++ b/src/registrar/config/urls.py
@@ -52,6 +52,11 @@
         views.ApplicationWizard.as_view(),
         name=views.ApplicationWizard.EDIT_URL_NAME,
     ),
+    path(
+        "application/<int:pk>",
+        views.ApplicationStatus.as_view(),
+        name="application-status",
+    ),
     path("health/", views.health),
     path("openid/", include("djangooidc.urls")),
     path("register/", include((application_urls, APPLICATION_NAMESPACE))),
diff --git a/src/registrar/views/application.py b/src/registrar/views/application.py
--- a/src/registrar/views/application.py
+++ b/src/registrar/views/application.py
@@ -6,6 +6,7 @@
 from django.urls import resolve, reverse
 from django.utils.translation import gettext_lazy as _
 from django.views.generic import TemplateView
+from django.views import generic
 from django.contrib import messages
 
 from registrar.forms import application_wizard as forms
@@ -473,3 +474,12 @@ def get(self, request, *args, **kwargs):
         # clean up this wizard session, because we are done with it
         del self.storage
         return render(self.request, self.template_name, context)
+
+
+class ApplicationStatus(generic.DetailView):
+    model = DomainApplication
+    template_name = "application_status.html"
+
+    def get_context_data(self, **kwargs):
+        context = super(ApplicationStatus, self).get_context_data(**kwargs)
+        return context


Test patch:
diff --git a/src/registrar/tests/test_views.py b/src/registrar/tests/test_views.py
--- a/src/registrar/tests/test_views.py
+++ b/src/registrar/tests/test_views.py
@@ -1221,3 +1221,93 @@ def test_domain_invitation_flow(self):
         # Now load the home page and make sure our domain appears there
         home_page = self.app.get(reverse("home"))
         self.assertContains(home_page, self.domain.name)
+
+
+class TestApplicationStatus(TestWithUser, WebTest):
+    def setUp(self):
+        super().setUp()
+        self.app.set_user(self.user.username)
+
+    def _completed_application(
+        self,
+        has_other_contacts=True,
+        has_current_website=True,
+        has_alternative_gov_domain=True,
+        has_type_of_work=True,
+        has_anything_else=True,
+    ):
+        """A completed domain application."""
+        ao, _ = Contact.objects.get_or_create(
+            first_name="Testy",
+            last_name="Tester",
+            title="Chief Tester",
+            email="testy@town.com",
+            phone="(555) 555 5555",
+        )
+        domain, _ = Domain.objects.get_or_create(name="citystatus.gov")
+        alt, _ = Website.objects.get_or_create(website="city1.gov")
+        current, _ = Website.objects.get_or_create(website="city.com")
+        you, _ = Contact.objects.get_or_create(
+            first_name="Testy you",
+            last_name="Tester you",
+            title="Admin Tester",
+            email="testy-admin@town.com",
+            phone="(555) 555 5556",
+        )
+        other, _ = Contact.objects.get_or_create(
+            first_name="Testy2",
+            last_name="Tester2",
+            title="Another Tester",
+            email="testy2@town.com",
+            phone="(555) 555 5557",
+        )
+        domain_application_kwargs = dict(
+            organization_type="federal",
+            federal_type="executive",
+            purpose="Purpose of the site",
+            is_policy_acknowledged=True,
+            organization_name="Testorg",
+            address_line1="address 1",
+            address_line2="address 2",
+            state_territory="NY",
+            zipcode="10002",
+            authorizing_official=ao,
+            requested_domain=domain,
+            submitter=you,
+            creator=self.user,
+        )
+        if has_type_of_work:
+            domain_application_kwargs["type_of_work"] = "e-Government"
+        if has_anything_else:
+            domain_application_kwargs["anything_else"] = "There is more"
+
+        application, _ = DomainApplication.objects.get_or_create(
+            **domain_application_kwargs
+        )
+
+        application.status = DomainApplication.SUBMITTED
+        application.save()
+
+        if has_other_contacts:
+            application.other_contacts.add(other)
+        if has_current_website:
+            application.current_websites.add(current)
+        if has_alternative_gov_domain:
+            application.alternative_domains.add(alt)
+
+        return application
+
+    def test_application_status(self):
+        """Checking application status page"""
+        application = self._completed_application()
+        application.save()
+
+        home_page = self.app.get("/")
+        self.assertContains(home_page, "citystatus.gov")
+        # click the "Manage" link
+        detail_page = home_page.click("Manage")
+        self.assertContains(detail_page, "citystatus.gov")
+        self.assertContains(detail_page, "Chief Tester")
+        self.assertContains(detail_page, "testy@town.com")
+        self.assertContains(detail_page, "Admin Tester")
+        self.assertContains(detail_page, "Status:")