Move `delete` code to signal

This commit is contained in:
Daniel Egger 2024-11-21 14:26:31 +01:00
parent 68938ba44b
commit e87ab1da57
5 changed files with 82 additions and 27 deletions

View File

@ -0,0 +1,24 @@
import json
import os
import sys
import django
from django.db import transaction
sys.path.append("../server")
os.environ.setdefault("IT_APP_ENVIRONMENT", "local")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.base")
django.setup()
from vbv_lernwelt.core.models import User
# Get the user whose password you want to use as the reference
reference_user = User.objects.get(email='axel.manderbach@lernetz.ch')
reference_user.set_password('test')
reference_user.save()
# Update the password for all users
with transaction.atomic():
User.objects.update(password=reference_user.password)

View File

@ -94,30 +94,10 @@ class OrganisationSupervisor(models.Model):
create_or_sync_ausbildungsverantwortlicher(
self.supervisor, self.organisation
)
else:
elif self.role == OrganisationSupervisortRoleType.BERUFSBILDNER.value:
from vbv_lernwelt.learning_mentor.services import (
create_or_sync_berufsbildner,
)
create_or_sync_berufsbildner(self.supervisor, self.organisation)
super().save(*args, **kwargs)
def delete(self, *args, **kwargs):
if (
self.role
== OrganisationSupervisortRoleType.AUSBILDUNGSVERANTWORTLICHER.value
):
from vbv_lernwelt.learning_mentor.services import (
delete_ausbildungsverantwortlicher_relation,
)
delete_ausbildungsverantwortlicher_relation(
self.supervisor, self.organisation
)
else:
from vbv_lernwelt.learning_mentor.services import (
delete_berufsbildner_relation,
)
delete_berufsbildner_relation(self.supervisor, self.organisation)
super().delete(*args, **kwargs)

View File

@ -39,7 +39,13 @@ def users_by_org(
def uk_cs_users_by_org(org: Organisation) -> set[CourseSessionUser]:
return users_by_org(org, True, UK_COURSES, excluded_course_sessions=[4, 5, 6])
return users_by_org(
org,
is_uk=True,
courses=UK_COURSES,
# ignore "Demo" course sessions
excluded_course_sessions=[4, 5, 6],
)
def vv_cs_users_by_org(org: Organisation) -> set[CourseSessionUser]:

View File

@ -0,0 +1,36 @@
import structlog
from django.db.models.signals import pre_delete
from django.dispatch import receiver
from vbv_lernwelt.learning_mentor.models import (
OrganisationSupervisor,
OrganisationSupervisortRoleType,
)
logger = structlog.get_logger(__name__)
# CourseSessionGroup
@receiver(
pre_delete,
sender=OrganisationSupervisor,
dispatch_uid="remove_org_supervisor_relations",
)
def remove_org_supervisor_relations(sender, instance: OrganisationSupervisor, **kwargs):
if (
instance.role
== OrganisationSupervisortRoleType.AUSBILDUNGSVERANTWORTLICHER.value
):
from vbv_lernwelt.learning_mentor.services import (
delete_ausbildungsverantwortlicher_relation,
)
delete_ausbildungsverantwortlicher_relation(
instance.supervisor, instance.organisation
)
elif instance.role == OrganisationSupervisortRoleType.BERUFSBILDNER.value:
from vbv_lernwelt.learning_mentor.services import (
delete_berufsbildner_relation,
)
delete_berufsbildner_relation(instance.supervisor, instance.organisation)

View File

@ -32,11 +32,20 @@ class OrganisationSupervisorTestCase(APITestCase):
self.course_session = create_course_session(course=self.course, title="Test VV")
self.course_config = CourseConfiguration.objects.get(course=self.course)
self.mobi = Organisation.objects.get_or_create(name_de="Die Mobiliar",
defaults={"organisation_id": 100, "name_de": "Die Mobiliar", })[
0]
self.baloise = Organisation.objects.get_or_create(name_de="Baloise",
defaults={"organisation_id": 101, "name_de": "Baloise", })[0]
self.mobi = Organisation.objects.get_or_create(
name_de="Die Mobiliar",
defaults={
"organisation_id": 100,
"name_de": "Die Mobiliar",
},
)[0]
self.baloise = Organisation.objects.get_or_create(
name_de="Baloise",
defaults={
"organisation_id": 101,
"name_de": "Baloise",
},
)[0]
self.supervisor = create_user("supervisor")
self.participant_1 = add_course_session_user(