diff --git a/auth/roles/program_manager.py b/auth/roles/program_manager.py index 526fe78c8..9d995235f 100644 --- a/auth/roles/program_manager.py +++ b/auth/roles/program_manager.py @@ -168,7 +168,9 @@ def rule_set(cls): & (general.in_fac_status | doctorate.in_fac_status) & ~is_sent_to_epc, 'admission.checklist_change_fac_comment': is_part_of_education_group & ~is_sent_to_epc, - 'admission.checklist_financability_dispensation_fac': is_part_of_education_group & ~is_sent_to_epc, + 'admission.checklist_financability_dispensation_fac': general.in_fac_status + & is_part_of_education_group + & ~is_sent_to_epc, 'admission.continuing_checklist_change_fac_comment': is_part_of_education_group & ~is_sent_to_epc, 'admission.checklist_change_comment': is_part_of_education_group & continuing.is_continuing diff --git a/ddd/admission/doctorat/preparation/domain/service/i_historique.py b/ddd/admission/doctorat/preparation/domain/service/i_historique.py index 62c7a3dda..f2ade9877 100644 --- a/ddd/admission/doctorat/preparation/domain/service/i_historique.py +++ b/ddd/admission/doctorat/preparation/domain/service/i_historique.py @@ -212,6 +212,6 @@ def historiser_derogation_financabilite( cls, proposition: Proposition, gestionnaire: str, - message: Optional[EmailMessage], + message: Optional[EmailMessage] = None, ): raise NotImplementedError diff --git a/ddd/admission/doctorat/preparation/use_case/write/specifier_derogation_financabilite_service.py b/ddd/admission/doctorat/preparation/use_case/write/specifier_derogation_financabilite_service.py index 3987ead21..fa56ea1cd 100644 --- a/ddd/admission/doctorat/preparation/use_case/write/specifier_derogation_financabilite_service.py +++ b/ddd/admission/doctorat/preparation/use_case/write/specifier_derogation_financabilite_service.py @@ -29,6 +29,7 @@ ) from admission.ddd.admission.doctorat.preparation.domain.model.enums.checklist import DerogationFinancement from admission.ddd.admission.doctorat.preparation.domain.model.proposition import PropositionIdentity +from admission.ddd.admission.doctorat.preparation.domain.service.i_historique import IHistorique from admission.ddd.admission.doctorat.preparation.repository.i_proposition import IPropositionRepository diff --git a/ddd/admission/formation_generale/domain/service/i_historique.py b/ddd/admission/formation_generale/domain/service/i_historique.py index d2aa5f4e9..b85d4d40d 100644 --- a/ddd/admission/formation_generale/domain/service/i_historique.py +++ b/ddd/admission/formation_generale/domain/service/i_historique.py @@ -195,6 +195,6 @@ def historiser_derogation_financabilite( cls, proposition: Proposition, gestionnaire: str, - message: Optional[EmailMessage], + message: Optional[EmailMessage] = None, ): raise NotImplementedError diff --git a/forms/admission/checklist.py b/forms/admission/checklist.py index 2f425dd6e..cd45f238f 100644 --- a/forms/admission/checklist.py +++ b/forms/admission/checklist.py @@ -140,6 +140,11 @@ def __init__(self, form_url, comment=None, label=None, permission=None, *args, * 'authentication': _('Comment about the authentication'), } + labels_from_prefix = { + 'financabilite__derogation': _('Faculty comment about financability dispensation'), + 'decision_sic__derogation': _('Comment about dispensation'), + } + permissions = { COMMENT_TAG_SIC: 'admission.checklist_change_sic_comment', COMMENT_TAG_FAC: 'admission.checklist_change_fac_comment', @@ -147,7 +152,10 @@ def __init__(self, form_url, comment=None, label=None, permission=None, *args, * COMMENT_TAG_FAC_FOR_IUFC: 'admission.continuing_checklist_change_fac_comment', } - self.fields['comment'].label = labels.get(comment_type, label or _('Comment')) + if self.prefix in labels_from_prefix: + self.fields['comment'].label = labels_from_prefix[self.prefix] + else: + self.fields['comment'].label = labels.get(comment_type, label or _('Comment')) if permission is not None: self.permission = permission diff --git a/migrations/0225_doctorate_financeabilite_email.py b/migrations/0225_doctorate_financeabilite_email.py new file mode 100644 index 000000000..ae89ebfcf --- /dev/null +++ b/migrations/0225_doctorate_financeabilite_email.py @@ -0,0 +1,50 @@ +# Generated by Django 3.2.25 on 2024-05-22 14:49 + +from django.db import migrations +from osis_mail_template import MailTemplateMigration + +from admission.mail_templates import ( + ADMISSION_EMAIL_FINANCABILITY_DISPENSATION_NOTIFICATION_DOCTORATE, +) + + +class Migration(migrations.Migration): + + dependencies = [ + ('admission', '0224_add_doctorate_checklist_emails'), + ] + + operations = [ + MailTemplateMigration( + ADMISSION_EMAIL_FINANCABILITY_DISPENSATION_NOTIFICATION_DOCTORATE, + { + 'en': '{academic_year} enrolment application ineligible for funding: exemption required', + 'fr-be': "Demande d'inscription {academic_year} non finançable : Dérogation nécessaire", + }, + { + 'en': '''

Your file number: {admission_reference}

+

Dear {candidate_first_name} {candidate_last_name},

+

Thank you for applying to enrol in the course {training_title} [{training_acronym}] ({training_campus}).

+

After reviewing your academic curriculum and in accordance with the decree of 11 April 2014 adapting the funding of higher education institutions to the latest restructuring of higher education, it appears from the information you have provided and/or at our disposal that, per the meaning of the aforementioned decree, you are ineligible for funding.

+

However, if you have specific arguments to put forward, you can apply for a faculty exemption with a view to enrolment. To do so, please contact your faculty ({contact_link}) as soon as possible to learn how to apply for an exemption.

+

For your information, and as a general rule, an exemption application must be made in writing and accompanied by a curriculum vitae, a letter of motivation and a copy of the detailed results of all previous years of higher education (transcripts).

+

The faculty will inform the Enrolment Office of its decision. If the faculty’s decision is favourable, the Enrolment Office will validate your application for (re)enrolment as soon as it is received. If the decision is not favourable, you will receive as soon as possible an official letter denying enrolment.

+

We are aware of the disappointment that this letter may cause. Please do consult your faculty to determine whether an exemption is possible.

+

Sincerely,

+

The UCLouvain Enrolment Office

+

https://uclouvain.be/en/study/inscriptions

+ ''', + 'fr-be': '''

Votre numéro de dossier : {admission_reference}

+

{greetings} {candidate_first_name} {candidate_last_name},

+

Votre demande d'inscription au programme {training_title} [{training_acronym}] ({training_campus}) nous est bien parvenue et nous vous en remercions.

+

Après analyse de votre curriculum académique et conformément au décret du 11 avril 2014 adaptant le financement des établissements d'enseignement supérieur à la nouvelle organisation des études, il ressort des informations que vous nous avez fournies et/ou dont nous disposons que vous n’êtes pas finançable au sens du décret précité.

+

Toutefois, si vous disposez d’arguments particuliers à faire valoir, vous pouvez introduire une demande de dérogation facultaire en vue d’une inscription. Pour ce faire, veuillez contacter votre faculté ({contact_link}) dans les plus brefs délais afin de connaître les modalités en vue d'introduire une demande de dérogation.

+

Pour votre information et de manière générale, une demande de dérogation doit être introduite par écrit et être accompagnée d'un curriculum vitae, d’une lettre de motivation et d'une copie des résultats détaillés de toutes les années d'études supérieures antérieures (relevés de notes).

+

La faculté communiquera sa décision au Service des inscriptions. En cas de décision favorable de la faculté et dès sa réception, le Service des inscriptions validera votre demande de (ré)inscription. Dans le cas contraire, un courrier officiel de refus d’inscription vous parviendra dans les meilleurs délais.

+

Consciente de la déception que ce courrier pourrait susciter, nous vous prions néanmoins d’agréer, {greetings_end}, l'expression de nos salutations distinguées.

+

Le Service des inscriptions de l'UCLouvain.

+

https://uclouvain.be/fr/etudier/inscriptions.

+ ''', + }, + ), + ] diff --git a/templates/admission/doctorate/checklist.html b/templates/admission/doctorate/checklist.html index 2904b3217..b3150fb9b 100644 --- a/templates/admission/doctorate/checklist.html +++ b/templates/admission/doctorate/checklist.html @@ -958,10 +958,11 @@ }); // Pass the ckeditor data to the form data if necessary - $(document).on('click', '.ckeditor-form [type="submit"]', function(event) { - $(this).closest('form').find("textarea[data-type=ckeditortype]").each(function() { - CKEDITOR.instances[$(this).attr('id')].updateElement(); - }) + $(document).on('click', '.ckeditor-form [type="submit"], .ckeditor-form [name="save"]', function(event) { + $(this).closest('form').find("textarea").each(function() { + const editor = CKEDITOR.instances[$(this).attr('id')]; + if (editor) editor.updateElement(); + }); }); })(jQuery) diff --git a/templates/admission/general_education/checklist.html b/templates/admission/general_education/checklist.html index 3a7c47366..1f13764ad 100644 --- a/templates/admission/general_education/checklist.html +++ b/templates/admission/general_education/checklist.html @@ -1053,7 +1053,6 @@ $('#list-group-link-financabilite').on('show.bs.tab', function() { htmx.trigger('#financabilite-computed-rule', 'financabiliteComputeRule'); }); - })(jQuery) $('#merge-experience-form').on('submit', (e) => { diff --git a/templates/admission/general_education/includes/checklist/financabilite_derogation_candidat_notifie_form.html b/templates/admission/general_education/includes/checklist/financabilite_derogation_candidat_notifie_form.html index 3cb655cd6..0c801c693 100644 --- a/templates/admission/general_education/includes/checklist/financabilite_derogation_candidat_notifie_form.html +++ b/templates/admission/general_education/includes/checklist/financabilite_derogation_candidat_notifie_form.html @@ -30,6 +30,7 @@ hx-swap="outerHTML" style="overflow: auto;" id="financability-derogation-notification-form" + class="ckeditor-form" >