Format code
This commit is contained in:
parent
08edf98e2a
commit
cce82b72ad
|
|
@ -1,5 +1,6 @@
|
|||
import { graphql } from "@/gql";
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const CoursePageFragment = graphql(`
|
||||
fragment CoursePageFields on CoursePageInterface {
|
||||
title
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@ import * as log from "loglevel";
|
|||
import type { CompetenceCertificate } from "@/types";
|
||||
import CompetenceAssignmentRow from "@/pages/competence/CompetenceAssignmentRow.vue";
|
||||
import { computed } from "vue";
|
||||
import ItProgress, { StatusCount } from "@/components/ui/ItProgress.vue";
|
||||
import type { StatusCount } from "@/components/ui/ItProgress.vue";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
|
||||
log.debug("CompetenceCertificateComponent setup");
|
||||
|
||||
|
|
@ -23,7 +24,7 @@ const totalPointsEvaluatedAssignments = computed(() => {
|
|||
const userPointsEvaluatedAssignments = computed(() => {
|
||||
return props.competenceCertificate.assignments.reduce((acc, assignment) => {
|
||||
if (assignment.completion?.completion_status === "EVALUATION_SUBMITTED") {
|
||||
return acc + assignment.completion.evaluation_points;
|
||||
return acc + (assignment.completion?.evaluation_points ?? 0);
|
||||
}
|
||||
return acc;
|
||||
}, 0);
|
||||
|
|
@ -70,6 +71,7 @@ const progressStatusCount = computed(() => {
|
|||
|
||||
<div
|
||||
v-for="assignment in props.competenceCertificate.assignments"
|
||||
:key="assignment.id"
|
||||
class="bg-white px-8"
|
||||
>
|
||||
<CompetenceAssignmentRow :assignment="assignment"></CompetenceAssignmentRow>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@ import graphene
|
|||
|
||||
from vbv_lernwelt.assignment.graphql.types import (
|
||||
AssignmentCompletionObjectType,
|
||||
AssignmentObjectType, resolve_assignment_completion,
|
||||
AssignmentObjectType,
|
||||
resolve_assignment_completion,
|
||||
)
|
||||
from vbv_lernwelt.assignment.models import Assignment
|
||||
from vbv_lernwelt.course.graphql.types import resolve_course_page
|
||||
|
|
@ -34,6 +35,9 @@ class AssignmentQuery(object):
|
|||
**kwargs,
|
||||
):
|
||||
return resolve_assignment_completion(
|
||||
info, assignment_id, course_session_id, learning_content_page_id,
|
||||
info,
|
||||
assignment_id,
|
||||
course_session_id,
|
||||
learning_content_page_id,
|
||||
assignment_user_id,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from vbv_lernwelt.assignment.models import Assignment, AssignmentCompletion
|
|||
from vbv_lernwelt.core.graphql.types import JSONStreamField
|
||||
from vbv_lernwelt.course.graphql.interfaces import CoursePageInterface
|
||||
from vbv_lernwelt.course.models import CourseSession
|
||||
from vbv_lernwelt.course.permissions import is_course_session_expert, has_course_access
|
||||
from vbv_lernwelt.course.permissions import has_course_access, is_course_session_expert
|
||||
from vbv_lernwelt.learnpath.graphql.types import LearningContentInterface
|
||||
|
||||
|
||||
|
|
@ -68,7 +68,10 @@ class AssignmentObjectType(DjangoObjectType):
|
|||
return self.find_attached_learning_content()
|
||||
|
||||
def resolve_completion(
|
||||
self, info, course_session_id, learning_content_page_id=None,
|
||||
self,
|
||||
info,
|
||||
course_session_id,
|
||||
learning_content_page_id=None,
|
||||
assignment_user_id=None,
|
||||
):
|
||||
if learning_content_page_id is None:
|
||||
|
|
@ -94,9 +97,9 @@ def resolve_assignment_completion(
|
|||
if assignment_user_id is None:
|
||||
assignment_user_id = info.context.user.id
|
||||
|
||||
if str(assignment_user_id) == str(
|
||||
info.context.user.id
|
||||
) or is_course_session_expert(info.context.user, course_session_id):
|
||||
if str(assignment_user_id) == str(info.context.user.id) or is_course_session_expert(
|
||||
info.context.user, course_session_id
|
||||
):
|
||||
course_id = CourseSession.objects.get(id=course_session_id).course_id
|
||||
if has_course_access(info.context.user, course_id):
|
||||
if learning_content_page_id is None:
|
||||
|
|
|
|||
|
|
@ -1,25 +1,42 @@
|
|||
# Generated by Django 3.2.20 on 2023-09-01 09:12
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('competence', '0003_competencecertificate_competencecertificatelist_competencenavipage'),
|
||||
('assignment', '0006_auto_20230823_1127'),
|
||||
(
|
||||
"competence",
|
||||
"0003_competencecertificate_competencecertificatelist_competencenavipage",
|
||||
),
|
||||
("assignment", "0006_auto_20230823_1127"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='assignment',
|
||||
name='competence_certificate',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='competence.competencecertificate'),
|
||||
model_name="assignment",
|
||||
name="competence_certificate",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
to="competence.competencecertificate",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='assignment',
|
||||
name='assignment_type',
|
||||
field=models.CharField(choices=[('CASEWORK', 'CASEWORK'), ('PREP_ASSIGNMENT', 'PREP_ASSIGNMENT'), ('REFLECTION', 'REFLECTION'), ('CONDITION_ACCEPTANCE', 'CONDITION_ACCEPTANCE'), ('EDONIQ_TEST', 'EDONIQ_TEST')], default='CASEWORK', max_length=50),
|
||||
model_name="assignment",
|
||||
name="assignment_type",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("CASEWORK", "CASEWORK"),
|
||||
("PREP_ASSIGNMENT", "PREP_ASSIGNMENT"),
|
||||
("REFLECTION", "REFLECTION"),
|
||||
("CONDITION_ACCEPTANCE", "CONDITION_ACCEPTANCE"),
|
||||
("EDONIQ_TEST", "EDONIQ_TEST"),
|
||||
],
|
||||
default="CASEWORK",
|
||||
max_length=50,
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
import wagtail_factories
|
||||
|
||||
from vbv_lernwelt.competence.models import (
|
||||
CompetenceCertificate,
|
||||
CompetenceCertificateList,
|
||||
CompetenceNaviPage,
|
||||
CompetencePage,
|
||||
CompetenceProfilePage,
|
||||
PerformanceCriteria,
|
||||
CompetenceCertificate,
|
||||
CompetenceNaviPage,
|
||||
CompetenceCertificateList,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import graphene
|
||||
|
||||
from vbv_lernwelt.competence.graphql.types import (
|
||||
CompetenceCertificateObjectType,
|
||||
CompetenceCertificateListObjectType,
|
||||
CompetenceCertificateObjectType,
|
||||
)
|
||||
from vbv_lernwelt.competence.models import (
|
||||
CompetenceCertificate,
|
||||
|
|
|
|||
|
|
@ -1,45 +1,74 @@
|
|||
# Generated by Django 3.2.20 on 2023-09-01 09:12
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wagtailcore', '0089_log_entry_data_json_null_to_object'),
|
||||
('competence', '0002_performancecriteria_learning_unit'),
|
||||
("wagtailcore", "0089_log_entry_data_json_null_to_object"),
|
||||
("competence", "0002_performancecriteria_learning_unit"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='CompetenceCertificate',
|
||||
name="CompetenceCertificate",
|
||||
fields=[
|
||||
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
|
||||
(
|
||||
"page_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="wagtailcore.page",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
"abstract": False,
|
||||
},
|
||||
bases=('wagtailcore.page',),
|
||||
bases=("wagtailcore.page",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CompetenceCertificateList',
|
||||
name="CompetenceCertificateList",
|
||||
fields=[
|
||||
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
|
||||
(
|
||||
"page_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="wagtailcore.page",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
"abstract": False,
|
||||
},
|
||||
bases=('wagtailcore.page',),
|
||||
bases=("wagtailcore.page",),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='CompetenceNaviPage',
|
||||
name="CompetenceNaviPage",
|
||||
fields=[
|
||||
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')),
|
||||
(
|
||||
"page_ptr",
|
||||
models.OneToOneField(
|
||||
auto_created=True,
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
parent_link=True,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to="wagtailcore.page",
|
||||
),
|
||||
),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
"abstract": False,
|
||||
},
|
||||
bases=('wagtailcore.page',),
|
||||
bases=("wagtailcore.page",),
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ from vbv_lernwelt.core.constants import (
|
|||
)
|
||||
from vbv_lernwelt.core.models import User
|
||||
from vbv_lernwelt.course.creators.test_course import (
|
||||
create_test_assignment_submitted_data,
|
||||
create_test_assignment_evaluation_data,
|
||||
create_edoniq_test_result_data,
|
||||
create_test_assignment_evaluation_data,
|
||||
create_test_assignment_submitted_data,
|
||||
)
|
||||
from vbv_lernwelt.course.models import CourseCompletion, CourseSession
|
||||
from vbv_lernwelt.notify.models import Notification
|
||||
|
|
|
|||
|
|
@ -135,12 +135,15 @@ def check_rate_limit(request):
|
|||
def cypress_reset_view(request):
|
||||
if not settings.APP_ENVIRONMENT.startswith("prod"):
|
||||
# Checking for the flags in the POST request
|
||||
create_assignment_completion = request.data.get(
|
||||
'create_assignment_completion') == 'true'
|
||||
create_assignment_evaluation = request.data.get(
|
||||
'create_assignment_evaluation') == 'true'
|
||||
create_edoniq_test_results = request.data.get(
|
||||
'create_edoniq_test_results') == 'true'
|
||||
create_assignment_completion = (
|
||||
request.data.get("create_assignment_completion") == "true"
|
||||
)
|
||||
create_assignment_evaluation = (
|
||||
request.data.get("create_assignment_evaluation") == "true"
|
||||
)
|
||||
create_edoniq_test_results = (
|
||||
request.data.get("create_edoniq_test_results") == "true"
|
||||
)
|
||||
|
||||
# TODO: Handle the flags as needed. For example:
|
||||
if create_assignment_completion:
|
||||
|
|
|
|||
|
|
@ -18,17 +18,17 @@ from vbv_lernwelt.assignment.models import (
|
|||
)
|
||||
from vbv_lernwelt.assignment.services import update_assignment_completion
|
||||
from vbv_lernwelt.assignment.tests.assignment_factories import (
|
||||
AssignmentListPageFactory,
|
||||
AssignmentFactory,
|
||||
AssignmentListPageFactory,
|
||||
EvaluationTaskBlockFactory,
|
||||
)
|
||||
from vbv_lernwelt.competence.factories import (
|
||||
CompetenceCertificateFactory,
|
||||
CompetenceCertificateListFactory,
|
||||
CompetenceNaviPageFactory,
|
||||
CompetencePageFactory,
|
||||
CompetenceProfilePageFactory,
|
||||
PerformanceCriteriaFactory,
|
||||
CompetenceNaviPageFactory,
|
||||
CompetenceCertificateListFactory,
|
||||
CompetenceCertificateFactory,
|
||||
)
|
||||
from vbv_lernwelt.competence.models import CompetencePage
|
||||
from vbv_lernwelt.core.constants import (
|
||||
|
|
|
|||
|
|
@ -1,25 +1,38 @@
|
|||
# Generated by Django 3.2.20 on 2023-09-01 09:12
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('assignment', '0007_auto_20230901_1112'),
|
||||
('learnpath', '0003_auto_20230810_0817'),
|
||||
("assignment", "0007_auto_20230901_1112"),
|
||||
("learnpath", "0003_auto_20230810_0817"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='learningcontentedoniqtest',
|
||||
name='content_assignment',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='assignment.assignment'),
|
||||
model_name="learningcontentedoniqtest",
|
||||
name="content_assignment",
|
||||
field=models.ForeignKey(
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
to="assignment.assignment",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='learningcontentassignment',
|
||||
name='assignment_type',
|
||||
field=models.CharField(choices=[('CASEWORK', 'CASEWORK'), ('PREP_ASSIGNMENT', 'PREP_ASSIGNMENT'), ('REFLECTION', 'REFLECTION'), ('CONDITION_ACCEPTANCE', 'CONDITION_ACCEPTANCE'), ('EDONIQ_TEST', 'EDONIQ_TEST')], default='CASEWORK', max_length=50),
|
||||
model_name="learningcontentassignment",
|
||||
name="assignment_type",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("CASEWORK", "CASEWORK"),
|
||||
("PREP_ASSIGNMENT", "PREP_ASSIGNMENT"),
|
||||
("REFLECTION", "REFLECTION"),
|
||||
("CONDITION_ACCEPTANCE", "CONDITION_ACCEPTANCE"),
|
||||
("EDONIQ_TEST", "EDONIQ_TEST"),
|
||||
],
|
||||
default="CASEWORK",
|
||||
max_length=50,
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
|
|||
|
|
@ -4,15 +4,23 @@ from django.db import migrations, models
|
|||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('notify', '0003_truncate_notifications'),
|
||||
("notify", "0003_truncate_notifications"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='notification',
|
||||
name='notification_trigger',
|
||||
field=models.CharField(choices=[('ATTENDANCE_COURSE_REMINDER', 'Attendance Course Reminder'), ('CASEWORK_SUBMITTED', 'Casework Submitted'), ('CASEWORK_EVALUATED', 'Casework Evaluated'), ('NEW_FEEDBACK', 'New Feedback')], default='', max_length=255),
|
||||
model_name="notification",
|
||||
name="notification_trigger",
|
||||
field=models.CharField(
|
||||
choices=[
|
||||
("ATTENDANCE_COURSE_REMINDER", "Attendance Course Reminder"),
|
||||
("CASEWORK_SUBMITTED", "Casework Submitted"),
|
||||
("CASEWORK_EVALUATED", "Casework Evaluated"),
|
||||
("NEW_FEEDBACK", "New Feedback"),
|
||||
],
|
||||
default="",
|
||||
max_length=255,
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
|
|||
Loading…
Reference in New Issue