def calculate(self) -> Union[None, date]: if self.zaak.archiefactiedatum: return resultaattype = self.zaak.resultaat.resultaattype archiefactietermijn = resultaattype.archiefactietermijn if not archiefactietermijn: return # if loose-fk-field - convert to relative-delta if isinstance(archiefactietermijn, str): archiefactietermijn = parse_relativedelta(archiefactietermijn) brondatum_archiefprocedure = resultaattype.brondatum_archiefprocedure afleidingswijze = brondatum_archiefprocedure["afleidingswijze"] datum_kenmerk = brondatum_archiefprocedure["datumkenmerk"] objecttype = brondatum_archiefprocedure["objecttype"] procestermijn = brondatum_archiefprocedure["procestermijn"] # if loose-fk-field - convert to relative-delta if isinstance(procestermijn, str): procestermijn = parse_relativedelta(procestermijn) # FIXME: nasty side effect orig_value = self.zaak.einddatum self.zaak.einddatum = self.datum_status_gezet.date() brondatum = get_brondatum(self.zaak, afleidingswijze, datum_kenmerk, objecttype, procestermijn) self.zaak.einddatum = orig_value if not brondatum: return return brondatum + archiefactietermijn
def save(self, *args, **kwargs): """ Save some derived fields into local object as a means of caching. """ if (self.resultaattypeomschrijving and self.resultaattypeomschrijving is not no_fetch): response = requests.get(self.resultaattypeomschrijving).json() self.omschrijving_generiek = response["omschrijving"] # derive the default archiefnominatie if not self.archiefnominatie and self.selectielijstklasse: selectielijstklasse = self.get_selectielijstklasse() self.archiefnominatie = selectielijstklasse["waardering"] if not self.archiefactietermijn and self.selectielijstklasse: selectielijstklasse = self.get_selectielijstklasse() parsed_relativedelta = ( parse_relativedelta(selectielijstklasse["bewaartermijn"]) if selectielijstklasse["bewaartermijn"] else None) self.archiefactietermijn = parsed_relativedelta # Met de attribuutsoorten van dit groepatribuutsoort worden deze situaties # geparametrieerd. Dit is alleen relevant indien sprake is van de Archiefnominatie # "vernietigen"; voor te bewaren zaakdossiers start de Archiefactietermijn op de # einddatum van de zaak. if (self.archiefnominatie == Archiefnominatie.blijvend_bewaren and not self.brondatum_archiefprocedure_afleidingswijze): self.brondatum_archiefprocedure_afleidingswijze = ( Afleidingswijze.afgehandeld) super().save(*args, **kwargs)
def get_context(self, name, value: Union[relativedelta, str], attrs=None): attrs = {} if attrs is None else attrs context = super().get_context(name, value, attrs) value = value or relativedelta() final_attrs = self.build_attrs(attrs) final_attrs.update({"min": 0}) if isinstance(value, str): value = parse_relativedelta(value) years_widget = self._build_subwidget_context( name, value, final_attrs, "years", _("# jaren"), required=True ) months_widget = self._build_subwidget_context( name, value, final_attrs, "months", _("# maanden"), required=True ) days_widget = self._build_subwidget_context( name, value, final_attrs, "days", _("# dagen"), required=True ) hours_widget = self._build_subwidget_context( name, value, final_attrs, "hours", _("# uren") ) minutes_widget = self._build_subwidget_context( name, value, final_attrs, "minutes", _("# minuten") ) seconds_widget = self._build_subwidget_context( name, value, final_attrs, "seconds", _("# seconden") ) microseconds_widget = self._build_subwidget_context( name, value, final_attrs, "microseconds", _("# microseconden") ) subwidgets = [ years_widget, months_widget, # weeks is skipped, because internally it's converted to days days_widget, hours_widget, minutes_widget, seconds_widget, microseconds_widget, ] context["widget"]["subwidgets"] = [ widget for widget in subwidgets if widget is not None ] return context
def save(self, *args, **kwargs): """ Save some derived fields into local object as a means of caching. """ if not self.omschrijving_generiek and self.resultaattypeomschrijving: response = requests.get(self.resultaattypeomschrijving).json() self.omschrijving_generiek = response["omschrijving"] # derive the default archiefnominatie if not self.archiefnominatie and self.selectielijstklasse: selectielijstklasse = self.get_selectielijstklasse() self.archiefnominatie = selectielijstklasse["waardering"] if not self.archiefactietermijn and self.selectielijstklasse: selectielijstklasse = self.get_selectielijstklasse() parsed_relativedelta = parse_relativedelta( selectielijstklasse["bewaartermijn"]) self.archiefactietermijn = parsed_relativedelta super().save(*args, **kwargs)
def to_python(self, value): if value in self.empty_values: return None return relativedeltafield.parse_relativedelta(value)