From 25a107e5b21b9281f84d48ab8e4a4cbae5760a6d Mon Sep 17 00:00:00 2001 From: Gagaro Date: Fri, 4 Oct 2024 15:50:50 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20OS-1274:=20Back-office=20>=20Finan=C3=A7a?= =?UTF-8?q?bilit=C3=A9=20>=20Passage=20=C3=A0=20l'=C3=A9tat=20"D=C3=A9roga?= =?UTF-8?q?tion=20accord=C3=A9e"=20:=20enregistrer=20une=20valeur=20pour?= =?UTF-8?q?=20financability=5Frule=5Festablished=5Fby=5Fid=20et=20=20finan?= =?UTF-8?q?cability=5Frule=5Festablished=5Fon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin.py | 8 +-- contrib/models/doctorate.py | 12 ++-- contrib/models/general_education.py | 10 +-- .../preparation/domain/model/proposition.py | 16 ++--- .../doctorat/preparation/dtos/proposition.py | 4 +- ...ier_financabilite_non_concernee_service.py | 2 +- ...t_specifier_financabilite_regle_service.py | 4 +- ...ier_financabilite_non_concernee_service.py | 1 - .../specifier_financabilite_regle_service.py | 1 - ddd/admission/formation_generale/commands.py | 2 - .../domain/model/proposition.py | 16 ++--- .../formation_generale/dtos/proposition.py | 4 +- ...ier_financabilite_non_concernee_service.py | 3 +- ...t_specifier_financabilite_regle_service.py | 6 +- ...ier_financabilite_non_concernee_service.py | 1 - .../specifier_financabilite_regle_service.py | 1 - .../repository/in_memory/proposition.py | 4 +- .../preparation/repository/proposition.py | 24 +++---- .../repository/in_memory/proposition.py | 12 ++-- .../repository/proposition.py | 34 +++++---- locale/en/LC_MESSAGES/django.po | 6 +- locale/fr_BE/LC_MESSAGES/django.po | 12 ++-- .../0226_rename_financability_established.py | 69 +++++++++++++++++++ services/injection_epc/injection_dossier.py | 4 +- tasks/injecter_dossier_a_epc.py | 4 +- .../includes/checklist/financabilite.html | 4 +- .../checklist/financeabilty_info.html | 4 +- ...st_get_proposition_dto_for_gestionnaire.py | 12 ++-- tests/exports/test_admission_recap.py | 8 +-- .../doctorate/checklist/test_financability.py | 34 +++++++-- .../checklist/test_financability.py | 34 +++++++-- views/common/mixins.py | 4 +- .../details/checklist/financeability.py | 4 +- views/general_education/details/checklist.py | 9 +-- 34 files changed, 238 insertions(+), 135 deletions(-) create mode 100644 migrations/0226_rename_financability_established.py diff --git a/admin.py b/admin.py index 71e8b732b..919961f0b 100644 --- a/admin.py +++ b/admin.py @@ -217,7 +217,7 @@ class DoctorateAdmissionAdmin(AdmissionAdminMixin): 'financability_computed_rule', 'financability_computed_rule_situation', 'financability_computed_rule_on', - 'financability_rule_established_by', + 'financability_established_by', 'financability_dispensation_first_notification_on', 'financability_dispensation_first_notification_by', 'financability_dispensation_last_notification_on', @@ -259,7 +259,7 @@ class GeneralEducationAdmissionAdmin(AdmissionAdminMixin): 'financability_computed_rule', 'financability_computed_rule_situation', 'financability_computed_rule_on', - 'financability_rule_established_by', + 'financability_established_by', 'financability_dispensation_first_notification_on', 'financability_dispensation_first_notification_by', 'financability_dispensation_last_notification_on', @@ -682,8 +682,8 @@ def queryset(self, request, queryset): When( ~Q(checklist__current__financabilite__status__in=['INITIAL_NON_CONCERNE', 'GEST_REUSSITE']) | Q(generaleducationadmission__financability_rule='') - | Q(generaleducationadmission__financability_rule_established_on__isnull=True) - | Q(generaleducationadmission__financability_rule_established_by_id__isnull=True), + | Q(generaleducationadmission__financability_established_on__isnull=True) + | Q(generaleducationadmission__financability_established_by_id__isnull=True), generaleducationadmission__isnull=False, then=Value(False), ), diff --git a/contrib/models/doctorate.py b/contrib/models/doctorate.py index 5676c6385..781abdd00 100644 --- a/contrib/models/doctorate.py +++ b/contrib/models/doctorate.py @@ -427,16 +427,16 @@ class DoctorateAdmission(BaseAdmission): default='', blank=True, ) - financability_rule_established_by = models.ForeignKey( + financability_established_by = models.ForeignKey( 'base.Person', - verbose_name=_('Financability rule established by'), + verbose_name=_('Financability established by'), on_delete=models.PROTECT, related_name='+', null=True, editable=False, ) - financability_rule_established_on = models.DateTimeField( - verbose_name=_('Financability rule established on'), + financability_established_on = models.DateTimeField( + verbose_name=_('Financability established on'), null=True, editable=False, ) @@ -891,7 +891,7 @@ def get_queryset(self): "accounting", "international_scholarship", "last_update_author", - "financability_rule_established_by", + "financability_established_by", "financability_dispensation_first_notification_by", "financability_dispensation_last_notification_by", ) @@ -932,7 +932,7 @@ def for_manager_dto(self): return ( self.for_dto() .select_related( - "financability_rule_established_by", + "financability_established_by", "financability_dispensation_first_notification_by", "financability_dispensation_last_notification_by", "other_training_accepted_by_fac__academic_year", diff --git a/contrib/models/general_education.py b/contrib/models/general_education.py index f7d3540a6..0c05d0c6f 100644 --- a/contrib/models/general_education.py +++ b/contrib/models/general_education.py @@ -172,16 +172,16 @@ class GeneralEducationAdmission(BaseAdmission): default='', blank=True, ) - financability_rule_established_by = models.ForeignKey( + financability_established_by = models.ForeignKey( 'base.Person', - verbose_name=_('Financability rule established by'), + verbose_name=_('Financability established by'), on_delete=models.PROTECT, related_name='+', null=True, editable=False, ) - financability_rule_established_on = models.DateTimeField( - verbose_name=_('Financability rule established on'), + financability_established_on = models.DateTimeField( + verbose_name=_('Financability established on'), null=True, editable=False, ) @@ -560,7 +560,7 @@ def get_queryset(self): "international_scholarship", "erasmus_mundus_scholarship", "diplomatic_post", - "financability_rule_established_by", + "financability_established_by", "financability_dispensation_first_notification_by", "financability_dispensation_last_notification_by", "accounting", diff --git a/ddd/admission/doctorat/preparation/domain/model/proposition.py b/ddd/admission/doctorat/preparation/domain/model/proposition.py index a536bcf52..2f54ab96c 100644 --- a/ddd/admission/doctorat/preparation/domain/model/proposition.py +++ b/ddd/admission/doctorat/preparation/domain/model/proposition.py @@ -195,8 +195,8 @@ class Proposition(interface.RootEntity): financabilite_regle_calcule_situation: Optional[SituationFinancabilite] = None financabilite_regle_calcule_le: Optional[datetime.datetime] = None financabilite_regle: Optional[SituationFinancabilite] = None - financabilite_regle_etabli_par: str = '' - financabilite_regle_etabli_le: Optional[datetime.datetime] = None + financabilite_etabli_par: str = '' + financabilite_etabli_le: Optional[datetime.datetime] = None financabilite_derogation_statut: Optional[DerogationFinancement] = None financabilite_derogation_premiere_notification_le: Optional[datetime.datetime] = None @@ -823,12 +823,11 @@ def specifier_financabilite_resultat_calcul( def specifier_financabilite_regle( self, financabilite_regle: SituationFinancabilite, - etabli_par: str, auteur_modification: str, ): self.financabilite_regle = financabilite_regle - self.financabilite_regle_etabli_par = etabli_par - self.financabilite_regle_etabli_le = datetime.datetime.now() + self.financabilite_etabli_par = auteur_modification + self.financabilite_etabli_le = datetime.datetime.now() self.auteur_derniere_modification = auteur_modification if financabilite_regle in SITUATION_FINANCABILITE_PAR_ETAT[EtatFinancabilite.FINANCABLE]: @@ -846,12 +845,11 @@ def specifier_financabilite_regle( def specifier_financabilite_non_concernee( self, - etabli_par: str, auteur_modification: str, ): self.financabilite_regle = None - self.financabilite_regle_etabli_par = etabli_par - self.financabilite_regle_etabli_le = datetime.datetime.now() + self.financabilite_etabli_par = auteur_modification + self.financabilite_etabli_le = datetime.datetime.now() self.auteur_derniere_modification = auteur_modification self.checklist_actuelle.financabilite = StatutChecklist( statut=ChoixStatutChecklist.INITIAL_NON_CONCERNE, @@ -865,6 +863,8 @@ def specifier_derogation_financabilite( refus_autres_motifs: Optional[List[str]], auteur_modification: str, ): + self.financabilite_etabli_par = auteur_modification + self.financabilite_etabli_le = datetime.datetime.now() self.auteur_derniere_modification = auteur_modification self.financabilite_derogation_statut = statut if statut == DerogationFinancement.REFUS_DE_DEROGATION_FACULTAIRE: diff --git a/ddd/admission/doctorat/preparation/dtos/proposition.py b/ddd/admission/doctorat/preparation/dtos/proposition.py index bb8efdeb2..c987a5fd6 100644 --- a/ddd/admission/doctorat/preparation/dtos/proposition.py +++ b/ddd/admission/doctorat/preparation/dtos/proposition.py @@ -115,8 +115,8 @@ class PropositionDTO(interface.DTO): financabilite_regle_calcule_situation: str financabilite_regle_calcule_le: Optional[datetime.datetime] financabilite_regle: str - financabilite_regle_etabli_par: str - financabilite_regle_etabli_le: Optional[datetime.datetime] + financabilite_etabli_par: str + financabilite_etabli_le: Optional[datetime.datetime] financabilite_derogation_statut: str financabilite_derogation_premiere_notification_le: Optional[datetime.datetime] diff --git a/ddd/admission/doctorat/preparation/test/use_case/write/test_specifier_financabilite_non_concernee_service.py b/ddd/admission/doctorat/preparation/test/use_case/write/test_specifier_financabilite_non_concernee_service.py index 24e6238b9..6814f9f9f 100644 --- a/ddd/admission/doctorat/preparation/test/use_case/write/test_specifier_financabilite_non_concernee_service.py +++ b/ddd/admission/doctorat/preparation/test/use_case/write/test_specifier_financabilite_non_concernee_service.py @@ -70,5 +70,5 @@ def test_should_specifier_etre_non_specifie(self): # Proposition mise à jour self.assertIsNone(proposition.financabilite_regle) - self.assertEqual(proposition.financabilite_regle_etabli_par, 'uuid-GESTIONNAIRE') + self.assertEqual(proposition.financabilite_etabli_par, '0123456789') self.assertEqual(proposition.checklist_actuelle.financabilite.statut, ChoixStatutChecklist.INITIAL_NON_CONCERNE) diff --git a/ddd/admission/doctorat/preparation/test/use_case/write/test_specifier_financabilite_regle_service.py b/ddd/admission/doctorat/preparation/test/use_case/write/test_specifier_financabilite_regle_service.py index 8d4bdb802..50828da67 100644 --- a/ddd/admission/doctorat/preparation/test/use_case/write/test_specifier_financabilite_regle_service.py +++ b/ddd/admission/doctorat/preparation/test/use_case/write/test_specifier_financabilite_regle_service.py @@ -87,7 +87,7 @@ def test_should_specifier_regle_etre_ok(self): # Proposition mise à jour self.assertEqual(proposition.financabilite_regle, SituationFinancabilite.REPRISE_APRES_5_ANS) - self.assertEqual(proposition.financabilite_regle_etabli_par, 'uuid-GESTIONNAIRE') + self.assertEqual(proposition.financabilite_etabli_par, '0123456789') self.assertEqual(proposition.checklist_actuelle.financabilite.statut, ChoixStatutChecklist.GEST_REUSSITE) def test_should_specifier_regle_non_financable_etre_ok(self): @@ -107,5 +107,5 @@ def test_should_specifier_regle_non_financable_etre_ok(self): # Proposition mise à jour self.assertEqual(proposition.financabilite_regle, SituationFinancabilite.N_A_PAS_VALIDE_60_CREDITS_BLOC_1) - self.assertEqual(proposition.financabilite_regle_etabli_par, 'uuid-GESTIONNAIRE') + self.assertEqual(proposition.financabilite_etabli_par, '0123456789') self.assertEqual(proposition.checklist_actuelle.financabilite.statut, ChoixStatutChecklist.GEST_BLOCAGE) diff --git a/ddd/admission/doctorat/preparation/use_case/write/specifier_financabilite_non_concernee_service.py b/ddd/admission/doctorat/preparation/use_case/write/specifier_financabilite_non_concernee_service.py index 924420cc4..fc58f08e9 100644 --- a/ddd/admission/doctorat/preparation/use_case/write/specifier_financabilite_non_concernee_service.py +++ b/ddd/admission/doctorat/preparation/use_case/write/specifier_financabilite_non_concernee_service.py @@ -43,7 +43,6 @@ def specifier_financabilite_non_concernee( # THEN proposition.specifier_financabilite_non_concernee( - cmd.etabli_par, cmd.gestionnaire, ) proposition_repository.save(proposition) diff --git a/ddd/admission/doctorat/preparation/use_case/write/specifier_financabilite_regle_service.py b/ddd/admission/doctorat/preparation/use_case/write/specifier_financabilite_regle_service.py index 9868b00e1..82a038d12 100644 --- a/ddd/admission/doctorat/preparation/use_case/write/specifier_financabilite_regle_service.py +++ b/ddd/admission/doctorat/preparation/use_case/write/specifier_financabilite_regle_service.py @@ -41,7 +41,6 @@ def specifier_financabilite_regle( # THEN proposition.specifier_financabilite_regle( SituationFinancabilite[cmd.financabilite_regle], - cmd.etabli_par, cmd.gestionnaire, ) proposition_repository.save(proposition) diff --git a/ddd/admission/formation_generale/commands.py b/ddd/admission/formation_generale/commands.py index d8060c953..fea40b793 100644 --- a/ddd/admission/formation_generale/commands.py +++ b/ddd/admission/formation_generale/commands.py @@ -523,14 +523,12 @@ class SpecifierFinancabiliteResultatCalculCommand(interface.CommandRequest): class SpecifierFinancabiliteRegleCommand(interface.CommandRequest): uuid_proposition: str financabilite_regle: str - etabli_par: str gestionnaire: str @attr.dataclass(frozen=True, slots=True) class SpecifierFinancabiliteNonConcerneeCommand(interface.CommandRequest): uuid_proposition: str - etabli_par: str gestionnaire: str diff --git a/ddd/admission/formation_generale/domain/model/proposition.py b/ddd/admission/formation_generale/domain/model/proposition.py index 564d6d7e5..541ee0348 100644 --- a/ddd/admission/formation_generale/domain/model/proposition.py +++ b/ddd/admission/formation_generale/domain/model/proposition.py @@ -166,8 +166,8 @@ class Proposition(interface.RootEntity): financabilite_regle_calcule_situation: SituationFinancabilite = '' financabilite_regle_calcule_le: Optional[datetime.datetime] = None financabilite_regle: SituationFinancabilite = '' - financabilite_regle_etabli_par: str = '' - financabilite_regle_etabli_le: Optional[datetime.datetime] = None + financabilite_etabli_par: str = '' + financabilite_etabli_le: Optional[datetime.datetime] = None financabilite_derogation_statut: DerogationFinancement = '' financabilite_derogation_premiere_notification_le: Optional[datetime.datetime] = None @@ -818,12 +818,11 @@ def specifier_financabilite_resultat_calcul( def specifier_financabilite_regle( self, financabilite_regle: SituationFinancabilite, - etabli_par: str, auteur_modification: str, ): self.financabilite_regle = financabilite_regle - self.financabilite_regle_etabli_par = etabli_par - self.financabilite_regle_etabli_le = now() + self.financabilite_etabli_par = auteur_modification + self.financabilite_etabli_le = now() self.auteur_derniere_modification = auteur_modification if financabilite_regle in SITUATION_FINANCABILITE_PAR_ETAT[EtatFinancabilite.FINANCABLE]: @@ -841,12 +840,11 @@ def specifier_financabilite_regle( def specifier_financabilite_non_concernee( self, - etabli_par: str, auteur_modification: str, ): self.financabilite_regle = None - self.financabilite_regle_etabli_par = etabli_par - self.financabilite_regle_etabli_le = now() + self.financabilite_etabli_par = auteur_modification + self.financabilite_etabli_le = now() self.auteur_derniere_modification = auteur_modification self.checklist_actuelle.financabilite = StatutChecklist( statut=ChoixStatutChecklist.INITIAL_NON_CONCERNE, @@ -860,6 +858,8 @@ def specifier_derogation_financabilite( refus_autres_motifs: Optional[List[str]], auteur_modification: str, ): + self.financabilite_etabli_par = auteur_modification + self.financabilite_etabli_le = now() self.auteur_derniere_modification = auteur_modification self.financabilite_derogation_statut = statut if statut == DerogationFinancement.REFUS_DE_DEROGATION_FACULTAIRE: diff --git a/ddd/admission/formation_generale/dtos/proposition.py b/ddd/admission/formation_generale/dtos/proposition.py index 7d1fd2891..4e97745e1 100644 --- a/ddd/admission/formation_generale/dtos/proposition.py +++ b/ddd/admission/formation_generale/dtos/proposition.py @@ -92,8 +92,8 @@ class PropositionDTO(interface.DTO): financabilite_regle_calcule_situation: str financabilite_regle_calcule_le: Optional[datetime.datetime] financabilite_regle: str - financabilite_regle_etabli_par: str - financabilite_regle_etabli_le: Optional[datetime.datetime] + financabilite_etabli_par: str + financabilite_etabli_le: Optional[datetime.datetime] financabilite_derogation_statut: str financabilite_derogation_premiere_notification_le: Optional[datetime.datetime] diff --git a/ddd/admission/formation_generale/test/use_case/write/test_specifier_financabilite_non_concernee_service.py b/ddd/admission/formation_generale/test/use_case/write/test_specifier_financabilite_non_concernee_service.py index 1ca5bc5cb..fc901c9aa 100644 --- a/ddd/admission/formation_generale/test/use_case/write/test_specifier_financabilite_non_concernee_service.py +++ b/ddd/admission/formation_generale/test/use_case/write/test_specifier_financabilite_non_concernee_service.py @@ -56,7 +56,6 @@ def setUp(self) -> None: self.command = SpecifierFinancabiliteNonConcerneeCommand( uuid_proposition='uuid-CERTIFICATE-CONFIRMED', - etabli_par='uuid-GESTIONNAIRE', gestionnaire='0123456789', ) @@ -70,5 +69,5 @@ def test_should_specifier_etre_non_specifie(self): # Proposition mise à jour self.assertIsNone(proposition.financabilite_regle) - self.assertEqual(proposition.financabilite_regle_etabli_par, 'uuid-GESTIONNAIRE') + self.assertEqual(proposition.financabilite_etabli_par, '0123456789') self.assertEqual(proposition.checklist_actuelle.financabilite.statut, ChoixStatutChecklist.INITIAL_NON_CONCERNE) diff --git a/ddd/admission/formation_generale/test/use_case/write/test_specifier_financabilite_regle_service.py b/ddd/admission/formation_generale/test/use_case/write/test_specifier_financabilite_regle_service.py index b69d09595..fc0600cb6 100644 --- a/ddd/admission/formation_generale/test/use_case/write/test_specifier_financabilite_regle_service.py +++ b/ddd/admission/formation_generale/test/use_case/write/test_specifier_financabilite_regle_service.py @@ -73,7 +73,6 @@ def setUp(self) -> None: self.command = SpecifierFinancabiliteRegleCommand( uuid_proposition='uuid-MASTER-SCI-CONFIRMED', financabilite_regle=SituationFinancabilite.REPRISE_APRES_5_ANS.name, - etabli_par='uuid-GESTIONNAIRE', gestionnaire='0123456789', ) @@ -87,14 +86,13 @@ def test_should_specifier_regle_etre_ok(self): # Proposition mise à jour self.assertEqual(proposition.financabilite_regle, SituationFinancabilite.REPRISE_APRES_5_ANS) - self.assertEqual(proposition.financabilite_regle_etabli_par, 'uuid-GESTIONNAIRE') + self.assertEqual(proposition.financabilite_etabli_par, '0123456789') self.assertEqual(proposition.checklist_actuelle.financabilite.statut, ChoixStatutChecklist.GEST_REUSSITE) def test_should_specifier_regle_non_financable_etre_ok(self): command = SpecifierFinancabiliteRegleCommand( uuid_proposition='uuid-MASTER-SCI-CONFIRMED', financabilite_regle=SituationFinancabilite.N_A_PAS_VALIDE_60_CREDITS_BLOC_1.name, - etabli_par='uuid-GESTIONNAIRE', gestionnaire='0123456789', ) @@ -107,5 +105,5 @@ def test_should_specifier_regle_non_financable_etre_ok(self): # Proposition mise à jour self.assertEqual(proposition.financabilite_regle, SituationFinancabilite.N_A_PAS_VALIDE_60_CREDITS_BLOC_1) - self.assertEqual(proposition.financabilite_regle_etabli_par, 'uuid-GESTIONNAIRE') + self.assertEqual(proposition.financabilite_etabli_par, '0123456789') self.assertEqual(proposition.checklist_actuelle.financabilite.statut, ChoixStatutChecklist.GEST_BLOCAGE) diff --git a/ddd/admission/formation_generale/use_case/write/specifier_financabilite_non_concernee_service.py b/ddd/admission/formation_generale/use_case/write/specifier_financabilite_non_concernee_service.py index 1db3650e9..bb8fda410 100644 --- a/ddd/admission/formation_generale/use_case/write/specifier_financabilite_non_concernee_service.py +++ b/ddd/admission/formation_generale/use_case/write/specifier_financabilite_non_concernee_service.py @@ -43,7 +43,6 @@ def specifier_financabilite_non_concernee( # THEN proposition.specifier_financabilite_non_concernee( - cmd.etabli_par, cmd.gestionnaire, ) proposition_repository.save(proposition) diff --git a/ddd/admission/formation_generale/use_case/write/specifier_financabilite_regle_service.py b/ddd/admission/formation_generale/use_case/write/specifier_financabilite_regle_service.py index 476c38aa8..ddd504a34 100644 --- a/ddd/admission/formation_generale/use_case/write/specifier_financabilite_regle_service.py +++ b/ddd/admission/formation_generale/use_case/write/specifier_financabilite_regle_service.py @@ -43,7 +43,6 @@ def specifier_financabilite_regle( # THEN proposition.specifier_financabilite_regle( SituationFinancabilite[cmd.financabilite_regle], - cmd.etabli_par, cmd.gestionnaire, ) proposition_repository.save(proposition) diff --git a/infrastructure/admission/doctorat/preparation/repository/in_memory/proposition.py b/infrastructure/admission/doctorat/preparation/repository/in_memory/proposition.py index 9f1e99525..d654222d2 100644 --- a/infrastructure/admission/doctorat/preparation/repository/in_memory/proposition.py +++ b/infrastructure/admission/doctorat/preparation/repository/in_memory/proposition.py @@ -303,8 +303,8 @@ def _load_dto(cls, proposition: 'Proposition'): else '', financabilite_regle_calcule_le=proposition.financabilite_regle_calcule_le, financabilite_regle=proposition.financabilite_regle.name if proposition.financabilite_regle else '', - financabilite_regle_etabli_par=proposition.financabilite_regle_etabli_par, - financabilite_regle_etabli_le=proposition.financabilite_regle_etabli_le, + financabilite_etabli_par=proposition.financabilite_etabli_par, + financabilite_etabli_le=proposition.financabilite_etabli_le, financabilite_derogation_statut=proposition.financabilite_derogation_statut.name if proposition.financabilite_derogation_statut else '', diff --git a/infrastructure/admission/doctorat/preparation/repository/proposition.py b/infrastructure/admission/doctorat/preparation/repository/proposition.py index 2b6a7c4d5..a1c70a283 100644 --- a/infrastructure/admission/doctorat/preparation/repository/proposition.py +++ b/infrastructure/admission/doctorat/preparation/repository/proposition.py @@ -228,10 +228,10 @@ def _instantiate_admission(admission: 'DoctorateAdmission') -> 'Proposition': financabilite_regle=SituationFinancabilite[admission.financability_rule] if admission.financability_rule else None, - financabilite_regle_etabli_par=admission.financability_rule_established_by.uuid - if admission.financability_rule_established_by + financabilite_etabli_par=admission.financability_established_by.global_id + if admission.financability_established_by else None, - financabilite_regle_etabli_le=admission.financability_rule_established_on, + financabilite_etabli_le=admission.financability_established_on, financabilite_derogation_statut=DerogationFinancement[admission.financability_dispensation_status] if admission.financability_dispensation_status else None, @@ -404,10 +404,10 @@ def save(cls, entity: 'Proposition') -> None: else None ) - financabilite_regle_etabli_par_person = None - if entity.financabilite_regle_etabli_par: - financabilite_regle_etabli_par_person = Person.objects.filter( - uuid=entity.financabilite_regle_etabli_par, + financabilite_etabli_par_person = None + if entity.financabilite_etabli_par: + financabilite_etabli_par_person = Person.objects.filter( + global_id=entity.financabilite_etabli_par, ).first() years = [year for year in [entity.annee_calculee, entity.millesime_condition_acces] if year] @@ -491,8 +491,8 @@ def save(cls, entity: 'Proposition') -> None: else '', 'financability_computed_rule_on': entity.financabilite_regle_calcule_le, 'financability_rule': entity.financabilite_regle.name if entity.financabilite_regle else '', - 'financability_rule_established_by': financabilite_regle_etabli_par_person, - 'financability_rule_established_on': entity.financabilite_regle_etabli_le, + 'financability_established_by': financabilite_etabli_par_person, + 'financability_established_on': entity.financabilite_etabli_le, 'financability_dispensation_status': entity.financabilite_derogation_statut.name if entity.financabilite_derogation_statut else '', @@ -824,10 +824,10 @@ def _load_dto(cls, admission: DoctorateAdmission) -> 'PropositionDTO': financabilite_regle_calcule_situation=admission.financability_computed_rule_situation, financabilite_regle_calcule_le=admission.financability_computed_rule_on, financabilite_regle=admission.financability_rule, - financabilite_regle_etabli_par=admission.financability_rule_established_by.uuid - if admission.financability_rule_established_by + financabilite_etabli_par=admission.financability_established_by.global_id + if admission.financability_established_by else '', - financabilite_regle_etabli_le=admission.financability_rule_established_on, + financabilite_etabli_le=admission.financability_established_on, financabilite_derogation_statut=admission.financability_dispensation_status, financabilite_derogation_premiere_notification_le=( admission.financability_dispensation_first_notification_on diff --git a/infrastructure/admission/formation_generale/repository/in_memory/proposition.py b/infrastructure/admission/formation_generale/repository/in_memory/proposition.py index 95d59497a..748d6b518 100644 --- a/infrastructure/admission/formation_generale/repository/in_memory/proposition.py +++ b/infrastructure/admission/formation_generale/repository/in_memory/proposition.py @@ -296,12 +296,16 @@ def _load_dto(cls, proposition: Proposition) -> PropositionDTO: certificat_refus_sic=proposition.certificat_refus_sic, documents_additionnels=proposition.documents_additionnels, poste_diplomatique=poste_diplomatique, - financabilite_regle_calcule=proposition.financabilite_regle_calcule, - financabilite_regle_calcule_situation=proposition.financabilite_regle_calcule_situation, + financabilite_regle_calcule=proposition.financabilite_regle_calcule.name + if proposition.financabilite_regle_calcule + else '', + financabilite_regle_calcule_situation=proposition.financabilite_regle_calcule_situation.name + if proposition.financabilite_regle_calcule_situation + else '', financabilite_regle_calcule_le=proposition.financabilite_regle_calcule_le, financabilite_regle=proposition.financabilite_regle.name if proposition.financabilite_regle else '', - financabilite_regle_etabli_par=proposition.financabilite_regle_etabli_par, - financabilite_regle_etabli_le=proposition.financabilite_regle_etabli_le, + financabilite_etabli_par=proposition.financabilite_etabli_par, + financabilite_etabli_le=proposition.financabilite_etabli_le, financabilite_derogation_statut=proposition.financabilite_derogation_statut.name if proposition.financabilite_derogation_statut else '', diff --git a/infrastructure/admission/formation_generale/repository/proposition.py b/infrastructure/admission/formation_generale/repository/proposition.py index 93da6e289..0bbfd1eb6 100644 --- a/infrastructure/admission/formation_generale/repository/proposition.py +++ b/infrastructure/admission/formation_generale/repository/proposition.py @@ -69,15 +69,18 @@ DROITS_INSCRIPTION_MONTANT_VALEURS, PoursuiteDeCycle, BesoinDeDerogation, - DerogationFinancement, STATUTS_PROPOSITION_GENERALE_SOUMISE, + DerogationFinancement, + STATUTS_PROPOSITION_GENERALE_SOUMISE, ) from admission.ddd.admission.formation_generale.domain.model.proposition import Proposition, PropositionIdentity from admission.ddd.admission.formation_generale.domain.model.statut_checklist import ( StatutChecklist, StatutsChecklistGenerale, ) -from admission.ddd.admission.formation_generale.domain.validator.exceptions import PropositionNonTrouveeException, \ - PremierePropositionSoumisesNonTrouveeException +from admission.ddd.admission.formation_generale.domain.validator.exceptions import ( + PropositionNonTrouveeException, + PremierePropositionSoumisesNonTrouveeException, +) from admission.ddd.admission.formation_generale.dtos import PropositionDTO from admission.ddd.admission.formation_generale.dtos.condition_approbation import ConditionComplementaireApprobationDTO from admission.ddd.admission.formation_generale.dtos.motif_refus import MotifRefusDTO @@ -141,7 +144,8 @@ def get_first_submitted_proposition(cls, matricule_candidat: str) -> 'Propositio .filter( candidate__global_id=matricule_candidat, status__in=STATUTS_PROPOSITION_GENERALE_SOUMISE, - ).order_by('created_at') + ) + .order_by('created_at') .first() ) @@ -204,10 +208,10 @@ def save(cls, entity: 'Proposition') -> None: candidate = Person.objects.get(global_id=entity.matricule_candidat) - financabilite_regle_etabli_par_person = None - if entity.financabilite_regle_etabli_par: + financabilite_etabli_par_person = None + if entity.financabilite_etabli_par: with suppress(Person.DoesNotExist): - financabilite_regle_etabli_par_person = Person.objects.get(uuid=entity.financabilite_regle_etabli_par) + financabilite_etabli_par_person = Person.objects.get(global_id=entity.financabilite_etabli_par) financabilite_derogation_premiere_notification_par_person = None if entity.financabilite_derogation_premiere_notification_par: @@ -292,8 +296,8 @@ def save(cls, entity: 'Proposition') -> None: else '', 'financability_computed_rule_on': entity.financabilite_regle_calcule_le, 'financability_rule': entity.financabilite_regle.name if entity.financabilite_regle else '', - 'financability_rule_established_by': financabilite_regle_etabli_par_person, - 'financability_rule_established_on': entity.financabilite_regle_etabli_le, + 'financability_established_by': financabilite_etabli_par_person, + 'financability_established_on': entity.financabilite_etabli_le, 'financability_dispensation_status': entity.financabilite_derogation_statut.name if entity.financabilite_derogation_statut else '', @@ -527,10 +531,10 @@ def _load(cls, admission: 'GeneralEducationAdmission') -> 'Proposition': financabilite_regle=SituationFinancabilite[admission.financability_rule] if admission.financability_rule else '', - financabilite_regle_etabli_par=admission.financability_rule_established_by.uuid - if admission.financability_rule_established_by + financabilite_etabli_par=admission.financability_established_by.global_id + if admission.financability_established_by else None, - financabilite_regle_etabli_le=admission.financability_rule_established_on, + financabilite_etabli_le=admission.financability_established_on, financabilite_derogation_statut=DerogationFinancement[admission.financability_dispensation_status] if admission.financability_dispensation_status else '', @@ -732,10 +736,10 @@ def _load_dto(cls, admission: GeneralEducationAdmission) -> 'PropositionDTO': financabilite_regle_calcule_situation=admission.financability_computed_rule_situation, financabilite_regle_calcule_le=admission.financability_computed_rule_on, financabilite_regle=admission.financability_rule, - financabilite_regle_etabli_par=admission.financability_rule_established_by.uuid - if admission.financability_rule_established_by + financabilite_etabli_par=admission.financability_established_by.global_id + if admission.financability_established_by else None, - financabilite_regle_etabli_le=admission.financability_rule_established_on, + financabilite_etabli_le=admission.financability_established_on, financabilite_derogation_statut=admission.financability_dispensation_status, financabilite_derogation_premiere_notification_le=( admission.financability_dispensation_first_notification_on diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 878a87faf..8c4b92e52 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -3080,13 +3080,13 @@ msgstr "" msgid "Financability dispensation status" msgstr "" -msgid "Financability rule" +msgid "Financability established by" msgstr "" -msgid "Financability rule established by" +msgid "Financability established on" msgstr "" -msgid "Financability rule established on" +msgid "Financability rule" msgstr "" #, python-format diff --git a/locale/fr_BE/LC_MESSAGES/django.po b/locale/fr_BE/LC_MESSAGES/django.po index 5ffdd2986..f9cb2865f 100644 --- a/locale/fr_BE/LC_MESSAGES/django.po +++ b/locale/fr_BE/LC_MESSAGES/django.po @@ -3357,14 +3357,14 @@ msgstr "Besoin de dérogation à la financabilité" msgid "Financability dispensation status" msgstr "Statut de dérogation à la financabilité" -msgid "Financability rule" -msgstr "Règle de financabilité" +msgid "Financability established by" +msgstr "Financabilité établi par" -msgid "Financability rule established by" -msgstr "Règle de financabilité établi par" +msgid "Financability established on" +msgstr "Financabilité établi le" -msgid "Financability rule established on" -msgstr "Règle de financabilité établi le" +msgid "Financability rule" +msgstr "Règle de financabilité" #, python-format msgid "Financable - %(rule)s (Established by %(established_by)s)" diff --git a/migrations/0226_rename_financability_established.py b/migrations/0226_rename_financability_established.py new file mode 100644 index 000000000..2926ed6fe --- /dev/null +++ b/migrations/0226_rename_financability_established.py @@ -0,0 +1,69 @@ +# Generated by Django 3.2.25 on 2024-10-03 11:29 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0702_auto_20240909_1218'), + ('admission', '0225_auto_20240917_1044'), + ] + + operations = [ + migrations.RenameField( + model_name='generaleducationadmission', + old_name='financability_rule_established_by', + new_name='financability_established_by', + ), + migrations.RenameField( + model_name='generaleducationadmission', + old_name='financability_rule_established_on', + new_name='financability_established_on', + ), + migrations.AlterField( + model_name='generaleducationadmission', + name='financability_established_by', + field=models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name='+', + to='base.person', + verbose_name='Financability established by', + ), + ), + migrations.AlterField( + model_name='generaleducationadmission', + name='financability_established_on', + field=models.DateTimeField(editable=False, null=True, verbose_name='Financability established on'), + ), + migrations.RenameField( + model_name='doctorateadmission', + old_name='financability_rule_established_by', + new_name='financability_established_by', + ), + migrations.RenameField( + model_name='doctorateadmission', + old_name='financability_rule_established_on', + new_name='financability_established_on', + ), + migrations.AlterField( + model_name='doctorateadmission', + name='financability_established_by', + field=models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.PROTECT, + related_name='+', + to='base.person', + verbose_name='Financability established by', + ), + ), + migrations.AlterField( + model_name='doctorateadmission', + name='financability_established_on', + field=models.DateTimeField(editable=False, null=True, verbose_name='Financability established on'), + ), + ] diff --git a/services/injection_epc/injection_dossier.py b/services/injection_epc/injection_dossier.py index 6efa24348..69e3c2267 100644 --- a/services/injection_epc/injection_dossier.py +++ b/services/injection_epc/injection_dossier.py @@ -495,10 +495,10 @@ def _get_inscription_offre( }.get(financabilite_checklist.get('statut')), 'situation_financabilite': admission_generale.financability_rule if admission_generale else None, 'utilisateur_financabilite': ( - admission_generale.financability_rule_established_by.full_name if admission_generale else None + admission_generale.financability_established_by.full_name if admission_generale else None ), 'date_financabilite': ( - admission_generale.financability_rule_established_on.strftime("%d/%m/%Y") + admission_generale.financability_established_on.strftime("%d/%m/%Y") if admission_generale else None ), 'derogation_financabilite': financabilite_checklist.get('extra', {}).get('reussite') == 'derogation', diff --git a/tasks/injecter_dossier_a_epc.py b/tasks/injecter_dossier_a_epc.py index c3413efa4..ece6bb8cd 100644 --- a/tasks/injecter_dossier_a_epc.py +++ b/tasks/injecter_dossier_a_epc.py @@ -62,8 +62,8 @@ def run(): # pragma: no cover ).exclude( # Doit avoir une situation de financabilité + une date + un auteur Q(generaleducationadmission__financability_rule='') - | Q(generaleducationadmission__financability_rule_established_on__isnull=True) - | Q(generaleducationadmission__financability_rule_established_by_id__isnull=True) + | Q(generaleducationadmission__financability_established_on__isnull=True) + | Q(generaleducationadmission__financability_established_by_id__isnull=True) # Un noma doit exister | Q(candidate__personmergeproposal__registration_id_sent_to_digit='') # Aucune erreur avec Digit diff --git a/templates/admission/general_education/includes/checklist/financabilite.html b/templates/admission/general_education/includes/checklist/financabilite.html index fca26aa16..3d81b5d16 100644 --- a/templates/admission/general_education/includes/checklist/financabilite.html +++ b/templates/admission/general_education/includes/checklist/financabilite.html @@ -170,7 +170,7 @@

{% trans "Financing rule" %}

{% if current.statut == 'GEST_BLOCAGE' and current.extra.to_be_completed == '0' %} - {% blocktrans trimmed with rule=original_admission.financability_rule|financability_enum_display established_by=original_admission.financability_rule_established_by %} + {% blocktrans trimmed with rule=original_admission.financability_rule|financability_enum_display established_by=original_admission.financability_established_by %} Not financeable - {{ rule }} (Established by {{ established_by }}) {% endblocktrans %} {% if can_change_checklist %} @@ -180,7 +180,7 @@

{% trans "Financing rule" %}

{% endif %}
{% elif current.statut == 'GEST_REUSSITE' and current.extra.reussite == 'financable' %} - {% blocktrans trimmed with rule=original_admission.financability_rule|financability_enum_display established_by=original_admission.financability_rule_established_by established_on=original_admission.financability_rule_established_on|date:"DATETIME_FORMAT" %} + {% blocktrans trimmed with rule=original_admission.financability_rule|financability_enum_display established_by=original_admission.financability_established_by established_on=original_admission.financability_established_on|date:"DATETIME_FORMAT" %} Financeable - {{ rule }} (Established by {{ established_by }} the {{ established_on }}) {% endblocktrans %} {% if can_change_checklist %} diff --git a/templates/admission/general_education/includes/checklist/financeabilty_info.html b/templates/admission/general_education/includes/checklist/financeabilty_info.html index d7a73c49f..f411e5918 100644 --- a/templates/admission/general_education/includes/checklist/financeabilty_info.html +++ b/templates/admission/general_education/includes/checklist/financeabilty_info.html @@ -26,12 +26,12 @@
{% if current.statut == 'GEST_BLOCAGE' and current.extra.to_be_completed == '0' %} - {% blocktrans trimmed with rule='NON_FINANCABLE'|financability_enum_display established_by=original_admission.financability_rule_established_by %} + {% blocktrans trimmed with rule='NON_FINANCABLE'|financability_enum_display established_by=original_admission.financability_established_by %} {{ rule }} (Established by {{ established_by }}) {% endblocktrans %}
{% elif current.statut == 'GEST_REUSSITE' and current.extra.reussite == 'financable' %} - {% blocktrans trimmed with rule=original_admission.financability_rule|financability_enum_display established_by=original_admission.financability_rule_established_by %} + {% blocktrans trimmed with rule=original_admission.financability_rule|financability_enum_display established_by=original_admission.financability_established_by %} Financable - {{ rule }} (Established by {{ established_by }}) {% endblocktrans %}
diff --git a/tests/commands/doctorate_education/test_get_proposition_dto_for_gestionnaire.py b/tests/commands/doctorate_education/test_get_proposition_dto_for_gestionnaire.py index 9c01c9760..ea31c53a6 100644 --- a/tests/commands/doctorate_education/test_get_proposition_dto_for_gestionnaire.py +++ b/tests/commands/doctorate_education/test_get_proposition_dto_for_gestionnaire.py @@ -142,8 +142,8 @@ def setUp(self) -> None: financability_computed_rule_situation=SituationFinancabilite.REUSSI_1_UE_BLOC_1.name, financability_computed_rule_on=datetime.datetime(2020, 1, 1), financability_rule=SituationFinancabilite.PLUS_FINANCABLE.name, - financability_rule_established_by=PersonFactory(), - financability_rule_established_on=datetime.datetime(2020, 1, 2), + financability_established_by=PersonFactory(), + financability_established_on=datetime.datetime(2020, 1, 2), financability_dispensation_status=DerogationFinancement.ACCORD_DE_DEROGATION_FACULTAIRE.name, financability_dispensation_first_notification_on=datetime.datetime(2020, 1, 3), financability_dispensation_first_notification_by=PersonFactory(), @@ -265,8 +265,8 @@ def test_get_proposition_with_base_data(self): ) self.assertEqual(result.financabilite_regle_calcule_le, self.admission.financability_computed_rule_on) self.assertEqual(result.financabilite_regle, self.admission.financability_rule) - self.assertEqual(result.financabilite_regle_etabli_par, self.admission.financability_rule_established_by.uuid) - self.assertEqual(result.financabilite_regle_etabli_le, self.admission.financability_rule_established_on) + self.assertEqual(result.financabilite_etabli_par, self.admission.financability_established_by.global_id) + self.assertEqual(result.financabilite_etabli_le, self.admission.financability_established_on) self.assertEqual(result.financabilite_derogation_statut, self.admission.financability_dispensation_status) self.assertEqual( result.financabilite_derogation_premiere_notification_le, @@ -295,7 +295,7 @@ def test_get_proposition_with_base_data(self): def test_get_proposition_with_default_values_if_necessary(self): self.admission.tuition_fees_amount = '' - self.admission.financability_rule_established_by = None + self.admission.financability_established_by = None self.admission.financability_dispensation_first_notification_by = None self.admission.financability_dispensation_last_notification_by = None @@ -305,7 +305,7 @@ def test_get_proposition_with_default_values_if_necessary(self): self.assertEqual(result.droits_inscription_montant, '') self.assertEqual(result.droits_inscription_montant_valeur, None) - self.assertEqual(result.financabilite_regle_etabli_par, '') + self.assertEqual(result.financabilite_etabli_par, '') self.assertEqual(result.financabilite_derogation_premiere_notification_par, '') self.assertEqual(result.financabilite_derogation_derniere_notification_par, '') diff --git a/tests/exports/test_admission_recap.py b/tests/exports/test_admission_recap.py index a33a65d38..1046bd526 100644 --- a/tests/exports/test_admission_recap.py +++ b/tests/exports/test_admission_recap.py @@ -1468,8 +1468,8 @@ def setUpTestData(cls): financabilite_regle_calcule_situation='', financabilite_regle_calcule_le=None, financabilite_regle="", - financabilite_regle_etabli_par="", - financabilite_regle_etabli_le=None, + financabilite_etabli_par="", + financabilite_etabli_le=None, certificat_approbation_sic=[], certificat_approbation_sic_annexe=[], certificat_refus_sic=[], @@ -1563,8 +1563,8 @@ def setUpTestData(cls): financabilite_regle_calcule_situation='', financabilite_regle_calcule_le=None, financabilite_regle="", - financabilite_regle_etabli_par="", - financabilite_regle_etabli_le=None, + financabilite_etabli_par="", + financabilite_etabli_le=None, certificat_approbation_sic=[], certificat_approbation_sic_annexe=[], certificat_refus_sic=[], diff --git a/tests/views/doctorate/checklist/test_financability.py b/tests/views/doctorate/checklist/test_financability.py index e8b12301a..f33c57171 100644 --- a/tests/views/doctorate/checklist/test_financability.py +++ b/tests/views/doctorate/checklist/test_financability.py @@ -72,7 +72,7 @@ def setUpTestData(cls): candidate=CompletePersonFactory(language=settings.LANGUAGE_CODE_FR), submitted=True, financability_rule=SituationFinancabilite.PLUS_FINANCABLE.name, - financability_rule_established_by=CompletePersonFactory(), + financability_established_by=CompletePersonFactory(), ) cls.default_headers = {'HTTP_HX-Request': 'true'} cls.url = resolve_url( @@ -97,7 +97,7 @@ def test_post(self): ChoixStatutChecklist.GEST_BLOCAGE.name, ) self.assertEqual(self.admission.financability_rule, '') - self.assertIsNone(self.admission.financability_rule_established_by) + self.assertIsNone(self.admission.financability_established_by) @freezegun.freeze_time('2022-01-01') @@ -151,7 +151,7 @@ def test_post(self): SituationFinancabilite.ACQUIS_100_POURCENT_EN_N_MOINS_1.name, ) self.assertEqual( - self.admission.financability_rule_established_by, + self.admission.financability_established_by, self.sic_manager_user.person, ) self.assertEqual( @@ -212,7 +212,7 @@ def test_post(self): SituationFinancabilite.FINANCABLE_D_OFFICE.name, ) self.assertEqual( - self.admission.financability_rule_established_by, + self.admission.financability_established_by, self.sic_manager_user.person, ) self.assertEqual( @@ -272,7 +272,7 @@ def test_post(self): SituationFinancabilite.PLUS_FINANCABLE.name, ) self.assertEqual( - self.admission.financability_rule_established_by, + self.admission.financability_established_by, self.sic_manager_user.person, ) self.assertEqual( @@ -333,7 +333,7 @@ def test_post(self): SituationFinancabilite.PLUS_FINANCABLE.name, ) self.assertEqual( - self.admission.financability_rule_established_by, + self.admission.financability_established_by, self.sic_manager_user.person, ) self.assertEqual( @@ -389,6 +389,10 @@ def test_non_concerne_post(self): DerogationFinancement.NON_CONCERNE.name, ) self.assertEqual(self.admission.last_update_author, self.sic_manager_user.person) + self.assertEqual( + self.admission.financability_established_by, + self.sic_manager_user.person, + ) def test_abandon_candidat_post(self): self.client.force_login(user=self.sic_manager_user) @@ -411,6 +415,10 @@ def test_abandon_candidat_post(self): self.admission.financability_dispensation_status, DerogationFinancement.ABANDON_DU_CANDIDAT.name, ) + self.assertEqual( + self.admission.financability_established_by, + self.sic_manager_user.person, + ) def test_refus_post(self): self.client.force_login(user=self.sic_manager_user) @@ -434,6 +442,10 @@ def test_refus_post(self): self.admission.financability_dispensation_status, DerogationFinancement.REFUS_DE_DEROGATION_FACULTAIRE.name, ) + self.assertEqual( + self.admission.financability_established_by, + self.sic_manager_user.person, + ) def test_refus_post_with_other_reasons(self): self.client.force_login(user=self.sic_manager_user) @@ -468,6 +480,10 @@ def test_refus_post_with_other_reasons(self): self.admission.other_refusal_reasons, ['Autre'], ) + self.assertEqual( + self.admission.financability_established_by, + self.sic_manager_user.person, + ) def test_accord_post(self): self.client.force_login(user=self.sic_manager_user) @@ -490,6 +506,10 @@ def test_accord_post(self): self.admission.financability_dispensation_status, DerogationFinancement.ACCORD_DE_DEROGATION_FACULTAIRE.name, ) + self.assertEqual( + self.admission.financability_established_by, + self.sic_manager_user.person, + ) def test_notification_candidat(self): self.client.force_login(user=self.sic_manager_user) @@ -562,7 +582,7 @@ def test_post(self): self.admission.refresh_from_db() self.assertEqual(self.admission.financability_rule, '') self.assertEqual( - self.admission.financability_rule_established_by, + self.admission.financability_established_by, self.sic_manager_user.person, ) self.assertEqual( diff --git a/tests/views/general_education/checklist/test_financability.py b/tests/views/general_education/checklist/test_financability.py index c512b5bda..9bf26639d 100644 --- a/tests/views/general_education/checklist/test_financability.py +++ b/tests/views/general_education/checklist/test_financability.py @@ -74,7 +74,7 @@ def setUpTestData(cls): candidate=CompletePersonFactory(language=settings.LANGUAGE_CODE_FR), status=ChoixStatutPropositionGenerale.CONFIRMEE.name, financability_rule=SituationFinancabilite.PLUS_FINANCABLE.name, - financability_rule_established_by=CompletePersonFactory(), + financability_established_by=CompletePersonFactory(), ) cls.default_headers = {'HTTP_HX-Request': 'true'} cls.url = resolve_url( @@ -99,7 +99,7 @@ def test_post(self): ChoixStatutChecklist.GEST_BLOCAGE.name, ) self.assertEqual(self.general_admission.financability_rule, '') - self.assertIsNone(self.general_admission.financability_rule_established_by) + self.assertIsNone(self.general_admission.financability_established_by) @freezegun.freeze_time('2022-01-01') @@ -153,7 +153,7 @@ def test_post(self): SituationFinancabilite.ACQUIS_100_POURCENT_EN_N_MOINS_1.name, ) self.assertEqual( - self.general_admission.financability_rule_established_by, + self.general_admission.financability_established_by, self.sic_manager_user.person, ) self.assertEqual( @@ -214,7 +214,7 @@ def test_post(self): SituationFinancabilite.FINANCABLE_D_OFFICE.name, ) self.assertEqual( - self.general_admission.financability_rule_established_by, + self.general_admission.financability_established_by, self.sic_manager_user.person, ) self.assertEqual( @@ -274,7 +274,7 @@ def test_post(self): SituationFinancabilite.PLUS_FINANCABLE.name, ) self.assertEqual( - self.general_admission.financability_rule_established_by, + self.general_admission.financability_established_by, self.sic_manager_user.person, ) self.assertEqual( @@ -335,7 +335,7 @@ def test_post(self): SituationFinancabilite.PLUS_FINANCABLE.name, ) self.assertEqual( - self.general_admission.financability_rule_established_by, + self.general_admission.financability_established_by, self.sic_manager_user.person, ) self.assertEqual( @@ -391,6 +391,10 @@ def test_non_concerne_post(self): DerogationFinancement.NON_CONCERNE.name, ) self.assertEqual(self.general_admission.last_update_author, self.sic_manager_user.person) + self.assertEqual( + self.general_admission.financability_established_by, + self.sic_manager_user.person, + ) def test_abandon_candidat_post(self): self.client.force_login(user=self.sic_manager_user) @@ -413,6 +417,10 @@ def test_abandon_candidat_post(self): self.general_admission.financability_dispensation_status, DerogationFinancement.ABANDON_DU_CANDIDAT.name, ) + self.assertEqual( + self.general_admission.financability_established_by, + self.sic_manager_user.person, + ) def test_refus_post(self): self.client.force_login(user=self.sic_manager_user) @@ -436,6 +444,10 @@ def test_refus_post(self): self.general_admission.financability_dispensation_status, DerogationFinancement.REFUS_DE_DEROGATION_FACULTAIRE.name, ) + self.assertEqual( + self.general_admission.financability_established_by, + self.sic_manager_user.person, + ) def test_refus_post_with_other_reasons(self): self.client.force_login(user=self.sic_manager_user) @@ -462,6 +474,10 @@ def test_refus_post_with_other_reasons(self): self.general_admission.financability_dispensation_status, DerogationFinancement.REFUS_DE_DEROGATION_FACULTAIRE.name, ) + self.assertEqual( + self.general_admission.financability_established_by, + self.sic_manager_user.person, + ) self.assertQuerysetEqual( self.general_admission.refusal_reasons.all(), [refusal_reason], @@ -492,6 +508,10 @@ def test_accord_post(self): self.general_admission.financability_dispensation_status, DerogationFinancement.ACCORD_DE_DEROGATION_FACULTAIRE.name, ) + self.assertEqual( + self.general_admission.financability_established_by, + self.sic_manager_user.person, + ) def test_notification_candidat(self): self.client.force_login(user=self.sic_manager_user) @@ -568,7 +588,7 @@ def test_post(self): self.general_admission.refresh_from_db() self.assertEqual(self.general_admission.financability_rule, '') self.assertEqual( - self.general_admission.financability_rule_established_by, + self.general_admission.financability_established_by, self.sic_manager_user.person, ) self.assertEqual( diff --git a/views/common/mixins.py b/views/common/mixins.py index 5e293cb7d..15c7b46b8 100644 --- a/views/common/mixins.py +++ b/views/common/mixins.py @@ -276,8 +276,8 @@ def injection_possible(self): etat_financabilite and ( self.admission.financability_rule == '' - or self.admission.financability_rule_established_on is None - or self.admission.financability_rule_established_by_id is None + or self.admission.financability_established_on is None + or self.admission.financability_established_by_id is None ) ): return ( diff --git a/views/doctorate/details/checklist/financeability.py b/views/doctorate/details/checklist/financeability.py index 63acc410a..5afe852ce 100644 --- a/views/doctorate/details/checklist/financeability.py +++ b/views/doctorate/details/checklist/financeability.py @@ -307,8 +307,8 @@ def post(self, request, *args, **kwargs): ) admission.financability_rule = '' - admission.financability_rule_established_by = None - admission.save(update_fields=['financability_rule', 'financability_rule_established_by']) + admission.financability_established_by = None + admission.save(update_fields=['financability_rule', 'financability_established_by']) return HttpResponseClientRefresh() diff --git a/views/general_education/details/checklist.py b/views/general_education/details/checklist.py index 3cc34321b..3b94278e2 100644 --- a/views/general_education/details/checklist.py +++ b/views/general_education/details/checklist.py @@ -2282,8 +2282,8 @@ def post(self, request, *args, **kwargs): ) admission.financability_rule = '' - admission.financability_rule_established_by = None - admission.save(update_fields=['financability_rule', 'financability_rule_established_by']) + admission.financability_established_by = None + admission.save(update_fields=['financability_rule', 'financability_established_by']) return HttpResponseClientRefresh() @@ -2306,7 +2306,6 @@ def form_valid(self, form): SpecifierFinancabiliteRegleCommand( uuid_proposition=self.admission_uuid, financabilite_regle=form.cleaned_data['financability_rule'], - etabli_par=self.request.user.person.uuid, gestionnaire=self.request.user.person.global_id, ) ) @@ -2324,7 +2323,6 @@ def post(self, request, *args, **kwargs): SpecifierFinancabiliteRegleCommand( uuid_proposition=self.admission_uuid, financabilite_regle=self.admission.financability_computed_rule_situation, - etabli_par=self.request.user.person.uuid, gestionnaire=self.request.user.person.global_id, ) ) @@ -2350,7 +2348,6 @@ def form_valid(self, form): SpecifierFinancabiliteRegleCommand( uuid_proposition=self.admission_uuid, financabilite_regle=form.cleaned_data['financability_rule'], - etabli_par=self.request.user.person.uuid, gestionnaire=self.request.user.person.global_id, ) ) @@ -2368,7 +2365,6 @@ def post(self, request, *args, **kwargs): SpecifierFinancabiliteRegleCommand( uuid_proposition=self.admission_uuid, financabilite_regle=self.admission.financability_computed_rule_situation, - etabli_par=self.request.user.person.uuid, gestionnaire=self.request.user.person.global_id, ) ) @@ -2386,7 +2382,6 @@ def post(self, request, *args, **kwargs): message_bus_instance.invoke( SpecifierFinancabiliteNonConcerneeCommand( uuid_proposition=self.admission_uuid, - etabli_par=self.request.user.person.uuid, gestionnaire=self.request.user.person.global_id, ) )