Add endpoint and button in admin ui
This commit is contained in:
parent
abb9b4b7db
commit
a407b76038
|
|
@ -25,6 +25,7 @@ from vbv_lernwelt.core.views import (
|
||||||
check_rate_limit,
|
check_rate_limit,
|
||||||
cypress_reset_view,
|
cypress_reset_view,
|
||||||
generate_web_component_icons,
|
generate_web_component_icons,
|
||||||
|
iterativ_test_coursesessions_reset_view,
|
||||||
permission_denied_view,
|
permission_denied_view,
|
||||||
rate_limit_exceeded_view,
|
rate_limit_exceeded_view,
|
||||||
vue_home,
|
vue_home,
|
||||||
|
|
@ -209,6 +210,13 @@ urlpatterns = [
|
||||||
name="t2l_sync",
|
name="t2l_sync",
|
||||||
),
|
),
|
||||||
|
|
||||||
|
# iterativ Test course sessions
|
||||||
|
path(
|
||||||
|
r"api/core/resetiterativsessions/",
|
||||||
|
iterativ_test_coursesessions_reset_view,
|
||||||
|
name="iterativ_test_coursesessions_reset_view",
|
||||||
|
),
|
||||||
|
|
||||||
path("server/graphql/",
|
path("server/graphql/",
|
||||||
csrf_exempt(GraphQLView.as_view(graphiql=True, schema=schema))),
|
csrf_exempt(GraphQLView.as_view(graphiql=True, schema=schema))),
|
||||||
# testing and debug
|
# testing and debug
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ from vbv_lernwelt.course.models import (
|
||||||
from vbv_lernwelt.course_session.models import (
|
from vbv_lernwelt.course_session.models import (
|
||||||
CourseSessionAssignment,
|
CourseSessionAssignment,
|
||||||
CourseSessionAttendanceCourse,
|
CourseSessionAttendanceCourse,
|
||||||
|
CourseSessionEdoniqTest,
|
||||||
)
|
)
|
||||||
from vbv_lernwelt.course_session_group.models import CourseSessionGroup
|
from vbv_lernwelt.course_session_group.models import CourseSessionGroup
|
||||||
from vbv_lernwelt.feedback.models import FeedbackResponse
|
from vbv_lernwelt.feedback.models import FeedbackResponse
|
||||||
|
|
@ -69,12 +70,11 @@ def create_or_update_uk(language="de"):
|
||||||
)
|
)
|
||||||
cs = CourseSession.objects.get(import_id=data["ID"])
|
cs = CourseSession.objects.get(import_id=data["ID"])
|
||||||
|
|
||||||
members, member_with_mentor, trainer, regionenleiter, mentor = reset_uk_users()
|
members, trainer, regionenleiter = get_or_create_users_uk()
|
||||||
delete_cs_data(cs, members + [member_with_mentor, trainer, regionenleiter, mentor])
|
delete_cs_data(cs, members + [trainer, regionenleiter])
|
||||||
|
|
||||||
add_to_course_session(cs, members + [member_with_mentor])
|
add_to_course_session(cs, members)
|
||||||
add_trainers_to_course_session(cs, [trainer], uk_circle_keys, language)
|
add_trainers_to_course_session(cs, [trainer], uk_circle_keys, language)
|
||||||
add_mentor_to_course_session(cs, [(mentor, member_with_mentor)])
|
|
||||||
create_and_add_to_cs_group(cs.course, IT_UK_TEST_REGION, [cs], regionenleiter)
|
create_and_add_to_cs_group(cs.course, IT_UK_TEST_REGION, [cs], regionenleiter)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -86,8 +86,9 @@ def create_or_update_vv(language="de"):
|
||||||
)
|
)
|
||||||
cs.title = IT_VV_TEST_COURSE
|
cs.title = IT_VV_TEST_COURSE
|
||||||
cs.save()
|
cs.save()
|
||||||
|
|
||||||
create_or_update_assignment_course_session(cs)
|
create_or_update_assignment_course_session(cs)
|
||||||
members, member_with_mentor, mentor = reset_vv_users()
|
members, member_with_mentor, mentor = get_or_create_users_vv()
|
||||||
delete_cs_data(cs, members + [member_with_mentor, mentor])
|
delete_cs_data(cs, members + [member_with_mentor, mentor])
|
||||||
|
|
||||||
add_to_course_session(cs, members + [member_with_mentor])
|
add_to_course_session(cs, members + [member_with_mentor])
|
||||||
|
|
@ -95,16 +96,26 @@ def create_or_update_vv(language="de"):
|
||||||
|
|
||||||
|
|
||||||
def delete_cs_data(cs: CourseSession, users: list[User]):
|
def delete_cs_data(cs: CourseSession, users: list[User]):
|
||||||
try:
|
if cs:
|
||||||
CourseCompletion.objects.filter(course_session=cs).delete()
|
CourseCompletion.objects.filter(course_session=cs).delete()
|
||||||
Notification.objects.filter(course_session=cs).delete()
|
Notification.objects.filter(course_session=cs).delete()
|
||||||
AssignmentCompletion.objects.filter(course_session=cs).delete()
|
AssignmentCompletion.objects.filter(course_session=cs).delete()
|
||||||
CourseSessionAttendanceCourse.objects.filter(course_session=cs).update(
|
CourseSessionAttendanceCourse.objects.filter(course_session=cs).update(
|
||||||
attendance_user_list=[]
|
attendance_user_list=[]
|
||||||
)
|
)
|
||||||
|
CourseSessionEdoniqTest.objects.filter(course_session=cs).delete()
|
||||||
CourseSessionUser.objects.filter(course_session=cs).delete()
|
CourseSessionUser.objects.filter(course_session=cs).delete()
|
||||||
LearningMentor.objects.filter(course=cs.course).delete()
|
learning_mentor_ids = (
|
||||||
except CourseSession.DoesNotExist:
|
LearningMentor.objects.filter(participants__course_session=cs)
|
||||||
|
.values_list("id", flat=True)
|
||||||
|
.distinct()
|
||||||
|
| LearningMentor.objects.filter(mentor__in=users)
|
||||||
|
.values_list("id", flat=True)
|
||||||
|
.distinct()
|
||||||
|
)
|
||||||
|
# cannot call delete on distinct objects
|
||||||
|
LearningMentor.objects.filter(id__in=list(learning_mentor_ids)).delete()
|
||||||
|
else:
|
||||||
logger.info("no_course_session_found", import_id=cs.import_id)
|
logger.info("no_course_session_found", import_id=cs.import_id)
|
||||||
|
|
||||||
FeedbackResponse.objects.filter(feedback_user__in=users).delete()
|
FeedbackResponse.objects.filter(feedback_user__in=users).delete()
|
||||||
|
|
@ -127,11 +138,11 @@ def add_mentor_to_course_session(
|
||||||
course_session: CourseSession, mentor_mentee_pairs: list[tuple[User, User]]
|
course_session: CourseSession, mentor_mentee_pairs: list[tuple[User, User]]
|
||||||
):
|
):
|
||||||
for mentor, mentee in mentor_mentee_pairs:
|
for mentor, mentee in mentor_mentee_pairs:
|
||||||
uk_mentor = LearningMentor.objects.create(
|
lm = LearningMentor.objects.create(
|
||||||
course=course_session.course,
|
course=course_session.course,
|
||||||
mentor=mentor,
|
mentor=mentor,
|
||||||
)
|
)
|
||||||
uk_mentor.participants.add(
|
lm.participants.add(
|
||||||
CourseSessionUser.objects.get(
|
CourseSessionUser.objects.get(
|
||||||
user__id=mentee.id,
|
user__id=mentee.id,
|
||||||
course_session=course_session,
|
course_session=course_session,
|
||||||
|
|
@ -162,20 +173,13 @@ def add_trainers_to_course_session(
|
||||||
csu.save()
|
csu.save()
|
||||||
|
|
||||||
|
|
||||||
def reset_uk_users():
|
def get_or_create_users_uk():
|
||||||
members = [
|
members = [
|
||||||
_create_or_update_user(
|
_create_or_update_user(
|
||||||
f"teilnehmer{n}.uk@iterativ.ch", "Teilnehmer üK", "Iterativ", PASSWORD, "de"
|
f"teilnehmer{n}.uk@iterativ.ch", "Teilnehmer üK", "Iterativ", PASSWORD, "de"
|
||||||
)
|
)
|
||||||
for n in range(1, 10)
|
for n in range(1, 10)
|
||||||
]
|
]
|
||||||
member_with_mentor = _create_or_update_user(
|
|
||||||
"teilnehmer1.uk.lb@iterativ.ch",
|
|
||||||
"Teilnehmer üK mit LB",
|
|
||||||
"Iterativ",
|
|
||||||
PASSWORD,
|
|
||||||
"de",
|
|
||||||
)
|
|
||||||
trainer = _create_or_update_user(
|
trainer = _create_or_update_user(
|
||||||
"trainer1.uk@iterativ.ch", "Trainer üK", "Iterativ", PASSWORD, "de"
|
"trainer1.uk@iterativ.ch", "Trainer üK", "Iterativ", PASSWORD, "de"
|
||||||
)
|
)
|
||||||
|
|
@ -186,17 +190,14 @@ def reset_uk_users():
|
||||||
PASSWORD,
|
PASSWORD,
|
||||||
"de",
|
"de",
|
||||||
)
|
)
|
||||||
mentor = _create_or_update_user(
|
return (
|
||||||
"lernbegleitung1.uk@iterativ.ch",
|
members,
|
||||||
"Lernbegleitung üK",
|
trainer,
|
||||||
"Iterativ",
|
regionenleiter,
|
||||||
PASSWORD,
|
|
||||||
"de",
|
|
||||||
)
|
)
|
||||||
return members, member_with_mentor, trainer, regionenleiter, mentor
|
|
||||||
|
|
||||||
|
|
||||||
def reset_vv_users():
|
def get_or_create_users_vv():
|
||||||
members = [
|
members = [
|
||||||
_create_or_update_user(
|
_create_or_update_user(
|
||||||
f"teilnehmer{n}.vv@iterativ.ch", "Teilnehmer VV", "Iterativ", PASSWORD, "de"
|
f"teilnehmer{n}.vv@iterativ.ch", "Teilnehmer VV", "Iterativ", PASSWORD, "de"
|
||||||
|
|
@ -179,6 +179,17 @@ def cypress_reset_view(request):
|
||||||
return HttpResponseRedirect("/server/admin/")
|
return HttpResponseRedirect("/server/admin/")
|
||||||
|
|
||||||
|
|
||||||
|
@api_view(["POST"])
|
||||||
|
@authentication_classes((authentication.SessionAuthentication,))
|
||||||
|
@permission_classes((IsAdminUser,))
|
||||||
|
def iterativ_test_coursesessions_reset_view(request):
|
||||||
|
call_command(
|
||||||
|
"reset_iterativ_test_sessions",
|
||||||
|
)
|
||||||
|
|
||||||
|
return HttpResponseRedirect("/server/admin/")
|
||||||
|
|
||||||
|
|
||||||
@django_view_authentication_exempt
|
@django_view_authentication_exempt
|
||||||
def generate_web_component_icons(request):
|
def generate_web_component_icons(request):
|
||||||
svg_files = []
|
svg_files = []
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,14 @@
|
||||||
<a href="{% url 'edoniq_export_students_and_trainers' %}" class="btn btn-primary">Teilnehmer
|
<a href="{% url 'edoniq_export_students_and_trainers' %}" class="btn btn-primary">Teilnehmer
|
||||||
und Trainer exportieren</a>
|
und Trainer exportieren</a>
|
||||||
|
|
||||||
|
<hr style="margin: 24px 0">
|
||||||
|
|
||||||
|
<form action="/api/core/resetiterativsessions/" method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
<p>Zurücksetzen der Iterativ Testdurchführungen (üK: "Iterativ üK Testkurs", VV: "Iterativ VV Testkurs")</p>
|
||||||
|
<button class="btn">Iterativ Testdurchführungen zurücksetzen</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
<hr style="margin: 24px 0">
|
<hr style="margin: 24px 0">
|
||||||
|
|
||||||
<form action="/api/core/cypressreset/" method="post">
|
<form action="/api/core/cypressreset/" method="post">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue