Repository: cisagov/manage.get.gov

Issue:
Add fields to User model
### Issue description

In order to collapse the User-Contact connection we have right now (where a User creates a contact but a contact updates a User), we first need to add some fields onto User so that it mimics all the data on a contact object. Currently, the only missing fields are title and middle name 

### Acceptance criteria

- [ ] Update User model to have title and middle name
- [ ] double check that User model now has all the fields that are in Contact (add any missing ones)

### Additional context

_No response_

### Links to other issues

Blocks #2186 (pull that one IN if you unblock it)


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
@@ -594,7 +594,7 @@ def overridden_email_field(self, obj):
             None,
             {"fields": ("username", "password", "status", "verification_type")},
         ),
-        ("Personal Info", {"fields": ("first_name", "last_name", "email")}),
+        ("Personal Info", {"fields": ("first_name", "middle_name", "last_name", "email", "title")}),
         (
             "Permissions",
             {
@@ -625,7 +625,7 @@ def overridden_email_field(self, obj):
                 )
             },
         ),
-        ("Personal Info", {"fields": ("first_name", "last_name", "email")}),
+        ("Personal Info", {"fields": ("first_name", "middle_name", "last_name", "email", "title")}),
         (
             "Permissions",
             {
@@ -651,7 +651,9 @@ def overridden_email_field(self, obj):
     analyst_readonly_fields = [
         "Personal Info",
         "first_name",
+        "middle_name",
         "last_name",
+        "title",
         "email",
         "Permissions",
         "is_active",
diff --git a/src/registrar/migrations/0095_user_middle_name_user_title.py b/src/registrar/migrations/0095_user_middle_name_user_title.py
new file mode 100644
--- /dev/null
+++ b/src/registrar/migrations/0095_user_middle_name_user_title.py
@@ -0,0 +1,23 @@
+# Generated by Django 4.2.10 on 2024-05-22 14:54
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("registrar", "0094_create_groups_v12"),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name="user",
+            name="middle_name",
+            field=models.CharField(blank=True, null=True),
+        ),
+        migrations.AddField(
+            model_name="user",
+            name="title",
+            field=models.CharField(blank=True, null=True, verbose_name="title / role"),
+        ),
+    ]
diff --git a/src/registrar/models/user.py b/src/registrar/models/user.py
--- a/src/registrar/models/user.py
+++ b/src/registrar/models/user.py
@@ -80,6 +80,17 @@ class VerificationTypeChoices(models.TextChoices):
         db_index=True,
     )
 
+    middle_name = models.CharField(
+        null=True,
+        blank=True,
+    )
+
+    title = models.CharField(
+        null=True,
+        blank=True,
+        verbose_name="title / role",
+    )
+
     verification_type = models.CharField(
         choices=VerificationTypeChoices.choices,
         null=True,


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
@@ -3534,7 +3534,7 @@ def test_get_fieldsets_cisa_analyst(self):
                         )
                     },
                 ),
-                ("Personal Info", {"fields": ("first_name", "last_name", "email")}),
+                ("Personal Info", {"fields": ("first_name", "middle_name", "last_name", "email", "title")}),
                 ("Permissions", {"fields": ("is_active", "groups")}),
                 ("Important dates", {"fields": ("last_login", "date_joined")}),
             )