fix: test case with no input issue

This commit is contained in:
Jannat Patel
2025-06-24 12:22:02 +05:30
parent 88a2b69980
commit 4fb0db7a1e
12 changed files with 184 additions and 95 deletions

View File

@@ -1544,24 +1544,18 @@ def get_exercise_status(test_cases):
def update_test_cases(test_cases, submission):
frappe.db.delete("LMS Test Case Submission", {"parent": submission})
for row in test_cases:
test_case = frappe.db.get_value(
"LMS Test Case Submission",
test_case = frappe.new_doc("LMS Test Case Submission")
test_case.update(
{
"parent": submission,
"parenttype": "LMS Programming Exercise Submission",
"parentfield": "test_cases",
"input": row.get("input"),
},
"name",
as_dict=True,
"output": row.get("output"),
"expected_output": row.get("expected_output"),
"status": row.get("status", "Failed"),
}
)
if test_case:
frappe.db.set_value(
"LMS Test Case Submission",
test_case.name,
{
"output": row.get("output"),
"expected_output": row.get("expected_output"),
"status": row.get("status", "Failed"),
},
)
test_case.insert()

View File

@@ -16,6 +16,7 @@
{
"fieldname": "input",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Input"
},
{
@@ -49,8 +50,8 @@
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2025-06-18 20:06:57.182153",
"modified_by": "Administrator",
"modified": "2025-06-24 11:23:13.803159",
"modified_by": "sayali@frappe.io",
"module": "LMS",
"name": "LMS Test Case Submission",
"owner": "Administrator",

View File

@@ -1504,6 +1504,9 @@ def get_assessments(batch, member=None):
elif assessment.assessment_type == "LMS Quiz":
assessment = get_quiz_details(assessment, member)
elif assessment.assessment_type == "LMS Programming Exercise":
assessment = get_exercise_details(assessment, member)
return assessments
@@ -1576,6 +1579,31 @@ def get_quiz_details(assessment, member):
return assessment
def get_exercise_details(assessment, member):
assessment.title = frappe.db.get_value(
"LMS Programming Exercise", assessment.assessment_name, "title"
)
filters = {"member": member, "exercise": assessment.assessment_name}
if frappe.db.exists("LMS Programming Exercise Submission", filters):
assessment.submission = frappe.db.get_value(
"LMS Programming Exercise Submission",
filters,
["name", "status"],
as_dict=True,
)
assessment.completed = True
assessment.status = assessment.submission.status
assessment.edit_url = (
f"/exercises/{assessment.assessment_name}/submission/{assessment.submission.name}"
)
else:
assessment.status = "Not Attempted"
assessment.color = "red"
assessment.completed = False
assessment.edit_url = f"/exercises/{assessment.assessment_name}/submission/new"
@frappe.whitelist()
def get_batch_students(batch):
students = []