diff --git a/physionet-django/console/forms.py b/physionet-django/console/forms.py index 758a4b90c..fd9c2b74b 100644 --- a/physionet-django/console/forms.py +++ b/physionet-django/console/forms.py @@ -281,6 +281,9 @@ def __init__(self, *args, **kwargs): def clean(self): if self.errors: return + project = self.instance.project + if not project.check_integrity(): + raise forms.ValidationError(project.integrity_errors) if self.cleaned_data['made_changes'] and not self.cleaned_data['changelog_summary']: raise forms.ValidationError('Describe the changes you made.') if not self.cleaned_data['made_changes'] and self.cleaned_data['changelog_summary']: diff --git a/physionet-django/console/test_views.py b/physionet-django/console/test_views.py index bb54b8199..1485e76d6 100644 --- a/physionet-django/console/test_views.py +++ b/physionet-django/console/test_views.py @@ -213,6 +213,27 @@ def test_copyedit(self): data={'reopen_copyedit':''}) project = ActiveProject.objects.get(id=project.id) self.assertTrue(project.copyeditable()) + + # Erase a required field + project.refresh_from_db() + project.abstract = '' + project.save() + + # "Complete copyedit" should fail because abstract is missing + response = self.client.post( + reverse('copyedit_submission', args=(project.slug,)), data={ + 'complete_copyedit': '', + 'made_changes': 1, + 'changelog_summary': 'Removed abstract', + }) + project.refresh_from_db() + self.assertTrue(project.copyeditable()) + + # Restore abstract + project.refresh_from_db() + project.abstract = '

Database of annotated ECGs

' + project.save() + # Recomplete copyedit response = self.client.post(reverse( 'copyedit_submission', args=(project.slug,)),