diff --git a/anatomy/templates/anatomy/anatomyquestion_form.html b/anatomy/templates/anatomy/anatomyquestion_form.html
index 46436df7..133a5950 100644
--- a/anatomy/templates/anatomy/anatomyquestion_form.html
+++ b/anatomy/templates/anatomy/anatomyquestion_form.html
@@ -231,6 +231,8 @@
This form can be used to create an Anatomy question.
Question type can be selected from a predefined list. If you require a more please contact ross.kruger@nhs.net.
+
+ Correct and incorrect answers can be defined once the question has been created.
diff --git a/anatomy/views.py b/anatomy/views.py
index 5011d956..a66e98e2 100644
--- a/anatomy/views.py
+++ b/anatomy/views.py
@@ -514,27 +514,34 @@ class AnatomyQuestionCreateBase(RevisionMixin, LoginRequiredMixin, CreateView):
self.object = form.save(commit=False)
self.object.save()
+ response = super().form_valid(form)
form.instance.author.add(self.request.user.id)
- context = self.get_context_data(form=form)
- formset = context["answer_formset"]
+ #context = self.get_context_data(form=form)
+ #formset = context["answer_formset"]
- if formset.is_valid():
- response = super().form_valid(form)
- formset.instance = self.object
- formset.save()
- # If the normal submit button is pressed we save as normal
- if "submit" in self.request.POST:
- return response
- # else we redirect to the clone url
- else:
- return redirect("anatomy:question_clone", pk=self.object.pk)
+ #if formset.is_valid():
+ # response = super().form_valid(form)
+ # formset.instance = self.object
+ # formset.save()
+ # # If the normal submit button is pressed we save as normal
+ # if "submit" in self.request.POST:
+ # return response
+ # # else we redirect to the clone url
+ # else:
+ # return redirect("anatomy:question_clone", pk=self.object.pk)
+ #else:
+ # return super().form_invalid(form)
+ # If the normal submit button is pressed we save as normal
+ if "submit" in self.request.POST:
+ return response
+ # else we redirect to the clone url
else:
- return super().form_invalid(form)
+ return redirect("anatomy:question_clone", pk=self.object.pk)
def get_success_url(self) -> str:
- return redirect("anatomy:question_detail", pk=self.object.pk)
+ return reverse("anatomy:question_detail", kwargs={"pk":self.object.pk})
class AnatomyQuestionCreate(AnatomyQuestionCreateBase):
diff --git a/atlas/urls.py b/atlas/urls.py
index aa8cee52..5a035463 100755
--- a/atlas/urls.py
+++ b/atlas/urls.py
@@ -421,7 +421,7 @@ urlpatterns = [
),
path(
"structure-autocomplete",
- views.StructureAutocomplete.as_view(model=Structure, create_field="name"),
+ views.StructureAutocomplete.as_view(model=Structure, create_field="name", validate_create=True),
name="structure-autocomplete",
),
path("presentation/", views.PresentationView.as_view(), name="presentation_view"),
diff --git a/generic/forms.py b/generic/forms.py
index efe55b82..a9bf32d7 100755
--- a/generic/forms.py
+++ b/generic/forms.py
@@ -66,7 +66,8 @@ import datetime
from django.forms.utils import from_current_timezone, to_current_timezone
from crispy_forms.helper import FormHelper
-from crispy_forms.layout import Submit
+from crispy_forms.layout import Submit, Layout, Fieldset, Field, Div
+from crispy_forms.bootstrap import Accordion, AccordionGroup
from dal import autocomplete
@@ -119,7 +120,33 @@ class ExamFormMixin:
self.helper.form_method = "post"
self.helper.form_action = "submit"
- self.helper.add_input(Submit("submit", "Submit"))
+ self.helper.layout = Layout(
+ Fieldset(
+ "Exam Details",
+ "name",
+ "time_limit",
+ "open_access",
+ "authors_only",
+ "exam_mode",
+ "include_history",
+ "active",
+ "publish_results",
+ "archive",
+ Accordion(
+ AccordionGroup("Date restrictions",
+ "restrict_to_dates",
+ "start_date",
+ "end_date",
+ )
+ ),
+ ),
+ Div(
+ Submit("submit", "Submit"),
+ css_class="form-group",
+ ),
+ )
+
+ # self.helper.add_input(Submit("submit", "Submit"))
# if user.is_superuser or user.groups.filter(name="cid_user_manager").exists():
# cid_user_group_queryset = CidUserGroup.objects.filter(archive=False)
@@ -675,6 +702,7 @@ class UserUserForm(Form):
last_name = CharField(max_length=255, required=True)
grade = ModelChoiceField(UserGrades.objects.all(), required=False)
+
class TraineeForm(Form):
username = EmailField(
required=True,
@@ -684,10 +712,12 @@ class TraineeForm(Form):
last_name = CharField(max_length=255, required=True)
grade = ModelChoiceField(UserGrades.objects.all(), required=False)
supervisor = ModelChoiceField(
- Supervisor.objects.all().order_by("name"), required=False, widget=autocomplete.ModelSelect2(url='generic:supervisor-autocomplete')
+ Supervisor.objects.all().order_by("name"),
+ required=False,
+ widget=autocomplete.ModelSelect2(url="generic:supervisor-autocomplete"),
) # Needs to be a user/object ref
- #class Meta:
+ # class Meta:
# widgets = {
# "supervisor" : autocomplete.ModelSelect2(url='generic:supervisor-autocomplete')
# }
diff --git a/manage.py b/manage.py
index 2dea2ff2..22114320 100755
--- a/manage.py
+++ b/manage.py
@@ -30,3 +30,4 @@ if __name__ == "__main__":
)
raise
execute_from_command_line(sys.argv)
+
diff --git a/rad/static/css/anatomy.css b/rad/static/css/anatomy.css
index 6174df77..8d0de6d6 100644
--- a/rad/static/css/anatomy.css
+++ b/rad/static/css/anatomy.css
@@ -1312,4 +1312,12 @@ details.help-text > summary {
#dicom-image .help-text:hover{
background-color: rgba(0, 0, 0, 0.546);
+}
+
+.accordion-item {
+ background-color: black;
+}
+
+.accordion-button {
+ background-color: darkgray;
}
\ No newline at end of file