diff --git a/atlas/forms.py b/atlas/forms.py index 5f23e2e0..42741947 100755 --- a/atlas/forms.py +++ b/atlas/forms.py @@ -215,6 +215,7 @@ class CaseCollectionForm(ModelForm): "feedback_once_collection_complete", "collection_type", "viewer_mode", + "question_time_limit", ), Fieldset("Valid User Groups", *user_fields) if user_fields else None, Div( diff --git a/atlas/migrations/0076_casecollection_question_time_limit.py b/atlas/migrations/0076_casecollection_question_time_limit.py new file mode 100644 index 00000000..e3a023cc --- /dev/null +++ b/atlas/migrations/0076_casecollection_question_time_limit.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.4 on 2025-10-13 08:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('atlas', '0075_casedetail_override_history_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='casecollection', + name='question_time_limit', + field=models.PositiveIntegerField(help_text='Time limit for answering questions in seconds.', null=True), + ), + ] diff --git a/atlas/migrations/0077_alter_casecollection_question_time_limit.py b/atlas/migrations/0077_alter_casecollection_question_time_limit.py new file mode 100644 index 00000000..e21d0496 --- /dev/null +++ b/atlas/migrations/0077_alter_casecollection_question_time_limit.py @@ -0,0 +1,18 @@ +# Generated by Django 5.1.4 on 2025-10-13 08:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('atlas', '0076_casecollection_question_time_limit'), + ] + + operations = [ + migrations.AlterField( + model_name='casecollection', + name='question_time_limit', + field=models.PositiveIntegerField(blank=True, help_text='Time limit for answering questions in seconds.', null=True), + ), + ] diff --git a/atlas/models.py b/atlas/models.py index afb57d18..f2319d0e 100644 --- a/atlas/models.py +++ b/atlas/models.py @@ -942,6 +942,12 @@ class CaseCollection(ExamOrCollectionGenericBase): feedback_once_collection_complete = models.BooleanField(default=True, help_text="If true feedback is only given once the collection is complete. If false feedback is given after each case.") + question_time_limit = models.PositiveIntegerField( + blank=True, + null=True, + help_text="Time limit for answering questions in seconds." + ) + class COLLECTION_TYPE_CHOICES(models.TextChoices): REVIEW = ( "REV", diff --git a/atlas/templates/atlas/collection_case_view_take.html b/atlas/templates/atlas/collection_case_view_take.html index 025b5dfe..546a5fe0 100644 --- a/atlas/templates/atlas/collection_case_view_take.html +++ b/atlas/templates/atlas/collection_case_view_take.html @@ -16,6 +16,13 @@ + {% if not question_completed and collection.question_time_limit is not None %} +
+ Time remaining: +   +
+ {% endif %} + {% comment %}
Help
{% endcomment %} @@ -49,13 +56,13 @@ {% if collection.show_ohif_viewer %}
- + {% if question_completed %} - + {% else %} - + {% endif %} - +
{% endif %} @@ -63,9 +70,9 @@ {% if collection.show_ohif_viewer_link %}
{% if question_completed %} - + {% else %} - + {% endif %}
{% endif %} @@ -325,107 +332,66 @@ {{ form.media }} {% comment %} {% endcomment %} {% endblock js %}