def test_timefield_3(self): f = TimeField() # Test whitespace stripping behavior (#5714) self.assertEqual(datetime.time(14, 25), f.clean(' 14:25 ')) self.assertEqual(datetime.time(14, 25, 59), f.clean(' 14:25:59 ')) with self.assertRaisesMessage(ValidationError, "'Enter a valid time.'"): f.clean(' ')
def test_timefield_changed(self): t1 = datetime.time(12, 51, 34, 482548) t2 = datetime.time(12, 51) f = TimeField(input_formats=['%H:%M', '%H:%M %p']) self.assertTrue(f.has_changed(t1, '12:51')) self.assertFalse(f.has_changed(t2, '12:51')) self.assertFalse(f.has_changed(t2, '12:51 PM'))
def test_timefield_changed(self): t1 = datetime.time(12, 51, 34, 482548) t2 = datetime.time(12, 51) f = TimeField(input_formats=["%H:%M", "%H:%M %p"]) self.assertTrue(f.has_changed(t1, "12:51")) self.assertFalse(f.has_changed(t2, "12:51")) self.assertFalse(f.has_changed(t2, "12:51 PM"))
class horarioAyudantiaForm(ModelForm): hora_inicio = TimeField(required=True, label="Hora de Inicio", widget=TextInput(attrs={'class': 'form-control'})) hora_final = TimeField(required=True, label="Hora de finalización", widget=TextInput(attrs={'class': 'form-control'})) DIAS = [ ("1", "Lunes"), ("2", "Martes"), ("3", "Miercoles"), ("4", "Jueves"), ("5", "Viernes"), ("6", "Sábado"), ("7", "Domingo"), ] dia = ChoiceField(required=True, label="Día", choices=DIAS, widget=Select(attrs={'class': 'form-control'})) class Meta: model = HorarioAyudantia exclude = ('ayudantia', 'activo')
class ScheduleForm(forms.ModelForm): monfr1 = TimeField(help_text = 'UTC date and time when voting begins', widget=SelectTimeWidget) stsn1 = TimeField(help_text = 'UTC date and time when voting begins', widget=SelectTimeWidget) dinner1 = TimeField(help_text = 'UTC date and time when voting begins', widget=SelectTimeWidget) breakfast1 = TimeField(help_text = 'UTC date and time when voting begins', widget=SelectTimeWidget) supper1 = TimeField(help_text = 'UTC date and time when voting begins', widget=SelectTimeWidget) monfr2 = TimeField(help_text='UTC date and time when voting begins', widget=SelectTimeWidget) stsn2 = TimeField(help_text='UTC date and time when voting begins', widget=SelectTimeWidget) dinner2 = TimeField(help_text='UTC date and time when voting begins', widget=SelectTimeWidget) breakfast2 = TimeField(help_text='UTC date and time when voting begins', widget=SelectTimeWidget) supper2 = TimeField(help_text='UTC date and time when voting begins', widget=SelectTimeWidget) class Meta: model = Schedule fields = ('monfr1', 'stsn1', 'dinner1', 'breakfast1', 'supper1', 'monfr2', 'stsn2', 'dinner2', 'breakfast2', 'supper2', 'image') def __init__(self, *args, **kwargs): super(ScheduleForm, self).__init__(*args, **kwargs)
class DistributionModelForm(ModelForm): distribution_hour_link = TimeField( input_formats=(settings.TIME_FORMAT,), widget=TimePickerInput( attrs={'placeholder': 'Seleccione una hora'} )) end_available_distribution_link = TimeField( input_formats=(settings.TIME_FORMAT,), widget=TimePickerInput( attrs={'placeholder': 'Seleccione una hora'} )) class Meta: model = Distribution fields = ( 'name', 'link_id', 'distribution_hour_link', 'end_available_distribution_link', ) def __init__(self, *args, **kwargs): kwargs.pop('user', None) super(DistributionModelForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = self.cleaned_data end_time = cleaned_data.get('end_available_distribution_link') initial_time = cleaned_data.get('distribution_hour_link') if end_time and initial_time and end_time < initial_time: self.add_error('end_available_distribution_link', "La hora tiene que ser mayor que la inicial")
class EventForm(ModelForm): start_date = DateField(help_text="Many formats supported, eg: 'October 25 2006', '2006-10-25', '10/25/2006'", input_formats=date_formats) start_time = TimeField(help_text="Optional, supported formats (12 or 24 hour): '21','21:00', '9PM', '9pm', '9:00 pm', '9:00 PM'",required=False, input_formats=time_formats) end_date = DateField(help_text="Optional, leave blank if it is a single day event", required=False, input_formats=date_formats) end_time = TimeField(help_text="Optional", required=False, input_formats=time_formats) class Meta: model = Event exclude = ('slug')
def test_timefield_1(self): f = TimeField() self.assertEqual(datetime.time(14, 25), f.clean(datetime.time(14, 25))) self.assertEqual(datetime.time(14, 25, 59), f.clean(datetime.time(14, 25, 59))) self.assertEqual(datetime.time(14, 25), f.clean('14:25')) self.assertEqual(datetime.time(14, 25, 59), f.clean('14:25:59')) with self.assertRaisesMessage(ValidationError, "'Enter a valid time.'"): f.clean('hello') with self.assertRaisesMessage(ValidationError, "'Enter a valid time.'"): f.clean('1:24 p.m.')
class RestaurantForm(ModelForm): opening_time = TimeField(widget=TimeInput(attrs={'type': 'time' })) last_opening_time = TimeField(widget=TimeInput(attrs={'type': 'time' })) closing_time = TimeField(widget=TimeInput(attrs={'type': 'time' })) name = CharField() address = CharField() phone = CharField() capacity = IntegerField() image = URLField() description = Textarea() category = ModelChoiceField(queryset=Category.objects.all()) class Meta: model = Restaurant fields = ['name', 'description', 'address', 'phone', 'capacity', 'opening_time', 'last_opening_time', 'closing_time', 'image', 'category']
class TimeTrackingForm(ModelForm): date = DateField(widget=DateInput(format = '%d.%m.%Y'), input_formats=('%d.%m.%Y',)) start = TimeField(widget=TimeInput(format = '%H:%M'), input_formats=('%H:%M',)) end = TimeField(widget=TimeInput(format = '%H:%M'), input_formats=('%H:%M',)) class Meta: model = Time_Entry fields = ['description', 'project_id'] widgets = { 'current_day': DateInput() } error_messages = { 'description': { 'max_length': _('Die Beschreibung ist zu lang.'), }, }
def test_timefield_2(self): f = TimeField(input_formats=['%I:%M %p']) self.assertEqual(datetime.time(14, 25), f.clean(datetime.time(14, 25))) self.assertEqual(datetime.time(14, 25, 59), f.clean(datetime.time(14, 25, 59))) self.assertEqual(datetime.time(4, 25), f.clean('4:25 AM')) self.assertEqual(datetime.time(16, 25), f.clean('4:25 PM')) with self.assertRaisesMessage(ValidationError, "'Enter a valid time.'"): f.clean('14:30:45')
class EventFinderForm(ModelForm): class Meta: model = EventFinder fields = [ 'loc_type', 'price', 'min_rating', 'start_time', 'end_time', 'result_count', 'search_radius', 'lat_coord', 'long_coord', ] def __init__(self, *args, **kwargs): super(EventFinderForm, self).__init__(*args, **kwargs) self.fields['loc_type'].widget.attrs.update( {'class': 'form-control form-control-lg'}) self.fields['price'].widget.attrs.update( {'class': 'form-control form-control-lg'}) self.fields['min_rating'].widget.attrs.update( {'class': 'form-control form-control-lg'}) self.fields['start_time'].widget.attrs.update( {'class': 'form-control form-control-lg'}) self.fields['end_time'].widget.attrs.update( {'class': 'form-control form-control-lg'}) self.fields['result_count'].widget.attrs.update( {'class': 'form-control form-control-lg'}) self.fields['search_radius'].widget.attrs.update( {'class': 'form-control form-control-lg'}) self.fields['lat_coord'].widget.attrs.update({'class': 'hidden'}) self.fields['long_coord'].widget.attrs.update({'class': 'hidden'}) self.fields['lat_coord'].label = '' self.fields['long_coord'].label = '' start_time = TimeField(widget=SelectTimeWidget(twelve_hr=True, minute_step=15, use_seconds=False, required=False), required=False, label=u'Start Time') end_time = TimeField(widget=SelectTimeWidget(twelve_hr=True, minute_step=15, use_seconds=False, required=False), required=False, label=u'End Time')
class EditEventForm(ModelForm): time_event = TimeField(required=False, widget=SelectTimeWidget(minute_step=10, second_step=10), label='Час') #city = ModelChoiceField(required=True, queryset=City.objects.all(), label="Область", initial=City.objects.all()[0]) class Meta: model = Event fields = ['name', 'date_event', 'time_event','location', 'city', 'status', 'contact', 'fb_page', 'description'] localized_fields = ('name', 'date_event', 'time_event', 'location', 'city', 'status', 'contact', 'description') labels = { 'name': 'Назва', 'date_event': 'Дата', 'time_event': 'Час', 'location': 'Адреса', 'status': 'Статус', 'city': 'Область', 'fb_page': 'Facebook-сторінка', # 'max_part' : 'Максимальна кількість учасників', # 'min_part': 'Мінімальна кількість учасників', 'description': 'Опис', } widgets = { 'date_event': SelectDateWidget(), 'time_event': TimeInput(), }
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 form_pc_packingequipmentadjuster(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = product_equipment_breakdown_repair fields = ['Date_word','Time_word','Gang','Coworker','Event','Action']
class form_pc_lineoperator(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = product_line_operator fields = ['Date_word','Time_word','Line','Gang','Coworker','Event','Action']
def test_timefield(self): e = { 'required': 'REQUIRED', 'invalid': 'INVALID', } f = TimeField(error_messages=e) self.assertFormErrors(['REQUIRED'], f.clean, '') self.assertFormErrors(['INVALID'], f.clean, 'abc')
def test_timefield(self): e = { "required": "REQUIRED", "invalid": "INVALID", } f = TimeField(error_messages=e) self.assertFormErrors(["REQUIRED"], f.clean, "") self.assertFormErrors(["INVALID"], f.clean, "abc")
class form_okk_controlgrainmoisture(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = okk_control_grain_moisture fields = ['Date_word', 'Time_word', 'Moisture_excuse1', 'Moisture_excuse2', 'Moisture_excuse3']
class form_mill_elevatorshipmentwheattomill(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = elevator_shipment_wheat_to_mill fields = ['Date_word','Time_word', 'Moisture','Nature','Gluten','Vitreous','Yellowish']
class form_mill_bagging(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = mill_bagging fields = ['Date_word','Time_word','Gang', 'ReceivedBags_flour','ReceivedBags_zo','ReceivedBags_zelen']
class form_okk_packproductsqualitycontrol(ModelForm): # контроль качества фасованной продукции Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = okk_packproducts_quality_control fields = ['Date_word', 'Time_word', 'Product', 'BatchNumber', 'Moisture', 'DeviationFromAverageLength', 'Crumb', 'Deformation', 'Split', 'Cut', 'ImpregnationTrace']
class form_mill_controlmagneticinstallations(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = mill_control_magnetic_installations fields = ['Date_word','Time_word','Gang', 'CheckPassed','CheckFailed']
class ReservationForm(ModelForm): party_size = IntegerField() notes = CharField(required=False, widget=Textarea()) time = TimeField(widget=TimeInput(attrs={'type': 'time' })) date = DateField(widget=DateInput(attrs={'type': 'date', 'min': dt.date.today() })) class Meta: model = Reservation fields = ['party_size', 'date', 'time', 'notes'] def clean_time(self): cleaned_time = self.cleaned_data['time'] restaurant = self.instance.restaurant closing = restaurant.closing_time opening = restaurant.opening_time last_opening = restaurant.last_opening_time if restaurant.open_past_midnight(): if last_opening < cleaned_time and cleaned_time < opening: self.add_error('time', 'Restaurant not open at that time') else: if cleaned_time < opening or last_opening < cleaned_time: self.add_error('time', 'Restaurant not open at that time') return cleaned_time def clean_date(self): cleaned_date = self.cleaned_data['date'] if cleaned_date < dt.date.today(): self.add_error('date', 'Cannot make reservation for past date') return cleaned_date def clean_party_size(self): cleaned_party_size = self.cleaned_data['party_size'] restaurant = self.instance.restaurant if cleaned_party_size > restaurant.capacity: self.add_error('party_size', 'Party size too large') return cleaned_party_size def clean(self): cleaned_data = super().clean() cleaned_time = cleaned_data['time'] cleaned_date = cleaned_data['date'] cleaned_party_size = cleaned_data['party_size'] restaurant = self.instance.restaurant reservation_datetime = datetime(cleaned_date.year, cleaned_date.month, cleaned_date.day, cleaned_time.hour, cleaned_time.minute) if reservation_datetime < (datetime.now() + timedelta(minutes=30)): self.add_error('time', 'Reservation must be at least 30 minutes in future') if not restaurant.room_for(cleaned_date, cleaned_time, cleaned_party_size): self.add_error('time', 'Restaurant is booked at that time') return cleaned_data
class form_mill_storageflouraccounting(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = mill_storage_flour_accounting fields = ['Date_word', 'Time_word', 'TopGrade','SecondGrade','TransportTopGrade','TransportSecondGrade','Semolina', 'Comment']
class form_mill_elevatorgrainintake(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = elevator_grain_intake fields = ['Date_word','Time_word','CarModel','CarNumber','Provider', 'CerealCrop','WeightGross','WeightTare','WeightNet','WeightActual','WeightCredit', 'Comment']
class form_mill_grainwasteaccounting(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = mill_grain_waste_accounting fields = ['Date_word','Time_word','Gang', 'GrainWaste','Bran','BranSecondGrade', 'Comment']
class SwimmingRelayResultForm(ModelForm): time = TimeField(input_formats=settings.TIME_INPUT_FORMATS, required=False) class Meta: model = SwimmingRelayResult fields = [ 'house', 'event', 'time', 'house_points', ]
class NewEventForm(ModelForm): # min_part = IntegerField(required=False, min_value=1, # error_messages={ # 'min_value': 'Переконайтеся, що це значення більше 0', # }, # label='Мінімальна кількість учасників') # max_part = IntegerField(required=False, min_value=1, # error_messages={ # 'min_value': 'Переконайтеся, що це значення більше 0', # }, # label='Максимальна кількість учасників') recommended_points = IntegerField(required=True, min_value=0, error_messages={ 'min_value': 'Переконайтеся, що це значення не менше 0', }, label='Рекомендована кількість балів') time_event = TimeField(required=False, widget=SelectTimeWidget(minute_step=10, second_step=10),label='Час події') city = ModelChoiceField(required=True, queryset=City.objects.order_by('city'), label="Область", initial=City.objects.all()[0]) class Meta: model = Event fields = ['organizer', 'name', 'events_or_task', 'events_type', 'date_event','time_event', 'city', \ 'status', 'description', 'recommended_points', 'contact','location', 'latitude', 'longitude', \ 'fb_page'] labels = { 'name': 'Назва', 'date_event': 'Дата', 'time_event': 'Час', # 'address': 'Адреса', 'location': 'Адреса', 'description': 'Опис', 'status': 'Статус', 'fb_page': 'Facebook-сторінка', # 'max_part': 'Мінімальна кількість учасників', # 'min_part': 'Максимальна кількість учасників', 'recommended_points': 'Рекомендована кількість балів', 'contact':'Ваш контактний e-mail', 'events_type':'Категорія', 'city': 'Область' } widgets = { 'date_event': SelectDateWidget(), 'time_event': TimeInput(), #'location': OSMWidget(lat_field='latitude', lon_field='longitude'), }
class form_okk_operationalqualitycontrolsemolina(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = okk_operational_quality_control_semolina fields = ['Date_word', 'Time_word', 'BatchNumber', 'Moisture', 'Foramen', 'MetalImpurity', 'Inclusion_Black', 'Inclusion_Brown', 'Inclusion_Green', 'Inclusion_Extraneous', 'Factor_a', 'Factor_b', 'Crunch', 'Contamination', 'AshContent']
class form_okk_wheatqualitycontrol(ModelForm): Date_word = DateField(label=u'Дата ', input_formats=('%Y-%m-%d',), initial=datetime.today(), widget=DateInput(format='%Y-%m-%d', attrs={'type':'date'})) Time_word = TimeField(label=u'Время ', input_formats=('%H:%M',), initial=datetime.now(), widget=TimeInput(format='%H:%M', attrs={'type':'time'})) class Meta: model = okk_wheat_quality_control fields = ['Date_word', 'Time_word', 'Provider', 'CarNumber', 'CerealCrop', 'LotWeight', 'Grain_Nature', 'Grain_Moisture', 'Grain_Vitreous', 'Grain_Gluten', 'Grain_IDK', 'Grain_Protein', 'DustImpurity_OvsyugKukol', 'DustImpurity_PolovaSeeds', 'DustImpurity_SprigsSeeds', 'DustImpurity_Fug', 'DustImpurity_Minerals', 'DustImpurity_Spoiled', 'GrainImpurity_Beaten', 'GrainImpurity_Eaten', 'GrainImpurity_Rye', 'GrainImpurity_Barley', 'GrainImpurity_Sprouted', 'Defect_Small', 'Defect_Soft', 'Defect_Cracks', 'Defect_BlackGerm']