def save(self): cleaned_data = self.cleaned_data proposal = None with transaction.atomic(): proposal = Proposal.objects.create( first_name=cleaned_data["first_name"], last_name=cleaned_data["last_name"], address=cleaned_data["address"], email=cleaned_data["email"], phone=cleaned_data["phone"], foirequest=self.foirequest, publicbody=cleaned_data["publicbody"], description=cleaned_data["description"], ) last_date = None for kind, _kind_detail in ProposalDocument.DOCUMENT_KINDS: pd = ProposalDocument(proposal=proposal, kind=kind) if self.foirequest is None: pd.date = cleaned_data["date_%s" % kind] pd.document = cleaned_data["document_%s" % kind] else: fm = cleaned_data["foimessage_%s" % kind] pd.foimessage = fm pd.date = fm.timestamp.date() if kind == "final_rejection": last_date = pd.date pd.save() proposal.legal_date = calculate_month_range_de(last_date) proposal.save() return proposal
def calculate_due_date(self, date=None): if date is None: date = datetime.now() if self.max_response_time_unit == "month_de": return calculate_month_range_de(date, self.max_response_time) elif self.max_response_time_unit == "day": return date + timedelta(days=self.max_response_time) elif self.max_response_time_unit == "working_day": return calculate_workingday_range(date, self.max_response_time)
def calculate_due_date(self, date=None, value=None): if date is None: date = timezone.now() if value is None: value = self.max_response_time if self.max_response_time_unit == "month_de": return calculate_month_range_de(date, value) elif self.max_response_time_unit == "day": return date + timedelta(days=value) elif self.max_response_time_unit == "working_day": return calculate_workingday_range(date, value)