diff --git a/castellum/studies/templates/studies/study_form.html b/castellum/studies/templates/studies/study_form.html
index 2529d3b459a10b80ef71d42552d8bd1cd23c3f82..fa928214ec906816bc78ccd1b31fe8b27d5162b1 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 %}
diff --git a/castellum/studies/views/studies.py b/castellum/studies/views/studies.py
index 2111e20e4371eecf3af7e41244b650d1ca4fbb45..e21df0e4b1946a7c2a821e014664ae7af16c7b68 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:
@@ -276,12 +272,18 @@ 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
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
diff --git a/tests/studies/views/test_create_view.py b/tests/studies/views/test_create_view.py
index e974a461f5d31aaf97baf365b4ec7de5ba50fcac..68d354e841ad17597b516dee1c01a2fc74066db0 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):