From 39d5e878c60541a7057c051b2b174a835913a14a Mon Sep 17 00:00:00 2001 From: Tobias Bengfort Date: Wed, 1 Dec 2021 17:03:49 +0100 Subject: [PATCH 1/3] study form: move required fields to top --- .../studies/templates/studies/study_form.html | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/castellum/studies/templates/studies/study_form.html b/castellum/studies/templates/studies/study_form.html index 2529d3b45..fa928214e 100644 --- a/castellum/studies/templates/studies/study_form.html +++ b/castellum/studies/templates/studies/study_form.html @@ -16,24 +16,26 @@ {% csrf_token %} {% bootstrap_field form.name required_css_class='castellum-required' %} - {% bootstrap_field form.contact_person required_css_class='castellum-required' %} {% bootstrap_field form.principal_investigator required_css_class='castellum-required' %} - {% bootstrap_field form.affiliated_scientists required_css_class='castellum-required' %} - {% bootstrap_field form.affiliated_research_assistants required_css_class='castellum-required' %} + {% bootstrap_field form.contact_person required_css_class='castellum-required' %} {% bootstrap_field form.phone required_css_class='castellum-required' %} {% bootstrap_field form.email required_css_class='castellum-required' %} + {% bootstrap_field form.min_subject_count required_css_class='castellum-required' %} + {% bootstrap_field form.description required_css_class='castellum-required' %} {% bootstrap_field form.tags required_css_class='castellum-required' %} + {% bootstrap_field form.affiliated_scientists required_css_class='castellum-required' %} + {% bootstrap_field form.affiliated_research_assistants required_css_class='castellum-required' %} + +
+ {% bootstrap_field form.exportable_attributes required_css_class='castellum-required' %} +
+ {% bootstrap_field form.consent required_css_class='castellum-required' %} {% if CASTELLUM_STUDY_STATUS_NOTIFICATION_TO %} {% bootstrap_field form.announce_status_changes required_css_class='castellum-required' %} {% else %} {{ form.announce_status_changes.as_hidden }} {% endif %} - {% bootstrap_field form.consent required_css_class='castellum-required' %} - {% bootstrap_field form.min_subject_count required_css_class='castellum-required' %} -
- {% bootstrap_field form.exportable_attributes required_css_class='castellum-required' %} -
{% if form.is_onetime_invitation %} {% bootstrap_field form.is_onetime_invitation required_css_class='castellum-required' %} {% endif %} -- GitLab From 95aba51da0e4d3c6024a21f9780e170da9d1c100 Mon Sep 17 00:00:00 2001 From: Tobias Bengfort Date: Tue, 7 Dec 2021 12:18:43 +0100 Subject: [PATCH 2/3] fix study duplication --- castellum/studies/views/studies.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/castellum/studies/views/studies.py b/castellum/studies/views/studies.py index 2111e20e4..1b1a3cd35 100644 --- a/castellum/studies/views/studies.py +++ b/castellum/studies/views/studies.py @@ -221,17 +221,15 @@ class StudyCreateView(PermissionRequiredMixin, CreateView): self.object.save() if self.duplicate: + # copy all fields that are not part of the create form self.object.exclusion_criteria = self.duplicate.exclusion_criteria self.object.recruitment_text = self.duplicate.recruitment_text self.object.advanced_filtering = self.duplicate.advanced_filtering self.object.is_exclusive = self.duplicate.is_exclusive self.object.complete_matches_only = self.duplicate.complete_matches_only self.object.excluded_studies.set(self.duplicate.excluded_studies.all()) - self.object.consent = self.duplicate.consent self.object.mail_subject = self.duplicate.mail_subject self.object.mail_body = self.duplicate.mail_body - self.object.email = self.duplicate.email - self.object.phone = self.duplicate.phone self.object.save() self.object.general_domains.set(self.duplicate.general_domains.all()) @@ -256,8 +254,6 @@ class StudyCreateView(PermissionRequiredMixin, CreateView): ) s.type.set(session.type.all()) - for name in self.duplicate.tags: - self.object.studytag_set.create(name=name) for tag in self.duplicate.executiontag_set.all(): self.object.executiontag_set.create(name=tag.name) else: @@ -281,7 +277,14 @@ class StudyCreateView(PermissionRequiredMixin, CreateView): initial['principal_investigator'] = self.duplicate.principal_investigator initial['affiliated_scientists'] = self.duplicate.affiliated_scientists initial['affiliated_research_assistants'] = self.duplicate.affiliated_research_assistants # noqa + initial['phone'] = self.duplicate.phone + initial['email'] = self.duplicate.email initial['description'] = self.duplicate.description + initial['tags'] = list(self.duplicate.tags) + initial['announce_status_changes'] = self.duplicate.announce_status_changes + initial['consent'] = self.duplicate.consent + initial['min_subject_count'] = self.duplicate.min_subject_count + initial['exportable_attributes'] = list(self.duplicate.exportable_attributes.all()) initial['is_onetime_invitation'] = self.duplicate.is_onetime_invitation return initial -- GitLab From 067072d4154486789bd865831d98bc3adc393a08 Mon Sep 17 00:00:00 2001 From: Tobias Bengfort Date: Wed, 1 Dec 2021 17:19:41 +0100 Subject: [PATCH 3/3] study form: do not set initial name on duplicate --- castellum/studies/views/studies.py | 1 - tests/studies/views/test_create_view.py | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/castellum/studies/views/studies.py b/castellum/studies/views/studies.py index 1b1a3cd35..e21df0e4b 100644 --- a/castellum/studies/views/studies.py +++ b/castellum/studies/views/studies.py @@ -272,7 +272,6 @@ class StudyCreateView(PermissionRequiredMixin, CreateView): def get_initial(self): initial = super().get_initial() if self.duplicate: - initial['name'] = "Copy " + self.duplicate.name initial['contact_person'] = self.duplicate.contact_person initial['principal_investigator'] = self.duplicate.principal_investigator initial['affiliated_scientists'] = self.duplicate.affiliated_scientists diff --git a/tests/studies/views/test_create_view.py b/tests/studies/views/test_create_view.py index e974a461f..68d354e84 100644 --- a/tests/studies/views/test_create_view.py +++ b/tests/studies/views/test_create_view.py @@ -63,11 +63,11 @@ def test_create_study_on_post(request, client, user_fixture): def test_duplicate_study_get(client, user): client.force_login(user) - original = baker.make(Study, name="Test study", members=[user]) + original = baker.make(Study, email="test@example.com", members=[user]) response = client.get('/studies/create/?duplicate_pk={}'.format(original.pk)) assert response.status_code == 200 - assert b'value="Copy Test study"' in response.content + assert b'value="test@example.com"' in response.content def test_duplicate_study_404(client, user): -- GitLab