Repository: cisagov/manage.get.gov

Issue:
Remove edit/add and delete icons next to federal_agency field in django admin
### Issue description

Right now on a Domain request and domain information (and therefore Domain) you can click an edit icon next to federal agency which will let you then edit that row in the federal agency table. **_We don't want an analyst or superuser changing a federal agency's name_** in the Federal Agency from the domain Request or Domain pages. Instead they should go to the federal agency table to update it there. Likewise, there is no reason to allow for deleting or adding a federal agency from these tables.

Also, analysts should not be changing the associated Fed agency for a request.

### Acceptance criteria

- [x] Federal Agency is Read-only on domain requests and domain/domain information.
- [x] This applies to superusers AND analysts.

### Additional context

a helpful [stack overflow link](https://stackoverflow.com/questions/56413089/django-admin-how-to-disable-edit-and-delete-link-for-foreignkey) 


### Links to other issues

_No response_


Discussion:

Resolving patch:
diff --git a/src/registrar/admin.py b/src/registrar/admin.py
--- a/src/registrar/admin.py
+++ b/src/registrar/admin.py
@@ -1171,7 +1171,7 @@ class DomainInformationAdmin(ListHeaderAdmin, ImportExportModelAdmin):
     ]
 
     # Readonly fields for analysts and superusers
-    readonly_fields = ("other_contacts", "generic_org_type", "is_election_board")
+    readonly_fields = ("other_contacts", "generic_org_type", "is_election_board", "federal_agency")
 
     # Read only that we'll leverage for CISA Analysts
     analyst_readonly_fields = [
@@ -1438,6 +1438,7 @@ def custom_election_board(self, obj):
         "alternative_domains",
         "generic_org_type",
         "is_election_board",
+        "federal_agency",
     )
 
     # Read only that we'll leverage for CISA Analysts
@@ -1879,7 +1880,7 @@ def state_territory(self, obj):
     search_fields = ["name"]
     search_help_text = "Search by domain name."
     change_form_template = "django/admin/domain_change_form.html"
-    readonly_fields = ["state", "expiration_date", "first_ready", "deleted"]
+    readonly_fields = ("state", "expiration_date", "first_ready", "deleted", "federal_agency")
 
     # Table ordering
     ordering = ["name"]


Test patch:
diff --git a/src/registrar/tests/test_admin.py b/src/registrar/tests/test_admin.py
--- a/src/registrar/tests/test_admin.py
+++ b/src/registrar/tests/test_admin.py
@@ -2232,6 +2232,7 @@ def test_readonly_when_restricted_creator(self):
                 "alternative_domains",
                 "generic_org_type",
                 "is_election_board",
+                "federal_agency",
                 "id",
                 "created_at",
                 "updated_at",
@@ -2286,6 +2287,7 @@ def test_readonly_fields_for_analyst(self):
                 "alternative_domains",
                 "generic_org_type",
                 "is_election_board",
+                "federal_agency",
                 "creator",
                 "about_your_organization",
                 "requested_domain",
@@ -2314,6 +2316,7 @@ def test_readonly_fields_for_superuser(self):
                 "alternative_domains",
                 "generic_org_type",
                 "is_election_board",
+                "federal_agency",
             ]
 
             self.assertEqual(readonly_fields, expected_fields)
@@ -3172,6 +3175,7 @@ def test_readonly_fields_for_analyst(self):
                 "other_contacts",
                 "generic_org_type",
                 "is_election_board",
+                "federal_agency",
                 "creator",
                 "type_of_work",
                 "more_organization_information",