def clean(self): count = 0 project_members = [] for form in self.forms: try: if form.cleaned_data: member = form.cleaned_data.get("member") start_date = form.cleaned_data.get("start_date") end_date = form.cleaned_data.get("end_date") project_members.append((member, start_date, end_date)) count += 1 except AttributeError: pass for member, start_date, end_date in project_members: dates = [(s, e) for m, s, e in project_members if m.pk == member.pk] if len(dates) > 1: for i, period in enumerate(dates): start_date, end_date = period if common.is_cross_date(dates, start_date, i): raise forms.ValidationError(u"メンバー%sの開始日が重複している。" % (member.__unicode__(), )) if end_date and common.is_cross_date(dates, end_date, i): raise forms.ValidationError(u"メンバー%sの終了日が重複している。" % (member.__unicode__(), ))
def clean(self): count = 0 dates = [] for form in self.forms: try: if form.cleaned_data: start_date = form.cleaned_data.get("start_date") end_date = form.cleaned_data.get("end_date") dates.append((start_date, end_date)) count += 1 except AttributeError: pass if count > 1: dates.sort(key=lambda date: date[0]) for i, period in enumerate(dates): start_date, end_date = period if common.is_cross_date(dates, start_date, i): raise forms.ValidationError(u"営業対象外期間の開始日が重複している。") if end_date and common.is_cross_date(dates, end_date, i): raise forms.ValidationError(u"営業対象外期間の終了日が重複している。")
def clean(self): cleaned_data = super(InsuranceLevelPeriodForm, self).clean() start_date = cleaned_data.get('start_date', None) end_date = cleaned_data.get('end_date', None) if end_date and start_date > end_date: self.add_error('end_date', u"終了日は開始日の前になっている、開始日の以降に設定してください。") # 期間が重複されているかどうかをチェック dates = [(start_date, end_date)] if self.instance and self.instance.pk: queryset = models.InsuranceLevelPeriod.objects.exclude(pk=self.instance.pk) else: queryset = models.InsuranceLevelPeriod.objects.public_all() for obj in queryset: dates.append((obj.start_date, obj.end_date)) if len(dates) > 1: dates.sort(key=lambda date: date[0]) for i, period in enumerate(dates): start_date, end_date = period if common.is_cross_date(dates, start_date, i): self.add_error('start_date', u"期間の開始日が重複している。") if end_date and common.is_cross_date(dates, end_date, i): self.add_error('end_date', u"期間の終了日が重複している。") return cleaned_data
def clean(self): cleaned_data = super(BpContractForm, self).clean() member = cleaned_data.get('member', None) company = cleaned_data.get('company', None) start_date = cleaned_data.get('start_date', None) end_date = cleaned_data.get('end_date', None) if end_date and start_date > end_date: self.add_error('end_date', u"終了日は開始日の前になっている、開始日の以降に設定してください。") if not company and member and self.instance: self.instance.company = member.subcontractor # 契約期間が重複されているかどうかをチェック dates = [(start_date, end_date)] queryset = models.BpContract.objects.public_filter(member=member).exclude(pk=self.instance.pk) for contract in queryset: dates.append((contract.start_date, contract.end_date)) if len(dates) > 1: dates.sort(key=lambda date: date[0]) for i, period in enumerate(dates): start_date, end_date = period if common.is_cross_date(dates, start_date, i): self.add_error('start_date', u"契約期間の開始日が重複している。") if end_date and common.is_cross_date(dates, end_date, i): self.add_error('end_date', u"契約期間の終了日が重複している。")