From 5a70796bc297e8e2b64d3925e3c916697770ae9b Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 14 Mar 2025 14:53:44 +0100 Subject: 🐛 archaeological files: manage business for deadlines (refs #6218) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- archaeological_files/forms.py | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'archaeological_files/forms.py') diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index 5cbb79d85..6b150a9d5 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -30,7 +30,7 @@ from django.core import validators from django.db.models import Q from django.forms.formsets import formset_factory from django.utils.safestring import mark_safe -from ishtar_common.utils import ugettext_lazy as _ +from ishtar_common.utils import add_business_days, ugettext_lazy as _ from ishtar_common.models import ( Area, @@ -667,18 +667,24 @@ class FileFormInstruction(CustomForm, IshtarForm): self.fields["numeric_reference"].initial = c_num + 1 if self.numeric_reference_is_readonly: self.fields["numeric_reference"].widget.attrs["readonly"] = True - if reception_date and saisine_type: - if type(reception_date) == str: - try: - reception_date = datetime.datetime.strptime( - reception_date, "%d/%m/%Y" - ) - self.fields["instruction_deadline"].initial = ( - reception_date - + datetime.timedelta(days=saisine_type.delay or 0) - ).strftime("%Y-%m-%d") - except ValueError: - pass + if not reception_date or not saisine_type: + return + if isinstance(reception_date, str): + try: + reception_date = datetime.datetime.strptime( + reception_date, "%d/%m/%Y" + ) + except ValueError: + return + delay = saisine_type.delay or 0 + try: + if settings.ISHTAR_FILE_EXCLUDE_BUSSINESS_DAYS: + deadline = add_business_days(reception_date, delay) + else: + deadline = reception_date + datetime.timedelta(days=delay) + self.fields["instruction_deadline"].initial = deadline.strftime("%Y-%m-%d") + except (TypeError, ValueError): + pass def clean_numeric_reference(self): if self.numeric_reference_is_readonly: -- cgit v1.2.3