We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
No response when uploading a new algorithm using the wrong file format
# Recipe

1. Go to https://grand-challenge.org/algorithms/create/
2. Upload, for example, a `.tar.gz` file

# Result

Upload completes, nothing happens.

--- 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/algorithms/forms.py`
Content:
```
1 from crispy_forms.helper import FormHelper
2 from crispy_forms.layout import Submit
3 from django import forms
4 
5 from grandchallenge.algorithms.models import Algorithm, Job
6 from grandchallenge.core.validators import (
7     ExtensionValidator,
8     MimeTypeValidator,
9 )
10 from grandchallenge.jqfileupload.widgets import uploader
11 from grandchallenge.jqfileupload.widgets.uploader import UploadedAjaxFileList
12 
13 algorithm_upload_widget = uploader.AjaxUploadWidget(
14     ajax_target_path="ajax/algorithm-upload/", multifile=False
15 )
16 
17 
18 class AlgorithmForm(forms.ModelForm):
19     ipython_notebook = forms.FileField(
20         validators=[MimeTypeValidator(allowed_types=("text/plain",))],
21         required=False,
22         help_text=(
23             "Please upload an iPython notebook that describes your algorithm"
24         ),
25     )
26     chunked_upload = UploadedAjaxFileList(
27         widget=algorithm_upload_widget,
28         label="Algorithm Image",
29         validators=[ExtensionValidator(allowed_extensions=(".tar",))],
30         help_text=(
31             "Tar archive of the container image produced from the command "
32             "`docker save IMAGE > IMAGE.tar`. See "
33             "https://docs.docker.com/engine/reference/commandline/save/"
34         ),
35     )
36 
37     def __init__(self, *args, **kwargs):
38         super().__init__(*args, **kwargs)
39         self.helper = FormHelper(self)
40 
41     class Meta:
42         model = Algorithm
43         fields = (
44             "title",
45             "requires_gpu",
46             "ipython_notebook",
47             "chunked_upload",
48         )
49
```

Path: `app/grandchallenge/evaluation/forms.py`
Content:
```
1 from crispy_forms.bootstrap import TabHolder, Tab
2 from crispy_forms.helper import FormHelper
3 from crispy_forms.layout import Submit, Layout, ButtonHolder
4 from django import forms
5 from django_summernote.widgets import SummernoteInplaceWidget
6 
7 from grandchallenge.core.validators import ExtensionValidator
8 from grandchallenge.core.widgets import JSONEditorWidget
9 from grandchallenge.evaluation.models import (
10     Method,
11     Submission,
12     Config,
13     EXTRA_RESULT_COLUMNS_SCHEMA,
14 )
15 from grandchallenge.jqfileupload.widgets import uploader
16 from grandchallenge.jqfileupload.widgets.uploader import UploadedAjaxFileList
17 
18 submission_options = (
19     "submission_page_html",
20     "daily_submission_limit",
21     "allow_submission_comments",
22     "supplementary_file_choice",
23     "supplementary_file_label",
24     "supplementary_file_help_text",
25     "publication_url_choice",
26 )
27 
28 scoring_options = (
29     "score_title",
30     "score_jsonpath",
31     "score_error_jsonpath",
32     "score_default_sort",
33     "score_decimal_places",
34     "extra_results_columns",
35     "scoring_method_choice",
36     "auto_publish_new_results",
37     "result_display_choice",
38 )
39 
40 leaderboard_options = (
41     "use_teams",
42     "display_submission_comments",
43     "show_supplementary_file_link",
44     "show_publication_url",
45 )
46 
47 result_detail_options = ("submission_join_key",)
48 
49 
50 class ConfigForm(forms.ModelForm):
51     def __init__(self, *args, **kwargs):
52         super().__init__(*args, **kwargs)
53         self.helper = FormHelper(self)
54         self.helper.layout = Layout(
55             TabHolder(
56                 Tab("Submission", *submission_options),
57                 Tab("Scoring", *scoring_options),
58                 Tab("Leaderboard", *leaderboard_options),
59                 Tab("Result Detail", *result_detail_options),
60             ),
61             ButtonHolder(Submit("save", "Save")),
62         )
63 
64     class Meta:
65         model = Config
66         fields = (
67             *submission_options,
68             *scoring_options,
69             *leaderboard_options,
70             *result_detail_options,
71         )
72         widgets = {
73             "submission_page_html": SummernoteInplaceWidget(),
74             "extra_results_columns": JSONEditorWidget(
75                 schema=EXTRA_RESULT_COLUMNS_SCHEMA
76             ),
77         }
78 
79 
80 method_upload_widget = uploader.AjaxUploadWidget(
81     ajax_target_path="ajax/method-upload/", multifile=False
82 )
83 
84 
85 class MethodForm(forms.ModelForm):
86     chunked_upload = UploadedAjaxFileList(
87         widget=method_upload_widget,
88         label="Evaluation Method Container",
89         validators=[ExtensionValidator(allowed_extensions=(".tar",))],
90         help_text=(
91             "Tar archive of the container image produced from the command "
92             "`docker save IMAGE > IMAGE.tar`. See "
93             "https://docs.docker.com/engine/reference/commandline/save/"
94         ),
95     )
96 
97     def __init__(self, *args, **kwargs):
98         super().__init__(*args, **kwargs)
99         self.helper = FormHelper(self)
100 
101     class Meta:
102         model = Method
103         fields = ["chunked_upload"]
104 
105 
106 submission_upload_widget = uploader.AjaxUploadWidget(
107     ajax_target_path="ajax/submission-upload/", multifile=False
108 )
109 
110 submission_fields = (
111     "comment",
112     "supplementary_file",
113     "publication_url",
114     "chunked_upload",
115 )
116 
117 
118 class SubmissionForm(forms.ModelForm):
119     chunked_upload = UploadedAjaxFileList(
120         widget=submission_upload_widget,
121         label="Predictions File",
122         validators=[ExtensionValidator(allowed_extensions=(".zip", ".csv"))],
123     )
124 
125     def __init__(
126         self,
127         *args,
128         display_comment_field=False,
129         supplementary_file_choice=Config.OFF,
130         supplementary_file_label="",
131         supplementary_file_help_text="",
132         publication_url_choice=Config.OFF,
133         **kwargs,
134     ):
135         """
136         Conditionally render the comment field based on the
137         display_comment_field kwarg
138         """
139         super().__init__(*args, **kwargs)
140 
141         if not display_comment_field:
142             del self.fields["comment"]
143 
144         if supplementary_file_label:
145             self.fields["supplementary_file"].label = supplementary_file_label
146 
147         if supplementary_file_help_text:
148             self.fields[
149                 "supplementary_file"
150             ].help_text = supplementary_file_help_text
151 
152         if supplementary_file_choice == Config.REQUIRED:
153             self.fields["supplementary_file"].required = True
154         elif supplementary_file_choice == Config.OFF:
155             del self.fields["supplementary_file"]
156 
157         if publication_url_choice == Config.REQUIRED:
158             self.fields["publication_url"].required = True
159         elif publication_url_choice == Config.OFF:
160             del self.fields["publication_url"]
161 
162         self.helper = FormHelper(self)
163 
164     class Meta:
165         model = Submission
166         fields = submission_fields
167 
168 
169 class LegacySubmissionForm(SubmissionForm):
170     class Meta:
171         model = Submission
172         fields = ("creator", *submission_fields)
173
```
--- 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/algorithms/forms.py b/app/grandchallenge/algorithms/forms.py
--- a/app/grandchallenge/algorithms/forms.py
+++ b/app/grandchallenge/algorithms/forms.py
@@ -29,7 +29,7 @@
         validators=[ExtensionValidator(allowed_extensions=(".tar",))],
         help_text=(
             "Tar archive of the container image produced from the command "
-            "`docker save IMAGE > IMAGE.tar`. See "
+            "'docker save IMAGE > IMAGE.tar'. See "
             "https://docs.docker.com/engine/reference/commandline/save/"
         ),
     )
diff --git a/app/grandchallenge/evaluation/forms.py b/app/grandchallenge/evaluation/forms.py
--- a/app/grandchallenge/evaluation/forms.py
+++ b/app/grandchallenge/evaluation/forms.py
@@ -89,7 +89,7 @@
         validators=[ExtensionValidator(allowed_extensions=(".tar",))],
         help_text=(
             "Tar archive of the container image produced from the command "
-            "`docker save IMAGE > IMAGE.tar`. See "
+            "'docker save IMAGE > IMAGE.tar'. See "
             "https://docs.docker.com/engine/reference/commandline/save/"
         ),
     )

{"golden_diff": "diff --git a/app/grandchallenge/algorithms/forms.py b/app/grandchallenge/algorithms/forms.py\n--- a/app/grandchallenge/algorithms/forms.py\n+++ b/app/grandchallenge/algorithms/forms.py\n@@ -29,7 +29,7 @@\n         validators=[ExtensionValidator(allowed_extensions=(\".tar\",))],\n         help_text=(\n             \"Tar archive of the container image produced from the command \"\n-            \"`docker save IMAGE > IMAGE.tar`. See \"\n+            \"'docker save IMAGE > IMAGE.tar'. See \"\n             \"https://docs.docker.com/engine/reference/commandline/save/\"\n         ),\n     )\ndiff --git a/app/grandchallenge/evaluation/forms.py b/app/grandchallenge/evaluation/forms.py\n--- a/app/grandchallenge/evaluation/forms.py\n+++ b/app/grandchallenge/evaluation/forms.py\n@@ -89,7 +89,7 @@\n         validators=[ExtensionValidator(allowed_extensions=(\".tar\",))],\n         help_text=(\n             \"Tar archive of the container image produced from the command \"\n-            \"`docker save IMAGE > IMAGE.tar`. See \"\n+            \"'docker save IMAGE > IMAGE.tar'. See \"\n             \"https://docs.docker.com/engine/reference/commandline/save/\"\n         ),\n     )\n", "issue": "No response when uploading a new algorithm using the wrong file format\n# Recipe\r\n\r\n1. Go to https://grand-challenge.org/algorithms/create/\r\n2. Upload, for example, a `.tar.gz` file\r\n\r\n# Result\r\n\r\nUpload completes, nothing happens.\n", "before_files": [{"content": "from crispy_forms.helper import FormHelper\nfrom crispy_forms.layout import Submit\nfrom django import forms\n\nfrom grandchallenge.algorithms.models import Algorithm, Job\nfrom grandchallenge.core.validators import (\n    ExtensionValidator,\n    MimeTypeValidator,\n)\nfrom grandchallenge.jqfileupload.widgets import uploader\nfrom grandchallenge.jqfileupload.widgets.uploader import UploadedAjaxFileList\n\nalgorithm_upload_widget = uploader.AjaxUploadWidget(\n    ajax_target_path=\"ajax/algorithm-upload/\", multifile=False\n)\n\n\nclass AlgorithmForm(forms.ModelForm):\n    ipython_notebook = forms.FileField(\n        validators=[MimeTypeValidator(allowed_types=(\"text/plain\",))],\n        required=False,\n        help_text=(\n            \"Please upload an iPython notebook that describes your algorithm\"\n        ),\n    )\n    chunked_upload = UploadedAjaxFileList(\n        widget=algorithm_upload_widget,\n        label=\"Algorithm Image\",\n        validators=[ExtensionValidator(allowed_extensions=(\".tar\",))],\n        help_text=(\n            \"Tar archive of the container image produced from the command \"\n            \"`docker save IMAGE > IMAGE.tar`. See \"\n            \"https://docs.docker.com/engine/reference/commandline/save/\"\n        ),\n    )\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.helper = FormHelper(self)\n\n    class Meta:\n        model = Algorithm\n        fields = (\n            \"title\",\n            \"requires_gpu\",\n            \"ipython_notebook\",\n            \"chunked_upload\",\n        )\n", "path": "app/grandchallenge/algorithms/forms.py"}, {"content": "from crispy_forms.bootstrap import TabHolder, Tab\nfrom crispy_forms.helper import FormHelper\nfrom crispy_forms.layout import Submit, Layout, ButtonHolder\nfrom django import forms\nfrom django_summernote.widgets import SummernoteInplaceWidget\n\nfrom grandchallenge.core.validators import ExtensionValidator\nfrom grandchallenge.core.widgets import JSONEditorWidget\nfrom grandchallenge.evaluation.models import (\n    Method,\n    Submission,\n    Config,\n    EXTRA_RESULT_COLUMNS_SCHEMA,\n)\nfrom grandchallenge.jqfileupload.widgets import uploader\nfrom grandchallenge.jqfileupload.widgets.uploader import UploadedAjaxFileList\n\nsubmission_options = (\n    \"submission_page_html\",\n    \"daily_submission_limit\",\n    \"allow_submission_comments\",\n    \"supplementary_file_choice\",\n    \"supplementary_file_label\",\n    \"supplementary_file_help_text\",\n    \"publication_url_choice\",\n)\n\nscoring_options = (\n    \"score_title\",\n    \"score_jsonpath\",\n    \"score_error_jsonpath\",\n    \"score_default_sort\",\n    \"score_decimal_places\",\n    \"extra_results_columns\",\n    \"scoring_method_choice\",\n    \"auto_publish_new_results\",\n    \"result_display_choice\",\n)\n\nleaderboard_options = (\n    \"use_teams\",\n    \"display_submission_comments\",\n    \"show_supplementary_file_link\",\n    \"show_publication_url\",\n)\n\nresult_detail_options = (\"submission_join_key\",)\n\n\nclass ConfigForm(forms.ModelForm):\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.helper = FormHelper(self)\n        self.helper.layout = Layout(\n            TabHolder(\n                Tab(\"Submission\", *submission_options),\n                Tab(\"Scoring\", *scoring_options),\n                Tab(\"Leaderboard\", *leaderboard_options),\n                Tab(\"Result Detail\", *result_detail_options),\n            ),\n            ButtonHolder(Submit(\"save\", \"Save\")),\n        )\n\n    class Meta:\n        model = Config\n        fields = (\n            *submission_options,\n            *scoring_options,\n            *leaderboard_options,\n            *result_detail_options,\n        )\n        widgets = {\n            \"submission_page_html\": SummernoteInplaceWidget(),\n            \"extra_results_columns\": JSONEditorWidget(\n                schema=EXTRA_RESULT_COLUMNS_SCHEMA\n            ),\n        }\n\n\nmethod_upload_widget = uploader.AjaxUploadWidget(\n    ajax_target_path=\"ajax/method-upload/\", multifile=False\n)\n\n\nclass MethodForm(forms.ModelForm):\n    chunked_upload = UploadedAjaxFileList(\n        widget=method_upload_widget,\n        label=\"Evaluation Method Container\",\n        validators=[ExtensionValidator(allowed_extensions=(\".tar\",))],\n        help_text=(\n            \"Tar archive of the container image produced from the command \"\n            \"`docker save IMAGE > IMAGE.tar`. See \"\n            \"https://docs.docker.com/engine/reference/commandline/save/\"\n        ),\n    )\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.helper = FormHelper(self)\n\n    class Meta:\n        model = Method\n        fields = [\"chunked_upload\"]\n\n\nsubmission_upload_widget = uploader.AjaxUploadWidget(\n    ajax_target_path=\"ajax/submission-upload/\", multifile=False\n)\n\nsubmission_fields = (\n    \"comment\",\n    \"supplementary_file\",\n    \"publication_url\",\n    \"chunked_upload\",\n)\n\n\nclass SubmissionForm(forms.ModelForm):\n    chunked_upload = UploadedAjaxFileList(\n        widget=submission_upload_widget,\n        label=\"Predictions File\",\n        validators=[ExtensionValidator(allowed_extensions=(\".zip\", \".csv\"))],\n    )\n\n    def __init__(\n        self,\n        *args,\n        display_comment_field=False,\n        supplementary_file_choice=Config.OFF,\n        supplementary_file_label=\"\",\n        supplementary_file_help_text=\"\",\n        publication_url_choice=Config.OFF,\n        **kwargs,\n    ):\n        \"\"\"\n        Conditionally render the comment field based on the\n        display_comment_field kwarg\n        \"\"\"\n        super().__init__(*args, **kwargs)\n\n        if not display_comment_field:\n            del self.fields[\"comment\"]\n\n        if supplementary_file_label:\n            self.fields[\"supplementary_file\"].label = supplementary_file_label\n\n        if supplementary_file_help_text:\n            self.fields[\n                \"supplementary_file\"\n            ].help_text = supplementary_file_help_text\n\n        if supplementary_file_choice == Config.REQUIRED:\n            self.fields[\"supplementary_file\"].required = True\n        elif supplementary_file_choice == Config.OFF:\n            del self.fields[\"supplementary_file\"]\n\n        if publication_url_choice == Config.REQUIRED:\n            self.fields[\"publication_url\"].required = True\n        elif publication_url_choice == Config.OFF:\n            del self.fields[\"publication_url\"]\n\n        self.helper = FormHelper(self)\n\n    class Meta:\n        model = Submission\n        fields = submission_fields\n\n\nclass LegacySubmissionForm(SubmissionForm):\n    class Meta:\n        model = Submission\n        fields = (\"creator\", *submission_fields)\n", "path": "app/grandchallenge/evaluation/forms.py"}], "after_files": [{"content": "from crispy_forms.helper import FormHelper\nfrom crispy_forms.layout import Submit\nfrom django import forms\n\nfrom grandchallenge.algorithms.models import Algorithm, Job\nfrom grandchallenge.core.validators import (\n    ExtensionValidator,\n    MimeTypeValidator,\n)\nfrom grandchallenge.jqfileupload.widgets import uploader\nfrom grandchallenge.jqfileupload.widgets.uploader import UploadedAjaxFileList\n\nalgorithm_upload_widget = uploader.AjaxUploadWidget(\n    ajax_target_path=\"ajax/algorithm-upload/\", multifile=False\n)\n\n\nclass AlgorithmForm(forms.ModelForm):\n    ipython_notebook = forms.FileField(\n        validators=[MimeTypeValidator(allowed_types=(\"text/plain\",))],\n        required=False,\n        help_text=(\n            \"Please upload an iPython notebook that describes your algorithm\"\n        ),\n    )\n    chunked_upload = UploadedAjaxFileList(\n        widget=algorithm_upload_widget,\n        label=\"Algorithm Image\",\n        validators=[ExtensionValidator(allowed_extensions=(\".tar\",))],\n        help_text=(\n            \"Tar archive of the container image produced from the command \"\n            \"'docker save IMAGE > IMAGE.tar'. See \"\n            \"https://docs.docker.com/engine/reference/commandline/save/\"\n        ),\n    )\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.helper = FormHelper(self)\n\n    class Meta:\n        model = Algorithm\n        fields = (\n            \"title\",\n            \"requires_gpu\",\n            \"ipython_notebook\",\n            \"chunked_upload\",\n        )\n", "path": "app/grandchallenge/algorithms/forms.py"}, {"content": "from crispy_forms.bootstrap import TabHolder, Tab\nfrom crispy_forms.helper import FormHelper\nfrom crispy_forms.layout import Submit, Layout, ButtonHolder\nfrom django import forms\nfrom django_summernote.widgets import SummernoteInplaceWidget\n\nfrom grandchallenge.core.validators import ExtensionValidator\nfrom grandchallenge.core.widgets import JSONEditorWidget\nfrom grandchallenge.evaluation.models import (\n    Method,\n    Submission,\n    Config,\n    EXTRA_RESULT_COLUMNS_SCHEMA,\n)\nfrom grandchallenge.jqfileupload.widgets import uploader\nfrom grandchallenge.jqfileupload.widgets.uploader import UploadedAjaxFileList\n\nsubmission_options = (\n    \"submission_page_html\",\n    \"daily_submission_limit\",\n    \"allow_submission_comments\",\n    \"supplementary_file_choice\",\n    \"supplementary_file_label\",\n    \"supplementary_file_help_text\",\n    \"publication_url_choice\",\n)\n\nscoring_options = (\n    \"score_title\",\n    \"score_jsonpath\",\n    \"score_error_jsonpath\",\n    \"score_default_sort\",\n    \"score_decimal_places\",\n    \"extra_results_columns\",\n    \"scoring_method_choice\",\n    \"auto_publish_new_results\",\n    \"result_display_choice\",\n)\n\nleaderboard_options = (\n    \"use_teams\",\n    \"display_submission_comments\",\n    \"show_supplementary_file_link\",\n    \"show_publication_url\",\n)\n\nresult_detail_options = (\"submission_join_key\",)\n\n\nclass ConfigForm(forms.ModelForm):\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.helper = FormHelper(self)\n        self.helper.layout = Layout(\n            TabHolder(\n                Tab(\"Submission\", *submission_options),\n                Tab(\"Scoring\", *scoring_options),\n                Tab(\"Leaderboard\", *leaderboard_options),\n                Tab(\"Result Detail\", *result_detail_options),\n            ),\n            ButtonHolder(Submit(\"save\", \"Save\")),\n        )\n\n    class Meta:\n        model = Config\n        fields = (\n            *submission_options,\n            *scoring_options,\n            *leaderboard_options,\n            *result_detail_options,\n        )\n        widgets = {\n            \"submission_page_html\": SummernoteInplaceWidget(),\n            \"extra_results_columns\": JSONEditorWidget(\n                schema=EXTRA_RESULT_COLUMNS_SCHEMA\n            ),\n        }\n\n\nmethod_upload_widget = uploader.AjaxUploadWidget(\n    ajax_target_path=\"ajax/method-upload/\", multifile=False\n)\n\n\nclass MethodForm(forms.ModelForm):\n    chunked_upload = UploadedAjaxFileList(\n        widget=method_upload_widget,\n        label=\"Evaluation Method Container\",\n        validators=[ExtensionValidator(allowed_extensions=(\".tar\",))],\n        help_text=(\n            \"Tar archive of the container image produced from the command \"\n            \"'docker save IMAGE > IMAGE.tar'. See \"\n            \"https://docs.docker.com/engine/reference/commandline/save/\"\n        ),\n    )\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.helper = FormHelper(self)\n\n    class Meta:\n        model = Method\n        fields = [\"chunked_upload\"]\n\n\nsubmission_upload_widget = uploader.AjaxUploadWidget(\n    ajax_target_path=\"ajax/submission-upload/\", multifile=False\n)\n\nsubmission_fields = (\n    \"comment\",\n    \"supplementary_file\",\n    \"publication_url\",\n    \"chunked_upload\",\n)\n\n\nclass SubmissionForm(forms.ModelForm):\n    chunked_upload = UploadedAjaxFileList(\n        widget=submission_upload_widget,\n        label=\"Predictions File\",\n        validators=[ExtensionValidator(allowed_extensions=(\".zip\", \".csv\"))],\n    )\n\n    def __init__(\n        self,\n        *args,\n        display_comment_field=False,\n        supplementary_file_choice=Config.OFF,\n        supplementary_file_label=\"\",\n        supplementary_file_help_text=\"\",\n        publication_url_choice=Config.OFF,\n        **kwargs,\n    ):\n        \"\"\"\n        Conditionally render the comment field based on the\n        display_comment_field kwarg\n        \"\"\"\n        super().__init__(*args, **kwargs)\n\n        if not display_comment_field:\n            del self.fields[\"comment\"]\n\n        if supplementary_file_label:\n            self.fields[\"supplementary_file\"].label = supplementary_file_label\n\n        if supplementary_file_help_text:\n            self.fields[\n                \"supplementary_file\"\n            ].help_text = supplementary_file_help_text\n\n        if supplementary_file_choice == Config.REQUIRED:\n            self.fields[\"supplementary_file\"].required = True\n        elif supplementary_file_choice == Config.OFF:\n            del self.fields[\"supplementary_file\"]\n\n        if publication_url_choice == Config.REQUIRED:\n            self.fields[\"publication_url\"].required = True\n        elif publication_url_choice == Config.OFF:\n            del self.fields[\"publication_url\"]\n\n        self.helper = FormHelper(self)\n\n    class Meta:\n        model = Submission\n        fields = submission_fields\n\n\nclass LegacySubmissionForm(SubmissionForm):\n    class Meta:\n        model = Submission\n        fields = (\"creator\", *submission_fields)\n", "path": "app/grandchallenge/evaluation/forms.py"}]}