Add export for trainers
This commit is contained in:
parent
8e24cf707f
commit
95a6d404b5
|
|
@ -37,7 +37,7 @@ from vbv_lernwelt.course.views import (
|
|||
request_course_completion,
|
||||
request_course_completion_for_user,
|
||||
)
|
||||
from vbv_lernwelt.edoniq_test.views import export_students
|
||||
from vbv_lernwelt.edoniq_test.views import export_students, export_trainers
|
||||
from vbv_lernwelt.feedback.views import (
|
||||
get_expert_feedbacks_for_course,
|
||||
get_feedback_for_circle,
|
||||
|
|
@ -147,6 +147,7 @@ urlpatterns = [
|
|||
|
||||
# edoniq test
|
||||
path(r'api/core/edoniq-test/export-users/', export_students, name='edoniq_export_students'),
|
||||
path(r'api/core/edoniq-test/export-trainers/', export_trainers, name='edoniq_export_trainers'),
|
||||
|
||||
# importer
|
||||
path(
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ class EdoniqUserExportTestCase(TestCase):
|
|||
|
||||
user_data = [
|
||||
[
|
||||
user.user.additional_json_data.get("Lehrvertragsnummer", ""),
|
||||
user.user.id,
|
||||
user.user.first_name,
|
||||
user.user.last_name,
|
||||
"m",
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ from typing import List
|
|||
from django.contrib.admin.views.decorators import staff_member_required
|
||||
from django.http import HttpResponse
|
||||
|
||||
from vbv_lernwelt.core.models import User
|
||||
from vbv_lernwelt.course.consts import COURSE_UK, COURSE_UK_FR, COURSE_UK_IT
|
||||
from vbv_lernwelt.course.models import CourseSessionUser
|
||||
|
||||
|
|
@ -17,15 +18,27 @@ def export_students(request):
|
|||
return generate_export_response(course_session_users)
|
||||
|
||||
|
||||
def fetch_course_session_users(courses: List[int]):
|
||||
def export_trainers(request):
|
||||
course_session_users = fetch_course_session_users(
|
||||
UK_COURSE_IDS, role=CourseSessionUser.Role.EXPERT
|
||||
)
|
||||
return generate_export_response(course_session_users, role="Trainer")
|
||||
|
||||
|
||||
def fetch_course_session_users(courses: List[int], role=CourseSessionUser.Role.MEMBER):
|
||||
# if a user is in multiple courses, he should be exported multiple times
|
||||
# todo: check if this is the case otherwise use .distinct("user")
|
||||
return CourseSessionUser.objects.filter(
|
||||
course_session__course__id__in=courses, role=CourseSessionUser.Role.MEMBER
|
||||
).order_by("user__email")
|
||||
return (
|
||||
User.objects.filter(
|
||||
coursesessionuser__course_session__course__id__in=courses,
|
||||
coursesessionuser__role=role,
|
||||
)
|
||||
.order_by("email")
|
||||
.distinct()
|
||||
)
|
||||
|
||||
|
||||
def generate_export_response(cs_users: List[CourseSessionUser]) -> HttpResponse:
|
||||
def generate_export_response(cs_users: List[User], role="Lernende") -> HttpResponse:
|
||||
response = HttpResponse(content_type="text/csv")
|
||||
response[
|
||||
"Content-Disposition"
|
||||
|
|
@ -52,17 +65,17 @@ def generate_export_response(cs_users: List[CourseSessionUser]) -> HttpResponse:
|
|||
for cs_user in cs_users:
|
||||
writer.writerow(
|
||||
[
|
||||
cs_user.user.additional_json_data.get("Lehrvertragsnummer", ""),
|
||||
cs_user.user.first_name,
|
||||
cs_user.user.last_name,
|
||||
cs_user.id,
|
||||
cs_user.first_name,
|
||||
cs_user.last_name,
|
||||
"m",
|
||||
cs_user.user.language,
|
||||
cs_user.user.email,
|
||||
cs_user.user.additional_json_data.get("Geburtsdatum", ""),
|
||||
"Lernende",
|
||||
cs_user.user.additional_json_data.get("Firmenname", ""),
|
||||
cs_user.user.additional_json_data.get("Lehrvertragsnummer", ""),
|
||||
cs_user.course_session.import_id,
|
||||
cs_user.language,
|
||||
cs_user.email,
|
||||
cs_user.additional_json_data.get("Geburtsdatum", ""),
|
||||
role,
|
||||
cs_user.additional_json_data.get("Firmenname", ""),
|
||||
cs_user.additional_json_data.get("Lehrvertragsnummer", ""),
|
||||
cs_user.coursesessionuser_set.first().course_session.import_id,
|
||||
"",
|
||||
]
|
||||
)
|
||||
|
|
|
|||
|
|
@ -31,6 +31,9 @@
|
|||
<h2>Export Edoniq Teilnehmer</h2>
|
||||
<a href="{% url 'edoniq_export_students' %}" class="btn btn-primary">Teilnehmer exportieren</a>
|
||||
|
||||
<h2>Export Edoniq Trainer</h2>
|
||||
<a href="{% url 'edoniq_export_trainers' %}" class="btn btn-primary">Trainer exportieren</a>
|
||||
|
||||
<h1>Reset</h1>
|
||||
<form action="/api/core/cypressreset/" method="post">
|
||||
{% csrf_token %}
|
||||
|
|
|
|||
Loading…
Reference in New Issue