We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Admin area, change chant page: "title" field should be hidden
The "title" field is only used for sequences and never for chants, so this field should be hidden from the Chant Change page in the Admin area.

Debra sent us a message asking us what this field was for, so since this is a simple fix, we should hide this field before it causes further confusion.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `django/cantusdb_project/main_app/admin.py`
Content:
```
1 from django.contrib import admin
2 from main_app.models import *
3 from main_app.forms import (
4     AdminCenturyForm,
5     AdminChantForm,
6     AdminFeastForm,
7     AdminGenreForm,
8     AdminNotationForm,
9     AdminOfficeForm,
10     AdminProvenanceForm,
11     AdminRismSiglumForm,
12     AdminSegmentForm,
13     AdminSequenceForm,
14     AdminSourceForm,
15 )
16 
17 # these fields should not be editable by all classes
18 EXCLUDE = (
19     "created_by",
20     "last_updated_by",
21     "json_info",
22 )
23 
24 
25 class BaseModelAdmin(admin.ModelAdmin):
26     exclude = EXCLUDE
27 
28     # if an object is created in the admin interface, assign the user to the created_by field
29     # else if an object is updated in the admin interface, assign the user to the last_updated_by field
30     def save_model(self, request, obj, form, change):
31         if change:
32             obj.last_updated_by = request.user
33         else:
34             obj.created_by = request.user
35         super().save_model(request, obj, form, change)
36 
37 
38 class CenturyAdmin(BaseModelAdmin):
39     search_fields = ("name",)
40     form = AdminCenturyForm
41 
42 
43 class ChantAdmin(BaseModelAdmin):
44     @admin.display(description="Source Siglum")
45     def get_source_siglum(self, obj):
46         if obj.source:
47             return obj.source.siglum
48 
49     list_display = (
50         "incipit",
51         "get_source_siglum",
52         "genre",
53     )
54     search_fields = (
55         "title",
56         "incipit",
57         "cantus_id",
58         "id",
59     )
60 
61     readonly_fields = (
62         "date_created",
63         "date_updated",
64     )
65 
66     list_filter = (
67         "genre",
68         "office",
69     )
70     exclude = EXCLUDE + (
71         "col1",
72         "col2",
73         "col3",
74         "next_chant",
75         "s_sequence",
76         "is_last_chant_in_feast",
77         "visible_status",
78         "date",
79         "volpiano_notes",
80         "volpiano_intervals",
81     )
82     form = AdminChantForm
83     raw_id_fields = (
84         "source",
85         "feast",
86     )
87     ordering = ("source__siglum",)
88 
89 
90 class FeastAdmin(BaseModelAdmin):
91     search_fields = (
92         "name",
93         "feast_code",
94     )
95     list_display = (
96         "name",
97         "month",
98         "day",
99         "feast_code",
100     )
101     form = AdminFeastForm
102 
103 
104 class GenreAdmin(BaseModelAdmin):
105     search_fields = ("name",)
106     form = AdminGenreForm
107 
108 
109 class NotationAdmin(BaseModelAdmin):
110     search_fields = ("name",)
111     form = AdminNotationForm
112 
113 
114 class OfficeAdmin(BaseModelAdmin):
115     search_fields = ("name",)
116     form = AdminOfficeForm
117 
118 
119 class ProvenanceAdmin(BaseModelAdmin):
120     search_fields = ("name",)
121     form = AdminProvenanceForm
122 
123 
124 class RismSiglumAdmin(BaseModelAdmin):
125     search_fields = ("name",)
126     form = AdminRismSiglumForm
127 
128 
129 class SegmentAdmin(BaseModelAdmin):
130     search_fields = ("name",)
131     form = AdminSegmentForm
132 
133 
134 class SequenceAdmin(BaseModelAdmin):
135     @admin.display(description="Source Siglum")
136     def get_source_siglum(self, obj):
137         if obj.source:
138             return obj.source.siglum
139 
140     search_fields = (
141         "title",
142         "incipit",
143         "cantus_id",
144         "id",
145     )
146     exclude = EXCLUDE + (
147         "c_sequence",
148         "next_chant",
149         "is_last_chant_in_feast",
150         "visible_status",
151     )
152     list_display = ("incipit", "get_source_siglum", "genre")
153     list_filter = (
154         "genre",
155         "office",
156     )
157     raw_id_fields = (
158         "source",
159         "feast",
160     )
161     ordering = ("source__siglum",)
162     form = AdminSequenceForm
163 
164 
165 class SourceAdmin(BaseModelAdmin):
166     # These search fields are also available on the user-source inline relationship in the user admin page
167     search_fields = (
168         "siglum",
169         "title",
170         "id",
171     )
172     readonly_fields = (
173         "number_of_chants",
174         "number_of_melodies",
175         "date_created",
176         "date_updated",
177     )
178     # from the Django docs:
179     # Adding a ManyToManyField to this list will instead use a nifty unobtrusive JavaScript “filter” interface
180     # that allows searching within the options. The unselected and selected options appear in two boxes side by side.
181     filter_horizontal = (
182         "century",
183         "notation",
184         "current_editors",
185         "inventoried_by",
186         "full_text_entered_by",
187         "melodies_entered_by",
188         "proofreaders",
189         "other_editors",
190     )
191 
192     list_display = (
193         "title",
194         "siglum",
195         "id",
196     )
197 
198     list_filter = (
199         "full_source",
200         "segment",
201         "source_status",
202         "published",
203         "century",
204     )
205 
206     ordering = ("siglum",)
207 
208     form = AdminSourceForm
209 
210 
211 admin.site.register(Century, CenturyAdmin)
212 admin.site.register(Chant, ChantAdmin)
213 admin.site.register(Feast, FeastAdmin)
214 admin.site.register(Genre, GenreAdmin)
215 admin.site.register(Notation, NotationAdmin)
216 admin.site.register(Office, OfficeAdmin)
217 admin.site.register(Provenance, ProvenanceAdmin)
218 admin.site.register(RismSiglum, RismSiglumAdmin)
219 admin.site.register(Segment, SegmentAdmin)
220 admin.site.register(Sequence, SequenceAdmin)
221 admin.site.register(Source, SourceAdmin)
222
```
--- 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/django/cantusdb_project/main_app/admin.py b/django/cantusdb_project/main_app/admin.py
--- a/django/cantusdb_project/main_app/admin.py
+++ b/django/cantusdb_project/main_app/admin.py
@@ -78,6 +78,7 @@
         "date",
         "volpiano_notes",
         "volpiano_intervals",
+        "title",
     )
     form = AdminChantForm
     raw_id_fields = (

{"golden_diff": "diff --git a/django/cantusdb_project/main_app/admin.py b/django/cantusdb_project/main_app/admin.py\n--- a/django/cantusdb_project/main_app/admin.py\n+++ b/django/cantusdb_project/main_app/admin.py\n@@ -78,6 +78,7 @@\n         \"date\",\n         \"volpiano_notes\",\n         \"volpiano_intervals\",\n+        \"title\",\n     )\n     form = AdminChantForm\n     raw_id_fields = (\n", "issue": "Admin area, change chant page: \"title\" field should be hidden\nThe \"title\" field is only used for sequences and never for chants, so this field should be hidden from the Chant Change page in the Admin area.\r\n\r\nDebra sent us a message asking us what this field was for, so since this is a simple fix, we should hide this field before it causes further confusion.\n", "before_files": [{"content": "from django.contrib import admin\nfrom main_app.models import *\nfrom main_app.forms import (\n    AdminCenturyForm,\n    AdminChantForm,\n    AdminFeastForm,\n    AdminGenreForm,\n    AdminNotationForm,\n    AdminOfficeForm,\n    AdminProvenanceForm,\n    AdminRismSiglumForm,\n    AdminSegmentForm,\n    AdminSequenceForm,\n    AdminSourceForm,\n)\n\n# these fields should not be editable by all classes\nEXCLUDE = (\n    \"created_by\",\n    \"last_updated_by\",\n    \"json_info\",\n)\n\n\nclass BaseModelAdmin(admin.ModelAdmin):\n    exclude = EXCLUDE\n\n    # if an object is created in the admin interface, assign the user to the created_by field\n    # else if an object is updated in the admin interface, assign the user to the last_updated_by field\n    def save_model(self, request, obj, form, change):\n        if change:\n            obj.last_updated_by = request.user\n        else:\n            obj.created_by = request.user\n        super().save_model(request, obj, form, change)\n\n\nclass CenturyAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminCenturyForm\n\n\nclass ChantAdmin(BaseModelAdmin):\n    @admin.display(description=\"Source Siglum\")\n    def get_source_siglum(self, obj):\n        if obj.source:\n            return obj.source.siglum\n\n    list_display = (\n        \"incipit\",\n        \"get_source_siglum\",\n        \"genre\",\n    )\n    search_fields = (\n        \"title\",\n        \"incipit\",\n        \"cantus_id\",\n        \"id\",\n    )\n\n    readonly_fields = (\n        \"date_created\",\n        \"date_updated\",\n    )\n\n    list_filter = (\n        \"genre\",\n        \"office\",\n    )\n    exclude = EXCLUDE + (\n        \"col1\",\n        \"col2\",\n        \"col3\",\n        \"next_chant\",\n        \"s_sequence\",\n        \"is_last_chant_in_feast\",\n        \"visible_status\",\n        \"date\",\n        \"volpiano_notes\",\n        \"volpiano_intervals\",\n    )\n    form = AdminChantForm\n    raw_id_fields = (\n        \"source\",\n        \"feast\",\n    )\n    ordering = (\"source__siglum\",)\n\n\nclass FeastAdmin(BaseModelAdmin):\n    search_fields = (\n        \"name\",\n        \"feast_code\",\n    )\n    list_display = (\n        \"name\",\n        \"month\",\n        \"day\",\n        \"feast_code\",\n    )\n    form = AdminFeastForm\n\n\nclass GenreAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminGenreForm\n\n\nclass NotationAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminNotationForm\n\n\nclass OfficeAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminOfficeForm\n\n\nclass ProvenanceAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminProvenanceForm\n\n\nclass RismSiglumAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminRismSiglumForm\n\n\nclass SegmentAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminSegmentForm\n\n\nclass SequenceAdmin(BaseModelAdmin):\n    @admin.display(description=\"Source Siglum\")\n    def get_source_siglum(self, obj):\n        if obj.source:\n            return obj.source.siglum\n\n    search_fields = (\n        \"title\",\n        \"incipit\",\n        \"cantus_id\",\n        \"id\",\n    )\n    exclude = EXCLUDE + (\n        \"c_sequence\",\n        \"next_chant\",\n        \"is_last_chant_in_feast\",\n        \"visible_status\",\n    )\n    list_display = (\"incipit\", \"get_source_siglum\", \"genre\")\n    list_filter = (\n        \"genre\",\n        \"office\",\n    )\n    raw_id_fields = (\n        \"source\",\n        \"feast\",\n    )\n    ordering = (\"source__siglum\",)\n    form = AdminSequenceForm\n\n\nclass SourceAdmin(BaseModelAdmin):\n    # These search fields are also available on the user-source inline relationship in the user admin page\n    search_fields = (\n        \"siglum\",\n        \"title\",\n        \"id\",\n    )\n    readonly_fields = (\n        \"number_of_chants\",\n        \"number_of_melodies\",\n        \"date_created\",\n        \"date_updated\",\n    )\n    # from the Django docs:\n    # Adding a ManyToManyField to this list will instead use a nifty unobtrusive JavaScript \u201cfilter\u201d interface\n    # that allows searching within the options. The unselected and selected options appear in two boxes side by side.\n    filter_horizontal = (\n        \"century\",\n        \"notation\",\n        \"current_editors\",\n        \"inventoried_by\",\n        \"full_text_entered_by\",\n        \"melodies_entered_by\",\n        \"proofreaders\",\n        \"other_editors\",\n    )\n\n    list_display = (\n        \"title\",\n        \"siglum\",\n        \"id\",\n    )\n\n    list_filter = (\n        \"full_source\",\n        \"segment\",\n        \"source_status\",\n        \"published\",\n        \"century\",\n    )\n\n    ordering = (\"siglum\",)\n\n    form = AdminSourceForm\n\n\nadmin.site.register(Century, CenturyAdmin)\nadmin.site.register(Chant, ChantAdmin)\nadmin.site.register(Feast, FeastAdmin)\nadmin.site.register(Genre, GenreAdmin)\nadmin.site.register(Notation, NotationAdmin)\nadmin.site.register(Office, OfficeAdmin)\nadmin.site.register(Provenance, ProvenanceAdmin)\nadmin.site.register(RismSiglum, RismSiglumAdmin)\nadmin.site.register(Segment, SegmentAdmin)\nadmin.site.register(Sequence, SequenceAdmin)\nadmin.site.register(Source, SourceAdmin)\n", "path": "django/cantusdb_project/main_app/admin.py"}], "after_files": [{"content": "from django.contrib import admin\nfrom main_app.models import *\nfrom main_app.forms import (\n    AdminCenturyForm,\n    AdminChantForm,\n    AdminFeastForm,\n    AdminGenreForm,\n    AdminNotationForm,\n    AdminOfficeForm,\n    AdminProvenanceForm,\n    AdminRismSiglumForm,\n    AdminSegmentForm,\n    AdminSequenceForm,\n    AdminSourceForm,\n)\n\n# these fields should not be editable by all classes\nEXCLUDE = (\n    \"created_by\",\n    \"last_updated_by\",\n    \"json_info\",\n)\n\n\nclass BaseModelAdmin(admin.ModelAdmin):\n    exclude = EXCLUDE\n\n    # if an object is created in the admin interface, assign the user to the created_by field\n    # else if an object is updated in the admin interface, assign the user to the last_updated_by field\n    def save_model(self, request, obj, form, change):\n        if change:\n            obj.last_updated_by = request.user\n        else:\n            obj.created_by = request.user\n        super().save_model(request, obj, form, change)\n\n\nclass CenturyAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminCenturyForm\n\n\nclass ChantAdmin(BaseModelAdmin):\n    @admin.display(description=\"Source Siglum\")\n    def get_source_siglum(self, obj):\n        if obj.source:\n            return obj.source.siglum\n\n    list_display = (\n        \"incipit\",\n        \"get_source_siglum\",\n        \"genre\",\n    )\n    search_fields = (\n        \"title\",\n        \"incipit\",\n        \"cantus_id\",\n        \"id\",\n    )\n\n    readonly_fields = (\n        \"date_created\",\n        \"date_updated\",\n    )\n\n    list_filter = (\n        \"genre\",\n        \"office\",\n    )\n    exclude = EXCLUDE + (\n        \"col1\",\n        \"col2\",\n        \"col3\",\n        \"next_chant\",\n        \"s_sequence\",\n        \"is_last_chant_in_feast\",\n        \"visible_status\",\n        \"date\",\n        \"volpiano_notes\",\n        \"volpiano_intervals\",\n        \"title\",\n    )\n    form = AdminChantForm\n    raw_id_fields = (\n        \"source\",\n        \"feast\",\n    )\n    ordering = (\"source__siglum\",)\n\n\nclass FeastAdmin(BaseModelAdmin):\n    search_fields = (\n        \"name\",\n        \"feast_code\",\n    )\n    list_display = (\n        \"name\",\n        \"month\",\n        \"day\",\n        \"feast_code\",\n    )\n    form = AdminFeastForm\n\n\nclass GenreAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminGenreForm\n\n\nclass NotationAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminNotationForm\n\n\nclass OfficeAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminOfficeForm\n\n\nclass ProvenanceAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminProvenanceForm\n\n\nclass RismSiglumAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminRismSiglumForm\n\n\nclass SegmentAdmin(BaseModelAdmin):\n    search_fields = (\"name\",)\n    form = AdminSegmentForm\n\n\nclass SequenceAdmin(BaseModelAdmin):\n    @admin.display(description=\"Source Siglum\")\n    def get_source_siglum(self, obj):\n        if obj.source:\n            return obj.source.siglum\n\n    search_fields = (\n        \"title\",\n        \"incipit\",\n        \"cantus_id\",\n        \"id\",\n    )\n    exclude = EXCLUDE + (\n        \"c_sequence\",\n        \"next_chant\",\n        \"is_last_chant_in_feast\",\n        \"visible_status\",\n    )\n    list_display = (\"incipit\", \"get_source_siglum\", \"genre\")\n    list_filter = (\n        \"genre\",\n        \"office\",\n    )\n    raw_id_fields = (\n        \"source\",\n        \"feast\",\n    )\n    ordering = (\"source__siglum\",)\n    form = AdminSequenceForm\n\n\nclass SourceAdmin(BaseModelAdmin):\n    # These search fields are also available on the user-source inline relationship in the user admin page\n    search_fields = (\n        \"siglum\",\n        \"title\",\n        \"id\",\n    )\n    readonly_fields = (\n        \"number_of_chants\",\n        \"number_of_melodies\",\n        \"date_created\",\n        \"date_updated\",\n    )\n    # from the Django docs:\n    # Adding a ManyToManyField to this list will instead use a nifty unobtrusive JavaScript \u201cfilter\u201d interface\n    # that allows searching within the options. The unselected and selected options appear in two boxes side by side.\n    filter_horizontal = (\n        \"century\",\n        \"notation\",\n        \"current_editors\",\n        \"inventoried_by\",\n        \"full_text_entered_by\",\n        \"melodies_entered_by\",\n        \"proofreaders\",\n        \"other_editors\",\n    )\n\n    list_display = (\n        \"title\",\n        \"siglum\",\n        \"id\",\n    )\n\n    list_filter = (\n        \"full_source\",\n        \"segment\",\n        \"source_status\",\n        \"published\",\n        \"century\",\n    )\n\n    ordering = (\"siglum\",)\n\n    form = AdminSourceForm\n\n\nadmin.site.register(Century, CenturyAdmin)\nadmin.site.register(Chant, ChantAdmin)\nadmin.site.register(Feast, FeastAdmin)\nadmin.site.register(Genre, GenreAdmin)\nadmin.site.register(Notation, NotationAdmin)\nadmin.site.register(Office, OfficeAdmin)\nadmin.site.register(Provenance, ProvenanceAdmin)\nadmin.site.register(RismSiglum, RismSiglumAdmin)\nadmin.site.register(Segment, SegmentAdmin)\nadmin.site.register(Sequence, SequenceAdmin)\nadmin.site.register(Source, SourceAdmin)\n", "path": "django/cantusdb_project/main_app/admin.py"}]}