Skip to content

Commit 4e990fe

Browse files
committed
question edit semi-operational
1 parent 4e95e09 commit 4e990fe

File tree

7 files changed

+160
-91
lines changed

7 files changed

+160
-91
lines changed

phobos/models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,11 @@ def save(self, *args, **kwargs):
257257

258258
super(Question, self).save(*args, **kwargs)
259259

260+
def delete(self, *args, **kwargs):
261+
if not self.parent_question:
262+
self.sub_questions.all().delete()
263+
super(Question, self).delete(*args, **kwargs)
264+
260265
def get_num_points(self):
261266
if self.answer_type.startswith('MCQ') or self.answer_type.startswith('MATCHING'):
262267
return self.mcq_settings.num_points

phobos/static/phobos/js/create_question.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,15 +53,17 @@ document.addEventListener('DOMContentLoaded', () => {
5353
if(form.classList.contains('create-mode')){
5454
allQuestionBlocks.appendChild(addQuestionBlock());
5555
}else{
56-
56+
var bCounter = 0;
5757
allQuestionBlocks.querySelectorAll('.question-block').forEach((block)=>{
58+
bCounter += 1;
5859
addEventListenersToQuestionBlock(block, set_initial_settings=false);
5960
const hiddenQuestionType = block.querySelector('.hidden-q-type');
6061
questionTypeDicts[block.querySelector('.question-number-value').value] = qtypeConfigs[hiddenQuestionType.value];
6162
fillQuestionBlockCounters(block);
6263
});
63-
num_questions = allQuestionBlocks.length + 1;
64-
part_num_questions = allQuestionBlocks.length + 1;
64+
num_questions = bCounter + 1;
65+
part_num_questions = bCounter + 1;
66+
console.log(num_questions, part_num_questions);
6567
// add the already created variables to the varSymbolsArray
6668
addedVarsDiv.querySelectorAll('.var-container').forEach((varContainer)=>{
6769
varSymbolsArray.push(varContainer.querySelector('.var-symbol').value);

phobos/templates/phobos/assignment_management.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
{% endif %}
1515
<li><a href="{% url 'phobos:question_bank' %}">Question Bank</a></li>
1616
<li><a href="{% url 'astros:all_courses' %}">All Courses</a></li>
17+
<li><a href="{% url 'phobos:delete_assignment' assignment_id=assignment.id %}">Delete</a></li>
1718
</ul>
1819
</div>
1920

phobos/templates/phobos/edit_question.html

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ <h3 class="original-size suggestion">Editing Question</h3>
8686
</div>
8787
<div id="all-question-blocks">
8888

89-
{% for index, question_dict in questions_dict.items %}
89+
{% for qnum, question_dict in questions_dict.items %}
9090
<div class="question-block">
9191
<input type="hidden" value="{{question_dict.question.pk}}" name="{{forloop.counter}}_question_pk"/>
9292
<input type="hidden" value="{{forloop.counter}}" class="question-number-value"/>
@@ -174,7 +174,17 @@ <h3 class="original-size suggestion">Editing Question</h3>
174174
{{answer.content}}</div>
175175
{% endif %}
176176

177-
<input type="hidden" name="{{answer.pk}}" value="{{answer.get_pk_ac}}_mcq"/>
177+
<input type="hidden" value="{{answer.pk}}" name="{{answer.get_pk_ac}}_mcq"/>
178+
<!--Important not to have an _answer_value input field here because the backend
179+
does not expect that for an mcq edit.
180+
-->
181+
{% if answer.is_answer %}
182+
<input class="answer_info" type="hidden" value="1" name="{{answer.get_pk_ac}}_mcq"/>
183+
{% else %}
184+
<input class="answer_info" type="hidden" value="0" name="{{answer.get_pk_ac}}_mcq"/>
185+
{% endif %}
186+
187+
178188
<div class="add-delete-btns">
179189
<button type="button" class="btn btn-danger mcq-delete exempt">delete</button>
180190
</div>
@@ -210,7 +220,7 @@ <h3 class="original-size suggestion">Editing Question</h3>
210220
<div class="formatted-answer">
211221
{{answer.part_b}}
212222
</div>
213-
<input type="hidden" name="{{answer.pk}}" value="{{answer.pk}}_matching_pairs"/>
223+
<input type="hidden" value="{{answer.pk}}" name="{{answer.pk}}_matching_pairs"/>
214224
<button type="button" class="btn btn-danger mp-delete exempt">delete</button><br/>
215225
</div>
216226

@@ -233,17 +243,23 @@ <h3 class="original-size suggestion">Editing Question</h3>
233243
<div class="answer-fields">
234244

235245
</div>
246+
{% if question_dict.qtype == "struct"%}
247+
<div class="formatted-answer-option unexpand structural-formatted-answer">
248+
249+
{% if question_dict.answer.get_answer_code == 2%}<!--if latex-->
250+
<input type="hidden" class="hidden_answer latex" value="{{question_dict.answer.content}}"/>
251+
{% else %}<!-- if expression or float -->
252+
<input type="hidden" class="hidden_answer expression" value="{{question_dict.answer.content}}"/>
253+
{% endif %}
254+
255+
</div>
256+
<br/>
257+
{% else %}
258+
<div class="formatted-answer-option unexpand structural-formatted-answer" style="display:none;">
236259

237-
<div class="formatted-answer-option unexpand structural-formatted-answer">
238-
{% if question_dict.qtype == "struct"%}
239-
{% if question_dict.answer.get_answer_code == 2%}<!--if latex-->
240-
<input type="hidden" class="hidden_answer latex" value="{{question_dict.answer.content}}"/>
241-
{% else %}<!-- if expression or float -->
242-
<input type="hidden" class="hidden_answer expression" value="{{question_dict.answer.content}}"/>
243-
{% endif %}
244-
{% endif %}
245-
</div>
246-
<br/>
260+
</div>
261+
{% endif %}
262+
247263

248264
<div class="calculator-area-div"></div><br/>
249265

@@ -270,7 +286,7 @@ <h3 class="original-size suggestion">Editing Question</h3>
270286
</div>
271287

272288
<hr/>
273-
<button class="btn btn-outline-success check-question-btn">Add Part</button>
289+
<button class="btn btn-outline-success check-question-btn" style="display:none;">Add Part</button>
274290
<br/><br/>
275291
<div class="hidden-settings">
276292
{% if question_dict.qtype == 'struct' %}
@@ -327,7 +343,7 @@ <h3 class="original-size suggestion">Editing Question</h3>
327343
<h4 class="suggestion original-size">Settings</h4>
328344
<hr/>
329345
<select title="Part" name="settings-select" class="settings-select field-style">
330-
{% for index, question_dict in questions_dict.items %}
346+
{% for qnum, question_dict in questions_dict.items %}
331347
<option class="settings-option-{{forloop.counter}}" value="{{forloop.counter}}">Part {{question_dict.question.number}}</option>
332348
{% endfor %}
333349
</select>

phobos/templates/phobos/question_view.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
{% endif %}
1515
<li><a href="{% url 'phobos:search_question' %}">Search Question</a></li>
1616
<li><a href="{% url 'phobos:edit_question' question_id=question.id %}">Edit Question</a></li>
17+
<li><a href="{% url 'phobos:delete_question' question_id=question.id %}">Delete</a></li>
1718
</ul>
1819
</div>
1920

@@ -23,7 +24,7 @@
2324
<a class="nav-link" href="{% url 'phobos:course_management' course_id=question.assignment.course.id %}">Assignments</a>
2425
<a class="nav-link" id="btn-export_question" style="color:white">Export</a>
2526
<a class="nav-link" href="{% url 'phobos:edit_question' question_id=question.id %}">Edit</a>
26-
<a class="nav-link" href="{% url 'phobos:delete_question' question_id=question.id %}">Delete</a>
27+
2728
</nav>
2829

2930
<div class="export_question">

phobos/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
views.create_assignment, name='create_assignment'),
3030
path('courses/create_assignment',\
3131
views.create_assignment, name='create_assignment'),
32+
path('delete_assignment/<int:assignment_id>', views.delete_assignment , name='delete_assignment'),
3233
path('courses/<int:course_id>/assignments/<int:assignment_id>', \
3334
views.assignment_management, name='assignment_management'),
3435
path('courses/<int:course_id>/assignments/<int:assignment_id>/assign', \

0 commit comments

Comments
 (0)