def clean(self): cleaned_data = super(GuestListForm, self).clean() if not self._errors: try: utc = pytz.UTC cleaned_data['guest_list'] = GuestListForm.get_users_with_these_emails(cleaned_data.get('guests')) date_year = cleaned_data.get('year') date_month = cleaned_data.get('month') date_day = cleaned_data.get('day') hour = cleaned_data.get('hour') date = i18n.persiandate(int(date_year), int(date_month), int(date_day)) tz = timezone.get_current_timezone() date_time = tz.localize(timezone.datetime(date.year, date.month, date.day, int(hour))) utc_time = utc.normalize(date_time.astimezone(utc)) if utils.has_passed(utc_time): self._errors['deadline'] = self.error_class([_("Time for deadline is already passed.")]) cleaned_data['deadline'] = utc_time except forms.ValidationError: self._errors['guests'] = self.error_class([_("You should enter at least one guest and guests' emails should be valid.")]) return cleaned_data
def clean(self): cleaned_data = super(IntervalForm,self).clean() if not self._errors: date_year = cleaned_data.get('date_year') date_month = cleaned_data.get('date_month') date_day = cleaned_data.get('date_day') date = i18n.persiandate(int(date_year), int(date_month), int(date_day)) tz = timezone.get_current_timezone() utc = pytz.UTC start_time = cleaned_data.get('start') start_date_time = tz.localize(timezone.datetime(date.year, date.month, date.day, start_time.hour, start_time.minute)) finish_time = cleaned_data.get('finish') finish_date_time = tz.localize(timezone.datetime(date.year, date.month, date.day, finish_time.hour, finish_time.minute)) utc_start = utc.normalize(start_date_time.astimezone(utc)) utc_finish = utc.normalize(finish_date_time.astimezone(utc)) if utc_start >= utc_finish : self._errors['finish']=self.error_class([_('Finish time must be after start time.')]) if utils.has_passed(date_and_time=utc_start): self._errors['finish']=self.error_class([_('The time you provide should not be already passed.')]) cleaned_data['date'] = date cleaned_data['start'] = utc_start.time() cleaned_data['finish'] = utc_finish.time() return cleaned_data