improve surverys
This commit is contained in:
@@ -362,7 +362,9 @@ class CaseCollectionForm(ModelForm):
|
||||
"answer_entry_grace_period",
|
||||
"prerequisites",
|
||||
"pre_survey",
|
||||
"pre_survey_mandatory",
|
||||
"post_survey",
|
||||
"post_survey_mandatory",
|
||||
Fieldset(
|
||||
"Custom Start Screen",
|
||||
"start_screen_content",
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 6.0.1 on 2026-06-29 08:24
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('atlas', '0109_casecollection_post_survey_casecollection_pre_survey'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='casecollection',
|
||||
name='post_survey_mandatory',
|
||||
field=models.BooleanField(default=False, help_text='If checked, candidates must complete the post-take survey to view results.'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='casecollection',
|
||||
name='pre_survey_mandatory',
|
||||
field=models.BooleanField(default=False, help_text='If checked, candidates must complete the pre-take survey to start.'),
|
||||
),
|
||||
]
|
||||
@@ -76,21 +76,32 @@
|
||||
|
||||
|
||||
<h3>Surveys & Feedback</h3>
|
||||
<p>The platform supports reusable and shareable feedback forms and surveys that can be configured by administrators and staff to assess educational improvement and collect feedback.</p>
|
||||
<p>The platform supports reusable, shareable, and mandatory feedback forms and surveys that can be configured by administrators to assess educational improvement and collect feedback.</p>
|
||||
|
||||
<h5>Managing Surveys (Staff/Admins)</h5>
|
||||
<ul>
|
||||
<li><strong>Create Surveys:</strong> Navigate to the <em>Survey Dashboard</em> to create a survey, define its name, description, and decide if responses should be anonymous.</li>
|
||||
<li><strong>Question Types:</strong> You can add questions of three types:
|
||||
<li><strong>Create Surveys:</strong> Navigate to the <em>Survey Dashboard</em> to create a survey, customize its name, description, decide if responses should be anonymous, and specify:
|
||||
<ul>
|
||||
<li><em>Free Text:</em> For qualitative comments.</li>
|
||||
<li><em>Multiple Choice:</em> For single-select questions (entered one option per line).</li>
|
||||
<li><em>Rating Scale:</em> 1-to-5 Likert scale ratings.</li>
|
||||
<li><em>Before Text:</em> Custom instructions shown to candidates before they begin.</li>
|
||||
<li><em>After Text:</em> Custom thank-you message shown upon submission.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>Question Reordering:</strong> Adjust question ordering using the numeric inputs and click <em>Update Order</em>.</li>
|
||||
<li><strong>Linking to Case Collections & Exams:</strong> Expose surveys by assigning them as <em>Pre-take</em> or <em>Post-take</em> surveys in the collection/exam edit screens. Candidates are automatically redirected to complete the Pre-take survey before they can begin, and are prompted to complete the Post-take survey once they finish.</li>
|
||||
<li><strong>Analytics & CSV Export:</strong> Click <em>Analytics</em> on the dashboard to view aggregated rating averages, response counts, graphical progress bar breakdowns, and free-text replies. You can export complete response details to CSV format by clicking <em>Export CSV</em>.</li>
|
||||
<li><strong>Question Types & Validation:</strong> You can add questions of multiple types:
|
||||
<ul>
|
||||
<li><em>Free Text:</em> For qualitative comments.</li>
|
||||
<li><em>Multiple Choice:</em> For single-select options (entered one option per line).</li>
|
||||
<li><em>Rating Scale:</em> 1-to-5 Likert scale ratings.</li>
|
||||
<li><em>Integer / Number:</em> Enforces numerical input. You can set custom minimum/maximum validation rules.</li>
|
||||
<li><em>Date:</em> Enforces date input using a calendar picker. You can configure custom minimum/maximum date range limits.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>Mandatory & Optional Flows:</strong> You can assign surveys as <em>Pre-take</em> or <em>Post-take</em> surveys in collection/exam edit screens:
|
||||
<ul>
|
||||
<li><em>Mandatory:</em> Candidates must fill out the pre-survey to start, and must fill out the post-survey before they can view their results/scores.</li>
|
||||
<li><em>Optional:</em> Candidates will be prompted to fill out the surveys, but can choose to skip them using the "Skip Survey" option.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>Analytics & CSV Export:</strong> The <em>Analytics Dashboard</em> displays rating averages, progress bar breakdowns, integer statistics, and text answers. You can filter results by survey source (Pre-take, Post-take, or Standalone) and target exams/collections. Results can be exported as a filtered CSV.</li>
|
||||
</ul>
|
||||
|
||||
<h5>Taking Standalone/General Surveys</h5>
|
||||
|
||||
+13
-4
@@ -7755,10 +7755,19 @@ def collection_take_overview(
|
||||
if not has_responded:
|
||||
from django.urls import reverse
|
||||
survey_url = reverse("survey:survey_take", kwargs={"pk": collection.post_survey.pk})
|
||||
params = f"?pre_or_post=POST&content_type_id={ct.id}&object_id={collection.pk}&next={request.get_full_path()}"
|
||||
if cid and passcode:
|
||||
params += f"&cid={cid}&passcode={passcode}"
|
||||
post_survey_url = f"{survey_url}{params}"
|
||||
is_mandatory = getattr(collection, "post_survey_mandatory", False)
|
||||
if is_mandatory:
|
||||
params = f"?pre_or_post=POST&content_type_id={ct.id}&object_id={collection.pk}&next={request.get_full_path()}&mandatory=true"
|
||||
if cid and passcode:
|
||||
params += f"&cid={cid}&passcode={passcode}"
|
||||
return redirect(f"{survey_url}{params}")
|
||||
else:
|
||||
session_key = f"skipped_post_survey_{collection.pk}"
|
||||
if not request.session.get(session_key):
|
||||
params = f"?pre_or_post=POST&content_type_id={ct.id}&object_id={collection.pk}&next={request.get_full_path()}&mandatory=false&skip_key={session_key}"
|
||||
if cid and passcode:
|
||||
params += f"&cid={cid}&passcode={passcode}"
|
||||
post_survey_url = f"{survey_url}{params}"
|
||||
|
||||
return render(
|
||||
request,
|
||||
|
||||
Reference in New Issue
Block a user