class HistoryFilterForm(ModelForm): name = CharField(required=False) date_from = DateTimeField(required=False) date_to = DateTimeField(initial=datetime.date.today, required=False) name.widget = TextInput( attrs={ 'class': "form-control col-5 mx-sm-3 mb-2", 'aria-label': "Large", 'aria-describedby': "inputGroup-sizing-sm", 'placeholder': 'City...', 'name': 'city', }) date_from.widget = DateTimeInput( attrs={ 'class': "form-control col-5 mx-sm-3 mb-2", 'name': 'date_from', 'type': "datetime-local", 'value': '2000-01-01T01:01' }) date_to.widget = DateTimeInput( attrs={ 'class': "form-control col-5 mx-sm-3 mb-2", 'name': 'date_to', 'type': "datetime-local", # 'value' : lambda: datetime.date.today().__str__().replace(' ', 'T') }) class Meta: model = HistoryFilter fields = ['name', 'date_from', 'date_to']
class SeasonForm(ModelForm): class Meta: model = Season exclude = ['season_event', 'external_order_event', 'internal_order_event'] season_event_start_date = DateTimeField(widget=DateInput()) season_event_end_date = DateTimeField(widget=DateInput()) internal_order_event_date = DateTimeField(widget=DateInput()) external_order_event_date = DateTimeField(widget=DateInput()) def __init__(self, *args, **kwargs): if "request" in kwargs: self.request = kwargs.pop("request") super().__init__(*args, **kwargs) def clean(self): cleaned_data = super(SeasonForm, self).clean() season_event_start = cleaned_data.get("season_event_start_date") season_event_end = cleaned_data.get("season_event_end_date") internal_order_event = cleaned_data.get("internal_order_event_date") external_order_event = cleaned_data.get("external_order_event_date") if season_event_start and season_event_end and internal_order_event and external_order_event: if (season_event_start <= internal_order_event or season_event_start <= external_order_event): raise ValidationError("Order events cannot be before the season event") if (season_event_start >= season_event_end): raise ValidationError("Season start must be before season end")
class AddAuction(ModelForm): end_time = DateTimeField(initial=now() + timedelta(days=1), required=True, widget=DateTimeInput()) start_time = DateTimeField(initial=now(), required=True, widget=DateTimeInput()) image = FileField() helper = FormHelper() helper.form_method = 'POST' helper.layout = Layout( 'title', 'image', 'description', PrependedText('start_price', '$'), PrependedText('buy_it_now_price', '$'), 'start_time', 'end_time', 'categories', FormActions(Submit('List Item', 'List this item for auction'))) def clean(self): cleaned_data = super(AddAuction, self).clean() start_time = cleaned_data.get("start_time") end_time = cleaned_data.get("end_time") if end_time <= start_time: raise ValidationError("End time must be later than start time.") class Meta: model = Auction fields = [ 'title', 'image', 'description', 'start_price', 'buy_it_now_price', 'start_time', 'end_time', 'categories' ]
def test_datetimefield_clean_input_formats(self): tests = [ ('%Y %m %d %I:%M %p', ( (date(2006, 10, 25), datetime(2006, 10, 25, 0, 0)), (datetime(2006, 10, 25, 14, 30), datetime(2006, 10, 25, 14, 30)), ( datetime(2006, 10, 25, 14, 30, 59), datetime(2006, 10, 25, 14, 30, 59), ), ( datetime(2006, 10, 25, 14, 30, 59, 200), datetime(2006, 10, 25, 14, 30, 59, 200), ), ('2006 10 25 2:30 PM', datetime(2006, 10, 25, 14, 30)), )), ('%Y.%m.%d %H:%M:%S.%f', ( ( '2006.10.25 14:30:45.0002', datetime(2006, 10, 25, 14, 30, 45, 200), ), )), ] f = DateTimeField() for input_format, values in tests: f = DateTimeField(input_formats=[input_format]) for value, expected_datetime in values: with self.subTest(value=value, input_format=input_format): self.assertEqual(f.clean(value), expected_datetime)
class PunchOut(ModelForm): employee_id = forms.IntegerField(required=False) punchin = DateTimeField(input_formats=settings.DATETIME_INPUT_FORMATS, required=False) punchout = DateTimeField(input_formats=settings.DATETIME_INPUT_FORMATS, required=False) workhours = TimeField(required=False) def format_timedelta(i, td): hours, remainder = divmod(td, 3600) minutes, seconds = divmod(remainder, 60) hours, minutes, seconds = int(hours), int(minutes), int(seconds) if hours < 10: hours = '0%s' % int(hours) if minutes < 10: minutes = '0%s' % minutes if seconds < 10: seconds = '0%s' % seconds return '%s:%s:%s' % (hours, minutes, seconds) def __init__(self, *args, **kwargs): super(PunchOut, self).__init__(*args, **kwargs) [ self.fields.pop(f) for f in self.fields.keys() if f in self.Meta.exclude ] for field in self: field.field.widget.attrs['readonly'] = True class Meta: model = CheckInUser fields = ('employee_id', 'punchin', 'punchout', 'workhours') exclude = ('employee_id', )
class BaseReportForm(ShuupReportForm): shop = forms.ChoiceField(label=_("Shop"), help_text=_("Filter report results by shop.")) date_range = EnumField(DateRangeChoices).formfield( form_class=ChoiceField, label=_("Date Range"), initial=DateRangeChoices.RUNNING_WEEK, help_text=_("Filter report results by a date range.")) start_date = DateTimeField(label=_("Start Date"), required=False, help_text=_("For a custom date range.")) end_date = DateTimeField(label=_("End Date"), required=False, help_text=_("For a custom date range.")) def __init__(self, *args, **kwargs): super(BaseReportForm, self).__init__(*args, **kwargs) self.fields["shop"].choices = [ (shop.pk, shop.name) for shop in Shop.objects.get_for_user(self.request.user) ] def clean(self): data = self.cleaned_data if data.get("date_range") == DateRangeChoices.CUSTOM: try: data["date_range"] = parse_date_range( (data["start_date"], data["end_date"])) except Exception as exc: self.add_error("__all__", force_text(exc)) return data
class ObservationLogForm(forms.Form): start_time = DateTimeField(widget=DateTimePicker( options={"format": "YYYY-MM-DD HH:mm:ss"} )) end_time = DateTimeField(widget=DateTimePicker( options={"format": "YYYY-MM-DD HH:mm:ss"} ))
class OvertimeApplicationForm(ModelForm): date = DateField(label='Date', required=True, widget=DateInput(attrs={ 'class': 'form-control', 'type': 'date' })) start_time = DateTimeField( label='Start Time', required=True, widget=DateTimeInput(attrs={'class': 'form-control'})) end_time = DateTimeField( label='End Time', required=True, widget=DateTimeInput(attrs={'class': 'form-control'})) description = CharField(label='Description', required=True, widget=Textarea(attrs={'class': 'form-control'})) class Meta: model = OvertimeApplication fields = ['start_time', 'end_time', 'description']
class CourseForm(forms.ModelForm): courseCode = forms.CharField( label="Course Code", max_length=10, widget=forms.TextInput(attrs={'placeholder': 'e.g. CS F213'})) courseName = forms.CharField( label="Course Name", max_length=100, widget=forms.TextInput( attrs={'placeholder': 'e.g. OBJECT ORIENTED PROGRAMMING'})) midsemDateTime = DateTimeField( input_formats=["%d/%m/%y %H"], label="Midsem Date and Time (dd/mm/yy h)", widget=forms.TextInput(attrs={'placeholder': 'e.g. 4/10/19 9'})) compreDateTime = DateTimeField( input_formats=["%d/%m/%y %H"], label="Compre Date and Time (dd/mm/yy h)", widget=forms.TextInput(attrs={'placeholder': 'e.g. 9/12/19 14'})) class Meta: model = Course fields = "__all__" labels = { "courseIC": "Course IC", }
class EncomendaForm(forms.ModelForm): cliente = ModelChoiceField( queryset=Customer.objects.all(), widget=forms.Select(attrs={'class': 'form-control'})) data_encomenda = DateTimeField(input_formats=["%d/%m/%Y"], widget=forms.DateTimeInput( format="%m/%d/%Y", attrs={ 'class': 'form-control datetimepicker-input', 'data-target': '#datetimepicker1' })) data_entrega = DateTimeField(input_formats=["%d/%m/%Y"], widget=forms.DateTimeInput( format="%m/%d/%Y", attrs={ 'class': 'form-control datetimepicker-input', 'data-target': '#datetimepicker1' })) class Meta: model = Encomenda fields = '__all__'
class TakeAttendance(Form): # email = EmailField(readonly = True).attrs['readonly'] class_name = ModelChoiceField(queryset=Class.objects.all(), to_field_name="title") from_date = DateTimeField(widget=MyDateInput) to_date = DateTimeField(widget=MyDateInput)
def test_datetimefield_clean_input_formats(self): tests = [ ( "%Y %m %d %I:%M %p", ( (date(2006, 10, 25), datetime(2006, 10, 25, 0, 0)), (datetime(2006, 10, 25, 14, 30), datetime(2006, 10, 25, 14, 30)), ( datetime(2006, 10, 25, 14, 30, 59), datetime(2006, 10, 25, 14, 30, 59), ), ( datetime(2006, 10, 25, 14, 30, 59, 200), datetime(2006, 10, 25, 14, 30, 59, 200), ), ("2006 10 25 2:30 PM", datetime(2006, 10, 25, 14, 30)), # ISO-like formats are always accepted. ("2006-10-25 14:30:45", datetime(2006, 10, 25, 14, 30, 45)), ), ), ( "%Y.%m.%d %H:%M:%S.%f", (( "2006.10.25 14:30:45.0002", datetime(2006, 10, 25, 14, 30, 45, 200), ), ), ), ] for input_format, values in tests: f = DateTimeField(input_formats=[input_format]) for value, expected_datetime in values: with self.subTest(value=value, input_format=input_format): self.assertEqual(f.clean(value), expected_datetime)
class CaseForm(forms.ModelForm): open_ended = forms.BooleanField(widget=forms.CheckboxInput(), required=False) events = forms.CharField(widget=forms.TextInput(attrs={'class': 'hidden'}), required=False, label="") start_date = DateTimeField(widget=forms.widgets.DateTimeInput( format='%m/%d/%Y')) end_date = DateTimeField( widget=forms.widgets.DateTimeInput(format='%m/%d/%Y'), required=False) # title_de: case title in english. # This field was auto-generated by django-modeltranslate title_de = forms.CharField(widget=forms.TextInput(), label="Title [English] (optional)", required=False) # description_de: case description in english. # This field was auto-generated by django-modeltranslate description_de = forms.CharField(widget=forms.Textarea(), label="Description [English] (optional)", required=False) class Meta: model = Case fields = [ 'title', 'description', 'start_date', 'end_date', 'category', 'open_ended', 'draft', 'events', 'title_de', 'description_de' ]
class ScheduleDeliveryForm(forms.ModelForm): start_date = DateTimeField( input_formats=["%Y/%m/%d %H:%M"], widget=forms.DateTimeInput(attrs={'class': 'datetimepicker'})) end_date = DateTimeField( input_formats=["%Y/%m/%d %H:%M"], widget=forms.DateTimeInput(attrs={'class': 'datetimepicker'})) name = forms.CharField(disabled=True) class Meta: model = Schedule fields = '__all__' exclude = ('is_completed', 'order') widgets = { 'description': forms.Textarea, 'involved_people': forms.CheckboxSelectMultiple() } def __init__(self, *args, **kwargs): super(ScheduleDeliveryForm, self).__init__(*args, **kwargs) involved_people = self.fields['involved_people'] queryset = Profile.objects.filter(user_type="Inventory") involved_people.queryset = queryset
class ScheduleForm(forms.ModelForm): start_date = DateTimeField( input_formats=["%Y/%m/%d %H:%M"], widget=forms.DateTimeInput(attrs={'class': 'datetimepicker'})) end_date = DateTimeField( input_formats=["%Y/%m/%d %H:%M"], widget=forms.DateTimeInput(attrs={'class': 'datetimepicker'})) class Meta: model = Schedule fields = [ 'name', 'description', 'order', 'involved_people', 'start_date', 'end_date' ] widgets = { 'description': forms.Textarea, 'involved_people': forms.CheckboxSelectMultiple() } def __init__(self, *args, **kwargs): super(ScheduleForm, self).__init__(*args, **kwargs) involved_people = self.fields['involved_people'] queryset = Profile.objects.order_by('user_type') involved_people.queryset = queryset
class ReservationForm(ModelForm): start = DateTimeField() end = DateTimeField() class Meta: model = Reservation fields = ("title", "room", "start", "end", "is_public", ) def clean_start(self): start = self.cleaned_data['start'] room = self.cleaned_data.get("room") if not room: return reservation = Reservation.objects.filter( room=room, status="a", start__lte=start, end__gte=start).first() if reservation and self.instance != reservation: raise ValidationError( _("The start date overlaps with an already approved " "reservation.")) return start def clean_end(self): end = self.cleaned_data['end'] room = self.cleaned_data.get("room") if not room: return reservation = Reservation.objects.filter( room=room, status="a", start__lte=end, end__gte=end).first() if reservation and self.instance != reservation: raise ValidationError( _("The end date overlaps with an already approved " "reservation.")) return end def clean(self): data = super().clean() start = data.get("start") end = data.get("end") room = data.get("room") if not (start and end and room): return data if end < start: raise ValidationError( _("End date must be later than start date.")) rsv = Reservation.objects.filter( room=room, status="a", start__lte=start, end__gte=end).first() if rsv and rsv != self.instance: raise ValidationError(_("The given dates overlap with the " "timeline of another reservation for " "this room."))
class FilterForm(Form): city = CharField(max_length=255, required=True, widget=TextInput(attrs={'class': 'city-input'})) date_from = DateTimeField( required=False, widget=TextInput(attrs={'placeholder': '2020-07-23'})) date_to = DateTimeField( required=False, widget=TextInput(attrs={'placeholder': 'Year-Month-Day'}))
def __init__(self, *args, **kwargs): """Custom model form constructor to account for custom related objects, i.e. instances of (subclasses of) `ViewFilterField`. """ super(ViewForm, self).__init__(*args, **kwargs) # Initialize form field for related `ReportType` object self.fields["report_type"] = ChoiceField(label="Report Type", choices=choices.REPORT_TYPE, required=True) # Initialize form fields for related `DateRange` object, assigning # custom date picker widgets self.fields["dr_type"] = TypedChoiceField( label="Report Date Range", choices=choices.DATE_RANGE_TYPE, coerce=int, widget=RadioSelect()) self.fields["quantity"] = IntegerField(label="", min_value=1, required=False) self.fields["unit"] = TypedChoiceField(label="", coerce=int, choices=choices.TIME_UNIT, required=False) self.fields["begin"] = DateTimeField(label="", required=False, widget=DatePickerWidget()) self.fields["end"] = DateTimeField(label="", required=False, widget=DatePickerWidget()) # Set default form value for `DateRange`'s date range type field self.fields["dr_type"].initial = choices.DATE_RANGE_TYPE_FIXED # Fill form with existing `ViewFilterField` data if any. Unbound forms, # i.e. forms without data, don't have an instance id. if self.instance.id: # Note, there can at most be one `DateRange` and one `ReportType` # object on a view. See `models.ViewFilterField`'s docstring for # more info. for date_range in DateRange.objects.filter( foreign_key=self.instance.id): self.fields["dr_type"].initial = date_range.dr_type self.fields["unit"].initial = date_range.unit self.fields["quantity"].initial = date_range.quantity if date_range.begin: self.fields["begin"].initial = date_range.begin.strftime( "%Y-%m-%d") if date_range.end: self.fields["end"].initial = date_range.end.strftime( "%Y-%m-%d") for report_type in ReportType.objects.filter( foreign_key=self.instance.id): self.fields["report_type"].initial = report_type.value
def test_datetimefield_clean(self): tests = [ (date(2006, 10, 25), datetime(2006, 10, 25, 0, 0)), (datetime(2006, 10, 25, 14, 30), datetime(2006, 10, 25, 14, 30)), (datetime(2006, 10, 25, 14, 30, 59), datetime(2006, 10, 25, 14, 30, 59)), ( datetime(2006, 10, 25, 14, 30, 59, 200), datetime(2006, 10, 25, 14, 30, 59, 200), ), ('2006-10-25 14:30:45.000200', datetime(2006, 10, 25, 14, 30, 45, 200)), ('2006-10-25 14:30:45.0002', datetime(2006, 10, 25, 14, 30, 45, 200)), ('2006-10-25 14:30:45', datetime(2006, 10, 25, 14, 30, 45)), ('2006-10-25 14:30:00', datetime(2006, 10, 25, 14, 30)), ('2006-10-25 14:30', datetime(2006, 10, 25, 14, 30)), ('2006-10-25', datetime(2006, 10, 25, 0, 0)), ('10/25/2006 14:30:45.000200', datetime(2006, 10, 25, 14, 30, 45, 200)), ('10/25/2006 14:30:45', datetime(2006, 10, 25, 14, 30, 45)), ('10/25/2006 14:30:00', datetime(2006, 10, 25, 14, 30)), ('10/25/2006 14:30', datetime(2006, 10, 25, 14, 30)), ('10/25/2006', datetime(2006, 10, 25, 0, 0)), ('10/25/06 14:30:45.000200', datetime(2006, 10, 25, 14, 30, 45, 200)), ('10/25/06 14:30:45', datetime(2006, 10, 25, 14, 30, 45)), ('10/25/06 14:30:00', datetime(2006, 10, 25, 14, 30)), ('10/25/06 14:30', datetime(2006, 10, 25, 14, 30)), ('10/25/06', datetime(2006, 10, 25, 0, 0)), # ISO 8601 formats. ( '2014-09-23T22:34:41.614804', datetime(2014, 9, 23, 22, 34, 41, 614804), ), ('2014-09-23T22:34:41', datetime(2014, 9, 23, 22, 34, 41)), ('2014-09-23T22:34', datetime(2014, 9, 23, 22, 34)), ('2014-09-23', datetime(2014, 9, 23, 0, 0)), ('2014-09-23T22:34Z', datetime(2014, 9, 23, 22, 34, tzinfo=utc)), ( '2014-09-23T22:34+07:00', datetime(2014, 9, 23, 22, 34, tzinfo=get_fixed_timezone(420)), ), # Whitespace stripping. (' 2006-10-25 14:30:45 ', datetime(2006, 10, 25, 14, 30, 45)), (' 2006-10-25 ', datetime(2006, 10, 25, 0, 0)), (' 10/25/2006 14:30:45 ', datetime(2006, 10, 25, 14, 30, 45)), (' 10/25/2006 14:30 ', datetime(2006, 10, 25, 14, 30)), (' 10/25/2006 ', datetime(2006, 10, 25, 0, 0)), (' 10/25/06 14:30:45 ', datetime(2006, 10, 25, 14, 30, 45)), (' 10/25/06 ', datetime(2006, 10, 25, 0, 0)), ( ' 2014-09-23T22:34:41.614804 ', datetime(2014, 9, 23, 22, 34, 41, 614804), ), (' 2014-09-23T22:34Z ', datetime(2014, 9, 23, 22, 34, tzinfo=utc)), ] f = DateTimeField() for value, expected_datetime in tests: with self.subTest(value=value): self.assertEqual(f.clean(value), expected_datetime)
class CreateEventForm(forms.ModelForm): start_time = DateTimeField(label="Start time", help_text="e.g. 2018-9-21 15:30") end_time = DateTimeField(label="End time", help_text="e.g. 2018-9-21 17:00") class Meta: model = Event fields = ('title', 'description', 'start_time', 'end_time', 'public_flag')
class BulkDateForm(Form): """Form for changing the start and end dates of many snippets at once""" start_date = DateTimeField(label='Start Date', widget=DateInput(attrs={'class': 'datetime'}), required=False) end_date = DateTimeField(label='End Date', widget=DateInput(attrs={'class': 'datetime'}), required=False) ids = CharField(required=True, widget=widgets.HiddenInput())
class BaseReportForm(forms.Form): report = forms.CharField(widget=HiddenInput) shop = forms.ChoiceField(label=_("Shop"), help_text=_("Filter report results by shop.")) date_range = EnumField(DateRangeChoices).formfield( form_class=ChoiceField, label=_("Date Range"), initial=DateRangeChoices.RUNNING_WEEK, help_text=_("Filter report results by a date range.")) start_date = DateTimeField(label=_("Start Date"), required=False, help_text=_("For a custom date range.")) end_date = DateTimeField(label=_("End Date"), required=False, help_text=_("For a custom date range.")) writer = forms.ChoiceField( label=_("Output Format"), initial="html", choices=[(name, name.title()) for name in sorted(get_writer_names())], help_text=_("The format to show the report results.")) force_download = forms.BooleanField( required=False, label=_("Download"), help_text=_("Check this to download the report.")) def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') super(BaseReportForm, self).__init__(*args, **kwargs) self.fields["shop"].choices = [ (shop.pk, shop.name) for shop in Shop.objects.get_for_user(self.request.user) ] def clean(self): data = self.cleaned_data if data.get("date_range") == DateRangeChoices.CUSTOM: try: data["date_range"] = parse_date_range( (data["start_date"], data["end_date"])) except Exception as exc: self.add_error("__all__", force_text(exc)) return data def get_report_instance(self): """ :rtype: shuup.reports.reporter.base.ShuupReportBase """ from shuup.reports.report import get_report_class data = self.cleaned_data writer_name = data.pop("writer") report_class = get_report_class(data["report"]) report = report_class(writer_name=writer_name, **data) return report
class EventForm(NewsForm): date = DateTimeField(input_formats=('%d.%m.%Y %H:%M', ), widget=DateTimeInput(format="%d.%m.%Y %H:%M")) deadline = DateTimeField(input_formats=('%d.%m.%Y %H:%M', ), widget=DateTimeInput(format="%d.%m.%Y %H:%M")) class Meta: exclude = ('member', 'madeByAdmin') model = Event widgets = { 'description': SummernoteWidget(attrs={'width': '100%'}), }
class CourseAPIPostForm(Form): name = CharField(max_length=200) info = CharField(required=False) start_date = DateTimeField() end_date = DateTimeField() price = DecimalField(max_digits=10, decimal_places=2, validators=[MinValueValidator(0)]) quota = IntegerField(validators=[MinValueValidator(0)]) sold = IntegerField(validators=[MinValueValidator(0)], required=False) picture = FileField(required=False)
def test_datetimefield_4(self): f = DateTimeField() # Test whitespace stripping behavior (#5714) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean(' 2006-10-25 14:30:45 ')) self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(' 2006-10-25 ')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean(' 10/25/2006 14:30:45 ')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean(' 10/25/2006 14:30 ')) self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(' 10/25/2006 ')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean(' 10/25/06 14:30:45 ')) self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(' 10/25/06 ')) with self.assertRaisesMessage(ValidationError, "'Enter a valid date/time.'"): f.clean(' ')
class EventForm(ModelForm): end_date = DateTimeField( input_formats=['%Y-%m-%d %H:%M'], widget=DateTimePickerInput(format='%Y-%m-%d %H:%M')) beginning_date = DateTimeField( input_formats=['%Y-%m-%d %H:%M'], widget=DateTimePickerInput(format='%Y-%m-%d %H:%M'), ) class Meta: model = Event fields = ('id', 'name', 'category', 'address', 'place', 'beginning_date', 'end_date', 'image')
def parse_date_time(self, input): field = DateTimeField() try: return field.to_python(input) except ValidationError: pass match = self.duration_re.match(input) if match: kwargs = dict((k, int(v)) for (k, v) in match.groupdict().items() if v is not None) return timezone.now() - timedelta(**kwargs) raise ValueError("%s could not be interpereted as a datetime" % input)
class EventoForm(ModelForm): startdate = DateTimeField(widget=BootstrapDateTimePickerInput(format='%d/%m/%Y %H:%M'), input_formats=('%d/%m/%Y %H:%M',)) enddate = DateTimeField(widget=BootstrapDateTimePickerInput(format='%d/%m/%Y %H:%M'), input_formats=('%d/%m/%Y %H:%M',)) class Meta: model = Evento fields = ['nome', 'descricao', 'startdate', 'enddate', 'local'] widgets = { 'nome': TextInput(attrs={'class': 'form-control'},), 'descricao': Textarea(attrs={'class': 'form-control'}), 'local': TextInput(attrs={'class': 'form-control'}), }
class Form_RegistroTipoUsuario(forms.ModelForm): #fechaCreacionTipoUsuario = forms.DateTimeField(widget=Form_DateInput) #fechaCreacionTipoUsuario = DateTimeField(input_formats=["%Y-%m-%d %H:%M:%S"]) #fechaCreacionTipoUsuario = forms.DateField(input_formats=settings.DATE_INPUT_FORMATS) fechaCreacionTipoUsuario = DateTimeField( widget=forms.HiddenInput(), input_formats=["%Y-%m-%d %H:%M:%S"]) estadoTipoUsuario = forms.BooleanField(widget=forms.HiddenInput(), initial=True) class Meta: model = TipoUsuario fields = '__all__' exclude = ('fechaCreacionTipoUsuario', 'estadoTipoUsuario') labels = { 'idTipoUsuario': 'Identificador del Reservacion', 'nombreTipoUsuario': 'Nombre', 'fechaCreacionTipoUsuario': 'Descripción', 'estadoTipoUsuario': 'Es Activo', } widgets = { 'nombreTipoUsuario': forms.TextInput( attrs={ 'class': 'form-control', 'placeholder': 'Ingrese el titulo del Tipo de usuario' }), }
class SearchFormTest(Form): # TODO: Create a field for ModelChoiceField STATUS_CHOICES = [ ('', 'All'), (True, 'Active'), (False, 'Inactive') ] field1 = CharField() field2 = TextInput() field3 = ChoiceField(choices=STATUS_CHOICES) field4 = BooleanField() field5 = DateField() field6 = DateTimeField() field7 = FloatField() field8 = DecimalField() field9 = IntegerField() field90 = CharField() field91 = CharField() def __init__(self, *args, **kwargs): super(SearchFormTest, self).__init__(*args, **kwargs) self.fields['field90'].label = "Date Start" self.fields['field91'].label = "Date End"
class Form_RegistroEditorial(forms.ModelForm): class Meta: model = Editorial fields = '__all__' exclude = ('fechaCreacionEditorial', 'estadoEditorial') labels = { 'idAutorEditorial': 'Identificador del Editorial', 'tituloAutorEditorial': 'Nombre', 'descripcionEditorial': 'Descripción', 'fechaCreacionEditorial': 'Fecha de creación', 'estadoAutorEditorial': 'Es Activo', } widgets = { 'tituloEditorial': forms.TextInput( attrs={ 'class': 'form-control', 'placeholder': 'Ingrese el titulo de la Editorial' }), 'descripcionEditorial': forms.Textarea( attrs={ 'class': 'form-control', 'placeholder': 'Ingrese la descripción de la Editorial' }), } fechaCreacionEditorial = DateTimeField(widget=forms.HiddenInput(), input_formats=["%Y-%m-%d %H:%M:%S"]) estadoEditorial = forms.BooleanField(widget=forms.HiddenInput(), initial=True)
def test_datetimefield_2(self): f = DateTimeField(input_formats=['%Y %m %d %I:%M %p']) self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(datetime.date(2006, 10, 25))) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean(datetime.datetime(2006, 10, 25, 14, 30))) self.assertEqual( datetime.datetime(2006, 10, 25, 14, 30, 59), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) ) self.assertEqual( datetime.datetime(2006, 10, 25, 14, 30, 59, 200), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) ) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('2006 10 25 2:30 PM')) with self.assertRaisesMessage(ValidationError, "'Enter a valid date/time.'"): f.clean('2006-10-25 14:30:45')
def _prepare_date(self, field, value): if not (field.auto_now or field.auto_now_add): formfield = DateTimeField(required=not field.null) return formfield.clean(value)
def test_datetimefield_3(self): f = DateTimeField(required=False) self.assertIsNone(f.clean(None)) self.assertEqual('None', repr(f.clean(None))) self.assertIsNone(f.clean('')) self.assertEqual('None', repr(f.clean('')))
def test_datetimefield_5(self): f = DateTimeField(input_formats=['%Y.%m.%d %H:%M:%S.%f']) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('2006.10.25 14:30:45.0002'))
def test_datetimefield_1(self): f = DateTimeField() self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean(datetime.date(2006, 10, 25))) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean(datetime.datetime(2006, 10, 25, 14, 30))) self.assertEqual( datetime.datetime(2006, 10, 25, 14, 30, 59), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59)) ) self.assertEqual( datetime.datetime(2006, 10, 25, 14, 30, 59, 200), f.clean(datetime.datetime(2006, 10, 25, 14, 30, 59, 200)) ) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('2006-10-25 14:30:45.000200')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('2006-10-25 14:30:45.0002')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean('2006-10-25 14:30:45')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('2006-10-25 14:30:00')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('2006-10-25 14:30')) self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean('2006-10-25')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('10/25/2006 14:30:45.000200')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean('10/25/2006 14:30:45')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('10/25/2006 14:30:00')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('10/25/2006 14:30')) self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean('10/25/2006')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45, 200), f.clean('10/25/06 14:30:45.000200')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30, 45), f.clean('10/25/06 14:30:45')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('10/25/06 14:30:00')) self.assertEqual(datetime.datetime(2006, 10, 25, 14, 30), f.clean('10/25/06 14:30')) self.assertEqual(datetime.datetime(2006, 10, 25, 0, 0), f.clean('10/25/06')) with self.assertRaisesMessage(ValidationError, "'Enter a valid date/time.'"): f.clean('hello') with self.assertRaisesMessage(ValidationError, "'Enter a valid date/time.'"): f.clean('2006-10-25 4:30 p.m.')
def test_datetimefield_changed(self): format = '%Y %m %d %I:%M %p' f = DateTimeField(input_formats=[format]) d = datetime.datetime(2006, 9, 17, 14, 30, 0) self.assertFalse(f.has_changed(d, '2006 09 17 2:30 PM'))