diff --git a/scripts/reset_password_to_test.py b/scripts/reset_password_to_test.py new file mode 100644 index 00000000..0e95c84a --- /dev/null +++ b/scripts/reset_password_to_test.py @@ -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) diff --git a/server/vbv_lernwelt/learning_mentor/models.py b/server/vbv_lernwelt/learning_mentor/models.py index d6d9ab52..3136b731 100644 --- a/server/vbv_lernwelt/learning_mentor/models.py +++ b/server/vbv_lernwelt/learning_mentor/models.py @@ -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) diff --git a/server/vbv_lernwelt/learning_mentor/services.py b/server/vbv_lernwelt/learning_mentor/services.py index 8dcc3bb7..aab557b9 100644 --- a/server/vbv_lernwelt/learning_mentor/services.py +++ b/server/vbv_lernwelt/learning_mentor/services.py @@ -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]: diff --git a/server/vbv_lernwelt/learning_mentor/signals.py b/server/vbv_lernwelt/learning_mentor/signals.py new file mode 100644 index 00000000..d41a52d9 --- /dev/null +++ b/server/vbv_lernwelt/learning_mentor/signals.py @@ -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) diff --git a/server/vbv_lernwelt/learning_mentor/tests/test_organisation_supervisor.py b/server/vbv_lernwelt/learning_mentor/tests/test_organisation_supervisor.py index e4ea8e30..b88fc302 100644 --- a/server/vbv_lernwelt/learning_mentor/tests/test_organisation_supervisor.py +++ b/server/vbv_lernwelt/learning_mentor/tests/test_organisation_supervisor.py @@ -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(