Use deducted and final points in frontend
This commit is contained in:
parent
f71e2e6ff3
commit
401c44dbc7
|
|
@ -139,7 +139,7 @@ const userPoints = computed(() =>
|
|||
{{ $t("assignment.von x Punkten", { x: maxPoints }) }}
|
||||
({{
|
||||
(
|
||||
((props.assignmentCompletion?.evaluation_points ?? 0) /
|
||||
((props.assignmentCompletion?.evaluation_points_final ?? 0) /
|
||||
(props.assignmentCompletion?.evaluation_max_points ?? 1)) *
|
||||
100
|
||||
).toFixed(0)
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ const documents = {
|
|||
"\n mutation UpsertAssignmentCompletion(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n $completionStatus: AssignmentCompletionStatus!\n $completionDataString: String!\n $evaluationPoints: Float\n $initializeCompletion: Boolean\n $evaluationUserId: ID\n ) {\n upsert_assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n learning_content_page_id: $learningContentId\n assignment_user_id: $assignmentUserId\n completion_status: $completionStatus\n completion_data_string: $completionDataString\n evaluation_points: $evaluationPoints\n initialize_completion: $initializeCompletion\n evaluation_user_id: $evaluationUserId\n ) {\n assignment_completion {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_points\n completion_data\n task_completion_data\n }\n }\n }\n": types.UpsertAssignmentCompletionDocument,
|
||||
"\n fragment CoursePageFields on CoursePageInterface {\n title\n id\n slug\n content_type\n frontend_url\n }\n": types.CoursePageFieldsFragmentDoc,
|
||||
"\n query attendanceCheckQuery($courseSessionId: ID!) {\n course_session_attendance_course(id: $courseSessionId) {\n id\n attendance_user_list {\n user_id\n status\n }\n }\n }\n": types.AttendanceCheckQueryDocument,
|
||||
"\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n": types.AssignmentCompletionQueryDocument,
|
||||
"\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateQueryDocument,
|
||||
"\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n": types.AssignmentCompletionQueryDocument,
|
||||
"\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateQueryDocument,
|
||||
"\n query competenceCertificateForUserQuery(\n $courseSlug: String!\n $courseSessionId: ID!\n $userId: UUID!\n ) {\n competence_certificate_list_for_user(course_slug: $courseSlug, user_id: $userId) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateForUserQueryDocument,
|
||||
"\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n }\n }\n users {\n id\n user_id\n first_name\n last_name\n email\n avatar_url\n role\n circles {\n id\n title\n slug\n }\n }\n attendance_courses {\n id\n location\n trainer\n due_date {\n id\n start\n end\n }\n learning_content_id\n learning_content {\n id\n title\n circle {\n id\n title\n slug\n }\n }\n }\n assignments {\n id\n submission_deadline {\n id\n start\n }\n evaluation_deadline {\n id\n start\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n edoniq_tests {\n id\n deadline {\n id\n start\n end\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n }\n }\n": types.CourseSessionDetailDocument,
|
||||
"\n query courseQuery($slug: String!) {\n course(slug: $slug) {\n id\n title\n slug\n category_name\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n is_uk\n }\n action_competences {\n competence_id\n ...CoursePageFields\n performance_criteria {\n competence_id\n learning_unit {\n id\n slug\n evaluate_url\n }\n ...CoursePageFields\n }\n }\n learning_path {\n ...CoursePageFields\n topics {\n is_visible\n ...CoursePageFields\n circles {\n description\n goals\n ...CoursePageFields\n learning_sequences {\n icon\n ...CoursePageFields\n learning_units {\n evaluate_url\n ...CoursePageFields\n performance_criteria {\n ...CoursePageFields\n }\n learning_contents {\n can_user_self_toggle_course_completion\n content_url\n minutes\n description\n ...CoursePageFields\n ... on LearningContentAssignmentObjectType {\n assignment_type\n content_assignment {\n id\n assignment_type\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentEdoniqTestObjectType {\n checkbox_text\n has_extended_time_test\n content_assignment {\n id\n assignment_type\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentRichTextObjectType {\n text\n }\n }\n }\n }\n }\n }\n }\n }\n }\n": types.CourseQueryDocument,
|
||||
|
|
@ -63,11 +63,11 @@ export function graphql(source: "\n query attendanceCheckQuery($courseSessionId
|
|||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n"): (typeof documents)["\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n"];
|
||||
export function graphql(source: "\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n"): (typeof documents)["\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n"];
|
||||
export function graphql(source: "\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -560,6 +560,9 @@ type AssignmentCompletionObjectType {
|
|||
submitted_at: DateTime
|
||||
evaluation_submitted_at: DateTime
|
||||
evaluation_user: UserObjectType
|
||||
evaluation_points_deducted: Float!
|
||||
evaluation_points_deducted_reason: String!
|
||||
evaluation_points_deducted_user: UserObjectType
|
||||
evaluation_passed: Boolean
|
||||
edoniq_extended_time_flag: Boolean!
|
||||
assignment_user: UserObjectType!
|
||||
|
|
@ -571,6 +574,7 @@ type AssignmentCompletionObjectType {
|
|||
task_completion_data: GenericScalar
|
||||
learning_content_page_id: ID
|
||||
evaluation_points: Float
|
||||
evaluation_points_final: Float
|
||||
evaluation_max_points: Float
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -77,6 +77,10 @@ export const ASSIGNMENT_COMPLETION_QUERY = graphql(`
|
|||
}
|
||||
evaluation_points
|
||||
evaluation_max_points
|
||||
evaluation_points_deducted
|
||||
evaluation_points_deducted_reason
|
||||
evaluation_points_final
|
||||
|
||||
evaluation_passed
|
||||
edoniq_extended_time_flag
|
||||
completion_data
|
||||
|
|
@ -101,6 +105,8 @@ export const COMPETENCE_NAVI_CERTIFICATE_QUERY = graphql(`
|
|||
completion_status
|
||||
submitted_at
|
||||
evaluation_points
|
||||
evaluation_points_deducted
|
||||
evaluation_points_final
|
||||
evaluation_max_points
|
||||
evaluation_passed
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,18 +81,24 @@ const getIconName = () => {
|
|||
>
|
||||
<div class="flex flex-col lg:items-center">
|
||||
<div class="heading-2">
|
||||
{{ assignment.completion?.evaluation_points }}
|
||||
{{ assignment.completion?.evaluation_points_final }}
|
||||
</div>
|
||||
<div>
|
||||
{{ $t("assignment.von x Punkten", { x: assignment.max_points }) }}
|
||||
({{
|
||||
(
|
||||
((assignment.completion?.evaluation_points ?? 0) /
|
||||
((assignment.completion?.evaluation_points_final ?? 0) /
|
||||
(assignment.completion?.evaluation_max_points ?? 1)) *
|
||||
100
|
||||
).toFixed(0)
|
||||
}}%)
|
||||
</div>
|
||||
<div
|
||||
v-if="(assignment.completion?.evaluation_points_deducted ?? 0) > 0"
|
||||
class="text-gray-900"
|
||||
>
|
||||
{{ $t("a.mit Abzug") }}
|
||||
</div>
|
||||
<div
|
||||
v-if="assignment.completion && !assignment.completion.evaluation_passed"
|
||||
class="my-2 rounded-md bg-error-red-200 px-2.5 py-0.5"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ export function assignmentsUserPoints(assignments: CompetenceCertificateAssignme
|
|||
return +_.sum(
|
||||
assignments
|
||||
.filter((a) => a.completion?.completion_status === "EVALUATION_SUBMITTED")
|
||||
.map((a) => a.completion?.evaluation_points ?? 0)
|
||||
.map((a) => a.completion?.evaluation_points_final ?? 0)
|
||||
).toFixed(1);
|
||||
}
|
||||
|
||||
|
|
@ -31,7 +31,7 @@ export function calcCompetenceCertificateGrade(
|
|||
|
||||
const adjustedResults = evaluatedAssignments.map((a) => {
|
||||
return (
|
||||
((a.completion?.evaluation_points ?? 0) / a.max_points) *
|
||||
((a.completion?.evaluation_points_final ?? 0) / a.max_points) *
|
||||
a.competence_certificate_weight
|
||||
);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ async function startTest() {
|
|||
<div class="my-4">
|
||||
{{ $t("a.Resultat") }}:
|
||||
<span class="font-bold">
|
||||
{{ assignmentCompletion.evaluation_points }}
|
||||
{{ assignmentCompletion.evaluation_points_final }}
|
||||
</span>
|
||||
{{
|
||||
$t("assignment.von x Punkten", {
|
||||
|
|
@ -178,7 +178,7 @@ async function startTest() {
|
|||
}}
|
||||
({{
|
||||
(
|
||||
((assignmentCompletion.evaluation_points ?? 0) /
|
||||
((assignmentCompletion.evaluation_points_final ?? 0) /
|
||||
(assignmentCompletion.evaluation_max_points ?? 1)) *
|
||||
100
|
||||
).toFixed(0)
|
||||
|
|
@ -191,6 +191,21 @@ async function startTest() {
|
|||
</span>
|
||||
</div>
|
||||
|
||||
<div v-if="assignmentCompletion.evaluation_points_deducted > 0" class="my-4">
|
||||
<div>
|
||||
{{ $t("a.Punkte aus Bewertung") }}:
|
||||
{{ assignmentCompletion.evaluation_points }}
|
||||
</div>
|
||||
<div>
|
||||
{{ $t("a.Abgezogene Punkte") }}:
|
||||
{{ assignmentCompletion.evaluation_points_deducted }}
|
||||
</div>
|
||||
<div>
|
||||
{{ $t("a.Grund") }}:
|
||||
{{ assignmentCompletion.evaluation_points_deducted_reason }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
<button class="btn-primary inline-flex items-center" @click="startTest()">
|
||||
{{ $t("edoniqTest.viewResults") }}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ export async function loadAssignmentCompletionStatusData(
|
|||
if (userAssignmentStatus?.completion_status === "EVALUATION_SUBMITTED") {
|
||||
gradedUsers.push({
|
||||
user: csu,
|
||||
points: userAssignmentStatus.evaluation_points ?? 0,
|
||||
points: userAssignmentStatus.evaluation_points_final ?? 0,
|
||||
maxPoints: userAssignmentStatus.evaluation_max_points ?? 0,
|
||||
passed: userAssignmentStatus.evaluation_passed ?? false,
|
||||
});
|
||||
|
|
|
|||
|
|
@ -403,6 +403,9 @@ export interface CompetenceCertificateAssignment extends BaseCourseWagtailPage {
|
|||
completion_status: AssignmentCompletionStatus;
|
||||
evaluation_submitted_at: string | null;
|
||||
evaluation_points: number | null;
|
||||
evaluation_points_final: number | null;
|
||||
evaluation_points_deducted: number | null;
|
||||
evaluation_points_reason: string;
|
||||
evaluation_max_points: number | null;
|
||||
evaluation_passed: boolean | null;
|
||||
} | null;
|
||||
|
|
@ -567,6 +570,8 @@ export interface UserAssignmentCompletionStatus {
|
|||
assignment_user_id: string;
|
||||
completion_status: AssignmentCompletionStatus;
|
||||
evaluation_points: number | null;
|
||||
evaluation_points_final: number | null;
|
||||
evaluation_points_deducted: number | null;
|
||||
evaluation_max_points: number | null;
|
||||
evaluation_passed: boolean;
|
||||
learning_content_page_id: string;
|
||||
|
|
|
|||
|
|
@ -1,31 +1,38 @@
|
|||
# Generated by Django 3.2.20 on 2024-05-21 14:52
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('assignment', '0013_assignment_competence_certificate_weight'),
|
||||
("assignment", "0013_assignment_competence_certificate_weight"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='assignmentcompletion',
|
||||
name='evaluation_points_deducted',
|
||||
field=models.FloatField(default=0.0, verbose_name='Punkteabzug'),
|
||||
model_name="assignmentcompletion",
|
||||
name="evaluation_points_deducted",
|
||||
field=models.FloatField(default=0.0, verbose_name="Punkteabzug"),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='assignmentcompletion',
|
||||
name='evaluation_points_deducted_reason',
|
||||
field=models.TextField(blank=True, default='', verbose_name='Punkteabzug Begründung'),
|
||||
model_name="assignmentcompletion",
|
||||
name="evaluation_points_deducted_reason",
|
||||
field=models.TextField(
|
||||
blank=True, default="", verbose_name="Punkteabzug Begründung"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='assignmentcompletion',
|
||||
name='evaluation_points_deducted_user',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL),
|
||||
model_name="assignmentcompletion",
|
||||
name="evaluation_points_deducted_user",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -384,7 +384,7 @@ class AssignmentCompletion(models.Model):
|
|||
default=AssignmentCompletionStatus.IN_PROGRESS.value,
|
||||
)
|
||||
|
||||
completion_data = models.JSONField(default=dict)
|
||||
completion_data = models.JSONField(default=dict, blank=True)
|
||||
additional_json_data = models.JSONField(default=dict, blank=True)
|
||||
|
||||
class Meta:
|
||||
|
|
|
|||
|
|
@ -10,7 +10,8 @@ from vbv_lernwelt.assignment.models import (
|
|||
AssignmentCompletionAuditLog,
|
||||
AssignmentCompletionStatus,
|
||||
AssignmentType,
|
||||
is_valid_assignment_completion_status, recalculate_assignment_passed,
|
||||
is_valid_assignment_completion_status,
|
||||
recalculate_assignment_passed,
|
||||
)
|
||||
from vbv_lernwelt.core.models import User
|
||||
from vbv_lernwelt.core.utils import find_first
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ def request_assignment_completion_status(request, assignment_id, course_session_
|
|||
"assignment_user_id",
|
||||
"completion_status",
|
||||
"evaluation_points",
|
||||
"evaluation_points_deducted",
|
||||
"evaluation_max_points",
|
||||
"evaluation_passed",
|
||||
"learning_content_page_id",
|
||||
|
|
@ -29,6 +30,10 @@ def request_assignment_completion_status(request, assignment_id, course_session_
|
|||
# Convert the learning_content_page_id to a string
|
||||
data = list(qs) # Evaluate the queryset
|
||||
for item in data:
|
||||
# only `evaluation_points_final` is relevant for the frontend
|
||||
item["evaluation_points_final"] = (
|
||||
item["evaluation_points"] - item["evaluation_points_deducted"]
|
||||
)
|
||||
item["learning_content_page_id"] = str(item["learning_content_page_id"])
|
||||
|
||||
return Response(status=200, data=data)
|
||||
|
|
|
|||
|
|
@ -188,14 +188,22 @@ class DashboardQuery(graphene.ObjectType):
|
|||
completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED.value,
|
||||
assignment_user=user,
|
||||
course_session__course=course,
|
||||
).values("evaluation_max_points", "evaluation_points")
|
||||
).values(
|
||||
"evaluation_max_points", "evaluation_points", "evaluation_points_deducted"
|
||||
)
|
||||
|
||||
evaluation_results = list(evaluation_results)
|
||||
points_max_count = sum(
|
||||
[result.get("evaluation_max_points", 0) for result in evaluation_results]
|
||||
)
|
||||
points_achieved_count = sum(
|
||||
[result.get("evaluation_points", 0) for result in evaluation_results]
|
||||
[
|
||||
(
|
||||
result.get("evaluation_points", 0)
|
||||
- result.get("evaluation_points_deducted", 0)
|
||||
)
|
||||
for result in evaluation_results
|
||||
]
|
||||
)
|
||||
|
||||
return CourseProgressType(
|
||||
|
|
|
|||
Loading…
Reference in New Issue