We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Add profile information to the verification admin
When manually reviewing verification requests it would be helpful to have more information in the admin such as the users full name, location, department and website.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `app/grandchallenge/verifications/admin.py`
Content:
```
1 from django.contrib import admin
2 from django.utils.timezone import now
3 
4 from grandchallenge.verifications.models import Verification
5 
6 
7 def mark_verified(modeladmin, request, queryset):
8     queryset.update(is_verified=True, verified_at=now())
9 
10 
11 mark_verified.short_description = "Mark selected users as verified"
12 mark_verified.allowed_permissions = ("change",)
13 
14 
15 def mark_not_verified(modeladmin, request, queryset):
16     queryset.update(is_verified=False, verified_at=None)
17 
18 
19 mark_not_verified.short_description = "Mark selected users as not verified"
20 mark_not_verified.allowed_permissions = ("change",)
21 
22 
23 class VerificationAdmin(admin.ModelAdmin):
24     list_display = (
25         "user",
26         "created",
27         "signup_email",
28         "signup_email_activated",
29         "email",
30         "email_is_verified",
31         "is_verified",
32         "verified_at",
33     )
34     list_filter = ("email_is_verified", "is_verified")
35     readonly_fields = (
36         "created",
37         "modified",
38         "email_is_verified",
39         "email_verified_at",
40         "is_verified",
41         "verified_at",
42     )
43     search_fields = ("user__username", "email", "user__email")
44     actions = (mark_verified, mark_not_verified)
45     autocomplete_fields = ("user",)
46 
47     def signup_email_activated(self, instance):
48         return instance.signup_email_activated
49 
50     signup_email_activated.boolean = True
51 
52     def get_readonly_fields(self, request, obj=None):
53         if obj:
54             return ("user", "email", *self.readonly_fields)
55         else:
56             return self.readonly_fields
57 
58 
59 admin.site.register(Verification, VerificationAdmin)
60
```

Path: `app/grandchallenge/verifications/models.py`
Content:
```
1 from allauth.account.signals import email_confirmed
2 from django.contrib.auth import get_user_model
3 from django.db import models
4 from django.utils.timezone import now
5 from pyswot import is_academic
6 
7 from grandchallenge.subdomains.utils import reverse
8 from grandchallenge.verifications.tokens import (
9     email_verification_token_generator,
10 )
11 
12 
13 def email_is_trusted(*, email):
14     return is_academic(email)
15 
16 
17 class Verification(models.Model):
18     created = models.DateTimeField(auto_now_add=True)
19     modified = models.DateTimeField(auto_now=True)
20 
21     user = models.OneToOneField(
22         get_user_model(), unique=True, on_delete=models.CASCADE,
23     )
24 
25     email = models.EmailField(blank=True)
26     email_is_verified = models.BooleanField(default=False, editable=False)
27     email_verified_at = models.DateTimeField(
28         blank=True, null=True, editable=False
29     )
30 
31     is_verified = models.BooleanField(default=None, null=True, editable=False)
32     verified_at = models.DateTimeField(blank=True, null=True, editable=False)
33 
34     def __str__(self):
35         return f"Verification for {self.user}"
36 
37     @property
38     def signup_email(self):
39         return self.user.email
40 
41     @property
42     def signup_email_activated(self):
43         return self.user.emailaddress_set.filter(
44             verified=True, email=self.signup_email
45         ).exists()
46 
47     @property
48     def signup_email_is_trusted(self):
49         return self.signup_email_activated and email_is_trusted(
50             email=self.signup_email
51         )
52 
53     @property
54     def verification_email_is_trusted(self):
55         return self.email_is_verified and email_is_trusted(email=self.email)
56 
57     @property
58     def token(self):
59         return email_verification_token_generator.make_token(self.user)
60 
61     @property
62     def verification_url(self):
63         return reverse("verifications:confirm", kwargs={"token": self.token},)
64 
65     def save(self, *args, **kwargs):
66         if self.signup_email_is_trusted or self.verification_email_is_trusted:
67             self.is_verified = True
68             self.verified_at = now()
69 
70         super().save(*args, **kwargs)
71 
72 
73 def create_verification(email_address, *_, **__):
74     if (
75         email_is_trusted(email=email_address.email)
76         and not Verification.objects.filter(user=email_address.user).exists()
77     ):
78         Verification.objects.create(
79             user=email_address.user, email=email_address.email
80         )
81 
82 
83 email_confirmed.connect(create_verification)
84
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/app/grandchallenge/verifications/admin.py b/app/grandchallenge/verifications/admin.py
--- a/app/grandchallenge/verifications/admin.py
+++ b/app/grandchallenge/verifications/admin.py
@@ -23,14 +23,15 @@
 class VerificationAdmin(admin.ModelAdmin):
     list_display = (
         "user",
+        "user_info",
         "created",
         "signup_email",
-        "signup_email_activated",
         "email",
         "email_is_verified",
         "is_verified",
         "verified_at",
     )
+    list_select_related = ("user__user_profile",)
     list_filter = ("email_is_verified", "is_verified")
     readonly_fields = (
         "created",
diff --git a/app/grandchallenge/verifications/models.py b/app/grandchallenge/verifications/models.py
--- a/app/grandchallenge/verifications/models.py
+++ b/app/grandchallenge/verifications/models.py
@@ -1,6 +1,7 @@
 from allauth.account.signals import email_confirmed
 from django.contrib.auth import get_user_model
 from django.db import models
+from django.utils.html import format_html
 from django.utils.timezone import now
 from pyswot import is_academic
 
@@ -69,6 +70,17 @@
 
         super().save(*args, **kwargs)
 
+    @property
+    def user_info(self):
+        return format_html(
+            "<span>{} <br/> {} <br/> {} <br/> {} <br/> {}</span>",
+            self.user.get_full_name(),
+            self.user.user_profile.institution,
+            self.user.user_profile.department,
+            self.user.user_profile.country,
+            self.user.user_profile.website,
+        )
+
 
 def create_verification(email_address, *_, **__):
     if (

{"golden_diff": "diff --git a/app/grandchallenge/verifications/admin.py b/app/grandchallenge/verifications/admin.py\n--- a/app/grandchallenge/verifications/admin.py\n+++ b/app/grandchallenge/verifications/admin.py\n@@ -23,14 +23,15 @@\n class VerificationAdmin(admin.ModelAdmin):\n     list_display = (\n         \"user\",\n+        \"user_info\",\n         \"created\",\n         \"signup_email\",\n-        \"signup_email_activated\",\n         \"email\",\n         \"email_is_verified\",\n         \"is_verified\",\n         \"verified_at\",\n     )\n+    list_select_related = (\"user__user_profile\",)\n     list_filter = (\"email_is_verified\", \"is_verified\")\n     readonly_fields = (\n         \"created\",\ndiff --git a/app/grandchallenge/verifications/models.py b/app/grandchallenge/verifications/models.py\n--- a/app/grandchallenge/verifications/models.py\n+++ b/app/grandchallenge/verifications/models.py\n@@ -1,6 +1,7 @@\n from allauth.account.signals import email_confirmed\n from django.contrib.auth import get_user_model\n from django.db import models\n+from django.utils.html import format_html\n from django.utils.timezone import now\n from pyswot import is_academic\n \n@@ -69,6 +70,17 @@\n \n         super().save(*args, **kwargs)\n \n+    @property\n+    def user_info(self):\n+        return format_html(\n+            \"<span>{} <br/> {} <br/> {} <br/> {} <br/> {}</span>\",\n+            self.user.get_full_name(),\n+            self.user.user_profile.institution,\n+            self.user.user_profile.department,\n+            self.user.user_profile.country,\n+            self.user.user_profile.website,\n+        )\n+\n \n def create_verification(email_address, *_, **__):\n     if (\n", "issue": "Add profile information to the verification admin\nWhen manually reviewing verification requests it would be helpful to have more information in the admin such as the users full name, location, department and website.\n", "before_files": [{"content": "from django.contrib import admin\nfrom django.utils.timezone import now\n\nfrom grandchallenge.verifications.models import Verification\n\n\ndef mark_verified(modeladmin, request, queryset):\n    queryset.update(is_verified=True, verified_at=now())\n\n\nmark_verified.short_description = \"Mark selected users as verified\"\nmark_verified.allowed_permissions = (\"change\",)\n\n\ndef mark_not_verified(modeladmin, request, queryset):\n    queryset.update(is_verified=False, verified_at=None)\n\n\nmark_not_verified.short_description = \"Mark selected users as not verified\"\nmark_not_verified.allowed_permissions = (\"change\",)\n\n\nclass VerificationAdmin(admin.ModelAdmin):\n    list_display = (\n        \"user\",\n        \"created\",\n        \"signup_email\",\n        \"signup_email_activated\",\n        \"email\",\n        \"email_is_verified\",\n        \"is_verified\",\n        \"verified_at\",\n    )\n    list_filter = (\"email_is_verified\", \"is_verified\")\n    readonly_fields = (\n        \"created\",\n        \"modified\",\n        \"email_is_verified\",\n        \"email_verified_at\",\n        \"is_verified\",\n        \"verified_at\",\n    )\n    search_fields = (\"user__username\", \"email\", \"user__email\")\n    actions = (mark_verified, mark_not_verified)\n    autocomplete_fields = (\"user\",)\n\n    def signup_email_activated(self, instance):\n        return instance.signup_email_activated\n\n    signup_email_activated.boolean = True\n\n    def get_readonly_fields(self, request, obj=None):\n        if obj:\n            return (\"user\", \"email\", *self.readonly_fields)\n        else:\n            return self.readonly_fields\n\n\nadmin.site.register(Verification, VerificationAdmin)\n", "path": "app/grandchallenge/verifications/admin.py"}, {"content": "from allauth.account.signals import email_confirmed\nfrom django.contrib.auth import get_user_model\nfrom django.db import models\nfrom django.utils.timezone import now\nfrom pyswot import is_academic\n\nfrom grandchallenge.subdomains.utils import reverse\nfrom grandchallenge.verifications.tokens import (\n    email_verification_token_generator,\n)\n\n\ndef email_is_trusted(*, email):\n    return is_academic(email)\n\n\nclass Verification(models.Model):\n    created = models.DateTimeField(auto_now_add=True)\n    modified = models.DateTimeField(auto_now=True)\n\n    user = models.OneToOneField(\n        get_user_model(), unique=True, on_delete=models.CASCADE,\n    )\n\n    email = models.EmailField(blank=True)\n    email_is_verified = models.BooleanField(default=False, editable=False)\n    email_verified_at = models.DateTimeField(\n        blank=True, null=True, editable=False\n    )\n\n    is_verified = models.BooleanField(default=None, null=True, editable=False)\n    verified_at = models.DateTimeField(blank=True, null=True, editable=False)\n\n    def __str__(self):\n        return f\"Verification for {self.user}\"\n\n    @property\n    def signup_email(self):\n        return self.user.email\n\n    @property\n    def signup_email_activated(self):\n        return self.user.emailaddress_set.filter(\n            verified=True, email=self.signup_email\n        ).exists()\n\n    @property\n    def signup_email_is_trusted(self):\n        return self.signup_email_activated and email_is_trusted(\n            email=self.signup_email\n        )\n\n    @property\n    def verification_email_is_trusted(self):\n        return self.email_is_verified and email_is_trusted(email=self.email)\n\n    @property\n    def token(self):\n        return email_verification_token_generator.make_token(self.user)\n\n    @property\n    def verification_url(self):\n        return reverse(\"verifications:confirm\", kwargs={\"token\": self.token},)\n\n    def save(self, *args, **kwargs):\n        if self.signup_email_is_trusted or self.verification_email_is_trusted:\n            self.is_verified = True\n            self.verified_at = now()\n\n        super().save(*args, **kwargs)\n\n\ndef create_verification(email_address, *_, **__):\n    if (\n        email_is_trusted(email=email_address.email)\n        and not Verification.objects.filter(user=email_address.user).exists()\n    ):\n        Verification.objects.create(\n            user=email_address.user, email=email_address.email\n        )\n\n\nemail_confirmed.connect(create_verification)\n", "path": "app/grandchallenge/verifications/models.py"}], "after_files": [{"content": "from django.contrib import admin\nfrom django.utils.timezone import now\n\nfrom grandchallenge.verifications.models import Verification\n\n\ndef mark_verified(modeladmin, request, queryset):\n    queryset.update(is_verified=True, verified_at=now())\n\n\nmark_verified.short_description = \"Mark selected users as verified\"\nmark_verified.allowed_permissions = (\"change\",)\n\n\ndef mark_not_verified(modeladmin, request, queryset):\n    queryset.update(is_verified=False, verified_at=None)\n\n\nmark_not_verified.short_description = \"Mark selected users as not verified\"\nmark_not_verified.allowed_permissions = (\"change\",)\n\n\nclass VerificationAdmin(admin.ModelAdmin):\n    list_display = (\n        \"user\",\n        \"user_info\",\n        \"created\",\n        \"signup_email\",\n        \"email\",\n        \"email_is_verified\",\n        \"is_verified\",\n        \"verified_at\",\n    )\n    list_select_related = (\"user__user_profile\",)\n    list_filter = (\"email_is_verified\", \"is_verified\")\n    readonly_fields = (\n        \"created\",\n        \"modified\",\n        \"email_is_verified\",\n        \"email_verified_at\",\n        \"is_verified\",\n        \"verified_at\",\n    )\n    search_fields = (\"user__username\", \"email\", \"user__email\")\n    actions = (mark_verified, mark_not_verified)\n    autocomplete_fields = (\"user\",)\n\n    def signup_email_activated(self, instance):\n        return instance.signup_email_activated\n\n    signup_email_activated.boolean = True\n\n    def get_readonly_fields(self, request, obj=None):\n        if obj:\n            return (\"user\", \"email\", *self.readonly_fields)\n        else:\n            return self.readonly_fields\n\n\nadmin.site.register(Verification, VerificationAdmin)\n", "path": "app/grandchallenge/verifications/admin.py"}, {"content": "from allauth.account.signals import email_confirmed\nfrom django.contrib.auth import get_user_model\nfrom django.db import models\nfrom django.utils.html import format_html\nfrom django.utils.timezone import now\nfrom pyswot import is_academic\n\nfrom grandchallenge.subdomains.utils import reverse\nfrom grandchallenge.verifications.tokens import (\n    email_verification_token_generator,\n)\n\n\ndef email_is_trusted(*, email):\n    return is_academic(email)\n\n\nclass Verification(models.Model):\n    created = models.DateTimeField(auto_now_add=True)\n    modified = models.DateTimeField(auto_now=True)\n\n    user = models.OneToOneField(\n        get_user_model(), unique=True, on_delete=models.CASCADE,\n    )\n\n    email = models.EmailField(blank=True)\n    email_is_verified = models.BooleanField(default=False, editable=False)\n    email_verified_at = models.DateTimeField(\n        blank=True, null=True, editable=False\n    )\n\n    is_verified = models.BooleanField(default=None, null=True, editable=False)\n    verified_at = models.DateTimeField(blank=True, null=True, editable=False)\n\n    def __str__(self):\n        return f\"Verification for {self.user}\"\n\n    @property\n    def signup_email(self):\n        return self.user.email\n\n    @property\n    def signup_email_activated(self):\n        return self.user.emailaddress_set.filter(\n            verified=True, email=self.signup_email\n        ).exists()\n\n    @property\n    def signup_email_is_trusted(self):\n        return self.signup_email_activated and email_is_trusted(\n            email=self.signup_email\n        )\n\n    @property\n    def verification_email_is_trusted(self):\n        return self.email_is_verified and email_is_trusted(email=self.email)\n\n    @property\n    def token(self):\n        return email_verification_token_generator.make_token(self.user)\n\n    @property\n    def verification_url(self):\n        return reverse(\"verifications:confirm\", kwargs={\"token\": self.token},)\n\n    def save(self, *args, **kwargs):\n        if self.signup_email_is_trusted or self.verification_email_is_trusted:\n            self.is_verified = True\n            self.verified_at = now()\n\n        super().save(*args, **kwargs)\n\n    @property\n    def user_info(self):\n        return format_html(\n            \"<span>{} <br/> {} <br/> {} <br/> {} <br/> {}</span>\",\n            self.user.get_full_name(),\n            self.user.user_profile.institution,\n            self.user.user_profile.department,\n            self.user.user_profile.country,\n            self.user.user_profile.website,\n        )\n\n\ndef create_verification(email_address, *_, **__):\n    if (\n        email_is_trusted(email=email_address.email)\n        and not Verification.objects.filter(user=email_address.user).exists()\n    ):\n        Verification.objects.create(\n            user=email_address.user, email=email_address.email\n        )\n\n\nemail_confirmed.connect(create_verification)\n", "path": "app/grandchallenge/verifications/models.py"}]}