Fix utils
This commit is contained in:
parent
77dce844d3
commit
ed1375ba33
|
|
@ -254,6 +254,7 @@ function exportData() {
|
||||||
course_session_id: csId,
|
course_session_id: csId,
|
||||||
generation: "",
|
generation: "",
|
||||||
circle_id: "",
|
circle_id: "",
|
||||||
|
region: "",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
exportDataAsXls(items, exportPersons, userStore.language);
|
exportDataAsXls(items, exportPersons, userStore.language);
|
||||||
|
|
|
||||||
|
|
@ -139,9 +139,7 @@ class PersonsExportTestCase(ExportBaseTestCase):
|
||||||
self.assertEqual(wb.sheetnames[0], "Test Zürich 2022 a")
|
self.assertEqual(wb.sheetnames[0], "Test Zürich 2022 a")
|
||||||
wb.active = wb["Test Zürich 2022 a"]
|
wb.active = wb["Test Zürich 2022 a"]
|
||||||
|
|
||||||
data = self._generate_expected_data([[None] * 6])
|
self._check_export(wb, [[None] * 6], 1, 6)
|
||||||
|
|
||||||
self._check_export(wb, data, 1, 6)
|
|
||||||
|
|
||||||
def test_export_in_fr(self):
|
def test_export_in_fr(self):
|
||||||
activate("fr")
|
activate("fr")
|
||||||
|
|
|
||||||
|
|
@ -99,90 +99,98 @@ def create_person_list_with_roles(
|
||||||
user, course_session_ids=None, include_private_data=False
|
user, course_session_ids=None, include_private_data=False
|
||||||
):
|
):
|
||||||
def create_user_dict(user_object):
|
def create_user_dict(user_object):
|
||||||
def create_user_dict(user_object):
|
user_data = {
|
||||||
return {
|
"user_id": user_object.id,
|
||||||
"user_id": user_object.id,
|
"first_name": user_object.first_name,
|
||||||
"first_name": user_object.first_name,
|
"last_name": user_object.last_name,
|
||||||
"last_name": user_object.last_name,
|
"email": user_object.email,
|
||||||
"email": user_object.email,
|
"avatar_url_small": user_object.avatar_url_small,
|
||||||
"avatar_url_small": user_object.avatar_url_small,
|
"avatar_url": user_object.avatar_url,
|
||||||
"avatar_url": user_object.avatar_url,
|
"course_sessions": [],
|
||||||
"course_sessions": [],
|
}
|
||||||
}
|
if include_private_data:
|
||||||
|
user_data["phone_number"] = user_object.phone_number
|
||||||
course_sessions = get_course_sessions_with_roles_for_user(user)
|
user_data["Lehrvertragsnummer"] = user_object.additional_json_data.get(
|
||||||
|
"Lehrvertragsnummer", ""
|
||||||
result_persons = {}
|
|
||||||
for cs in course_sessions:
|
|
||||||
if has_cs_role(cs.roles) and cs.course.configuration.is_uk:
|
|
||||||
course_session_users = CourseSessionUser.objects.filter(
|
|
||||||
course_session=cs.id
|
|
||||||
).select_related("user")
|
|
||||||
my_role = user_role(cs.roles)
|
|
||||||
for csu in course_session_users:
|
|
||||||
person_data = result_persons.get(
|
|
||||||
csu.user.id, create_user_dict(csu.user)
|
|
||||||
)
|
|
||||||
person_data["course_sessions"].append(
|
|
||||||
create_course_session_dict(cs, my_role, csu.role)
|
|
||||||
)
|
|
||||||
result_persons[csu.user.id] = person_data
|
|
||||||
|
|
||||||
# add persons where request.user is mentor
|
|
||||||
for cs in course_sessions:
|
|
||||||
|
|
||||||
def _add_agent_relation(my_role, user_role):
|
|
||||||
course_session_entry = create_course_session_dict(
|
|
||||||
cs, my_role, user_role
|
|
||||||
)
|
|
||||||
participant_user = relation.participant.user
|
|
||||||
|
|
||||||
if participant_user.id not in result_persons:
|
|
||||||
person_data = create_user_dict(participant_user)
|
|
||||||
person_data["course_sessions"] = [course_session_entry]
|
|
||||||
result_persons[participant_user.id] = person_data
|
|
||||||
else:
|
|
||||||
# user is already in result_persons
|
|
||||||
result_persons[participant_user.id]["course_sessions"].append(
|
|
||||||
course_session_entry
|
|
||||||
)
|
|
||||||
|
|
||||||
if "LEARNING_MENTOR" in cs.roles:
|
|
||||||
for relation in AgentParticipantRelation.objects.filter(
|
|
||||||
agent=user,
|
|
||||||
participant__course_session_id=cs.id,
|
|
||||||
role="LEARNING_MENTOR",
|
|
||||||
):
|
|
||||||
_add_agent_relation("LEARNING_MENTOR", "PARTICIPANT")
|
|
||||||
|
|
||||||
if "BERUFSBILDNER" in cs.roles:
|
|
||||||
for relation in AgentParticipantRelation.objects.filter(
|
|
||||||
agent=user,
|
|
||||||
participant__course_session_id=cs.id,
|
|
||||||
role="BERUFSBILDNER",
|
|
||||||
):
|
|
||||||
_add_agent_relation("BERUFSBILDNER", "PARTICIPANT")
|
|
||||||
|
|
||||||
# add persons where request.user is lerning mentee
|
|
||||||
mentor_relation_qs = AgentParticipantRelation.objects.filter(
|
|
||||||
participant__user=user,
|
|
||||||
role=AgentParticipantRoleType.LEARNING_MENTOR.value,
|
|
||||||
).prefetch_related("agent")
|
|
||||||
for mentor_relation in mentor_relation_qs:
|
|
||||||
cs = mentor_relation.participant.course_session
|
|
||||||
course_session_entry = create_course_session_dict(
|
|
||||||
cs,
|
|
||||||
"PARTICIPANT",
|
|
||||||
"LEARNING_MENTOR",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if mentor_relation.agent.id not in result_persons:
|
return user_data
|
||||||
person_data = create_user_dict(mentor_relation.agent)
|
|
||||||
|
course_sessions = get_course_sessions_with_roles_for_user(user)
|
||||||
|
if course_session_ids:
|
||||||
|
course_sessions = [
|
||||||
|
csr for csr in course_sessions if csr._original.id in course_session_ids
|
||||||
|
]
|
||||||
|
|
||||||
|
result_persons = {}
|
||||||
|
for cs in course_sessions:
|
||||||
|
if has_cs_role(cs.roles) and cs.course.configuration.is_uk:
|
||||||
|
course_session_users = CourseSessionUser.objects.filter(
|
||||||
|
course_session=cs.id
|
||||||
|
).select_related("user")
|
||||||
|
my_role = user_role(cs.roles)
|
||||||
|
for csu in course_session_users:
|
||||||
|
person_data = result_persons.get(
|
||||||
|
csu.user.id, create_user_dict(csu.user)
|
||||||
|
)
|
||||||
|
person_data["course_sessions"].append(
|
||||||
|
create_course_session_dict(cs, my_role, csu.role)
|
||||||
|
)
|
||||||
|
result_persons[csu.user.id] = person_data
|
||||||
|
|
||||||
|
# add persons where request.user is mentor
|
||||||
|
for cs in course_sessions:
|
||||||
|
|
||||||
|
def _add_agent_relation(my_role, user_role):
|
||||||
|
course_session_entry = create_course_session_dict(cs, my_role, user_role)
|
||||||
|
participant_user = relation.participant.user
|
||||||
|
|
||||||
|
if participant_user.id not in result_persons:
|
||||||
|
person_data = create_user_dict(participant_user)
|
||||||
person_data["course_sessions"] = [course_session_entry]
|
person_data["course_sessions"] = [course_session_entry]
|
||||||
result_persons[mentor_relation.agent.id] = person_data
|
result_persons[participant_user.id] = person_data
|
||||||
else:
|
else:
|
||||||
# user is already in result_persons
|
# user is already in result_persons
|
||||||
result_persons[mentor_relation.agent.id]["course_sessions"].append(
|
result_persons[participant_user.id]["course_sessions"].append(
|
||||||
course_session_entry
|
course_session_entry
|
||||||
)
|
)
|
||||||
return result_persons.values()
|
|
||||||
|
if "LEARNING_MENTOR" in cs.roles:
|
||||||
|
for relation in AgentParticipantRelation.objects.filter(
|
||||||
|
agent=user,
|
||||||
|
participant__course_session_id=cs.id,
|
||||||
|
role="LEARNING_MENTOR",
|
||||||
|
):
|
||||||
|
_add_agent_relation("LEARNING_MENTOR", "PARTICIPANT")
|
||||||
|
|
||||||
|
if "BERUFSBILDNER" in cs.roles:
|
||||||
|
for relation in AgentParticipantRelation.objects.filter(
|
||||||
|
agent=user,
|
||||||
|
participant__course_session_id=cs.id,
|
||||||
|
role="BERUFSBILDNER",
|
||||||
|
):
|
||||||
|
_add_agent_relation("BERUFSBILDNER", "PARTICIPANT")
|
||||||
|
|
||||||
|
# add persons where request.user is lerning mentee
|
||||||
|
mentor_relation_qs = AgentParticipantRelation.objects.filter(
|
||||||
|
participant__user=user,
|
||||||
|
role=AgentParticipantRoleType.LEARNING_MENTOR.value,
|
||||||
|
).prefetch_related("agent")
|
||||||
|
for mentor_relation in mentor_relation_qs:
|
||||||
|
cs = mentor_relation.participant.course_session
|
||||||
|
course_session_entry = create_course_session_dict(
|
||||||
|
cs,
|
||||||
|
"PARTICIPANT",
|
||||||
|
"LEARNING_MENTOR",
|
||||||
|
)
|
||||||
|
|
||||||
|
if mentor_relation.agent.id not in result_persons:
|
||||||
|
person_data = create_user_dict(mentor_relation.agent)
|
||||||
|
person_data["course_sessions"] = [course_session_entry]
|
||||||
|
result_persons[mentor_relation.agent.id] = person_data
|
||||||
|
else:
|
||||||
|
# user is already in result_persons
|
||||||
|
result_persons[mentor_relation.agent.id]["course_sessions"].append(
|
||||||
|
course_session_entry
|
||||||
|
)
|
||||||
|
return result_persons.values()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue