diff --git a/castellum/studies/forms.py b/castellum/studies/forms.py index d5a1d1a6d83dceaf74fc03095d33cdb6c5e53a18..0eb2569a65097202d0d11d665f3b79e2f2fda835 100644 --- a/castellum/studies/forms.py +++ b/castellum/studies/forms.py @@ -56,7 +56,6 @@ class StudyForm(forms.ModelForm): 'email', 'description', 'announce_status_changes', - 'consent', 'min_subject_count', 'exportable_attributes', 'is_anonymous_invitation', diff --git a/castellum/studies/templates/studies/study_base.html b/castellum/studies/templates/studies/study_base.html index c04a10b257ffc0345443ed3df1435faadb38c50c..0a8d4f407c51161bd13bba279c32ce672919dbac 100644 --- a/castellum/studies/templates/studies/study_base.html +++ b/castellum/studies/templates/studies/study_base.html @@ -127,6 +127,9 @@ + diff --git a/castellum/studies/templates/studies/study_consent.html b/castellum/studies/templates/studies/study_consent.html new file mode 100644 index 0000000000000000000000000000000000000000..978d308ede0703e9edb8896169c71b543755b024 --- /dev/null +++ b/castellum/studies/templates/studies/study_consent.html @@ -0,0 +1,17 @@ +{% extends "studies/study_base.html" %} +{% load static i18n django_bootstrap5 utils %} + +{% block title %}{% translate "Consent" %} · {{ block.super }}{% endblock %} + +{% block content %} +
+ {% include 'utils/form_errors.html' with form=form %} + {% csrf_token %} + + {% bootstrap_field form.consent required_css_class='castellum-required' %} + +
+ +
+
+{% endblock %} diff --git a/castellum/studies/templates/studies/study_form.html b/castellum/studies/templates/studies/study_form.html index 1befb9350111358f73fac3fdb2fe80c57d8f30e5..55e05ed6a66a996466432cab860979802408885e 100644 --- a/castellum/studies/templates/studies/study_form.html +++ b/castellum/studies/templates/studies/study_form.html @@ -30,7 +30,6 @@
{% 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 %} diff --git a/castellum/studies/urls/__init__.py b/castellum/studies/urls/__init__.py index 9e54a76ae6f3057d0c015d922919f41781140f61..579bc877c35b7cf82e49071622505a40f3a325db 100644 --- a/castellum/studies/urls/__init__.py +++ b/castellum/studies/urls/__init__.py @@ -26,6 +26,7 @@ from ..views.api import APIStudyDetailView from ..views.api import APIStudyListView from ..views.recruitment import AnonymousInvitationMailRecruitmentView from ..views.studies import FilterTrialCreateView +from ..views.studies import StudyConsentView from ..views.studies import StudyCreateView from ..views.studies import StudyDeleteView from ..views.studies import StudyDetailView @@ -53,6 +54,7 @@ urlpatterns = [ path('/delete/', StudyDeleteView.as_view(), name='delete'), path('/domains/', StudyDomainsView.as_view(), name='domains'), path('/domains/general/', StudyDomainsGeneralView.as_view(), name='domains-general'), + path('/consent/', StudyConsentView.as_view(), name='consent'), path( '/domains//', StudyDomainDeleteView.as_view(), diff --git a/castellum/studies/views/studies.py b/castellum/studies/views/studies.py index 4a362f30bea1840034fa4a75e4c7a281ad7e4cd5..be0bda0bb69dcfe7f59820690a3fa44d3b11976f 100644 --- a/castellum/studies/views/studies.py +++ b/castellum/studies/views/studies.py @@ -469,6 +469,21 @@ class StudyDomainDeleteView(StudyDomainsMixin, DeleteView): return reverse('studies:domains', args=[self.study.pk]) +class StudyConsentView(PermissionRequiredMixin, UpdateView): + model = Study + permission_required = 'studies.change_study' + template_name = 'studies/study_consent.html' + subtab = 'consent' + fields = ['consent'] + + def get_success_url(self): + return reverse('studies:consent', args=[self.object.pk]) + + def form_valid(self, form): + messages.success(self.request, _('Data has been saved.')) + return super().form_valid(form) + + class StudyImportView(PermissionRequiredMixin, FormView): permission_required = 'studies.change_study' template_name = 'studies/study_import.html'