class timeSheetForm(forms.ModelForm): class Meta: model = Timesheet fields = "__all__" # def __init__(self,*args,**kwargs): # super(timeSheetForm, self).__init__(*args, **kwargs) # self.fields['username'].initial = self.data # print(self.fields['user']) # fields=['project','user','task_title','task_description','priority','starti # ng_time','ending_time'] PRIORITY_STATUS = [ ('H', 'High'), ('M', 'Medium'), ('L', 'Low'), ] project = forms.ModelChoiceField(queryset=Project.objects.all()) user = forms.ModelChoiceField(queryset=User.objects.all(), widget=forms.HiddenInput()) # user = forms.ModelChoiceField(queryset=User.objects.filter(pk=2)) task_title = forms.CharField(max_length=250) task_description = forms.CharField(widget=forms.TextInput({})) priority = forms.CharField( max_length=1, widget=forms.Select(choices=PRIORITY_STATUS), ) starting_time = forms.SplitDateTimeField(widget=AdminSplitDateTime()) ending_time = forms.SplitDateTimeField(widget=AdminSplitDateTime())
class GenerateNewsletterForm(forms.ModelForm): """ Form for generating a newsletter. """ start_date = forms.SplitDateTimeField(widget=AdminSplitDateTime()) end_date = forms.SplitDateTimeField(widget=AdminSplitDateTime()) class Meta: model = Newsletter fields = ['type', 'start_date', 'end_date']
def __init__(self, *args, **kwargs): super(CreateMeasureForm, self).__init__(*args, **kwargs) self.fields['vote_start'].widget = AdminSplitDateTime() self.fields['vote_start'].widget.attrs['style'] = "padding:0.25em;text-align:center" self.fields['vote_start'].widget.attrs['size'] = 10 self.fields['vote_end'].widget = AdminSplitDateTime() self.fields['vote_end'].widget.attrs['style'] = "padding:0.25em;text-align:center" self.fields['vote_end'].widget.attrs['size'] = 10 self.fields['quorum'].widget.attrs['style'] = "width:50px" self.fields['summary'].widget.attrs['style'] = "width: 100%; height: 75px;" self.fields['summary'].widget.attrs['placeholder'] = "Measury summary goes here." self.fields['name'].widget.attrs['placeholder'] = "Measure Title"
class BookingForm(ModelForm): start_time = SplitDateTimeField( widget=AdminSplitDateTime(), input_date_formats=settings.DATE_INPUT_FORMATS, input_time_formats=settings.TIME_INPUT_FORMATS) end_time = SplitDateTimeField( widget=AdminSplitDateTime(), input_date_formats=settings.DATE_INPUT_FORMATS, input_time_formats=settings.TIME_INPUT_FORMATS) class Meta: model = Booking fields = "__all__" def clean(self): cleaned_data = super(BookingForm, self).clean() start_time = cleaned_data.get("start_time") end_time = cleaned_data.get("end_time") car = cleaned_data.get("car") driver = cleaned_data.get("driver") if not start_time or not end_time: return #CHECK FOR OVERLAPPING BOOKINGS on Car or Driver overlapping_bookings = Booking.objects.filter( Q(car__pk=car.pk) | Q(driver__pk=driver.pk)).filter( Q(start_time__gte=start_time, start_time__lt=end_time) | Q(end_time__gt=start_time, end_time__lte=end_time)) if overlapping_bookings.count() > 0: raise ValidationError( "This car is unavailable for this date/time or you already have another car booked for this slot." ) #CHECK FOR PADDING TIME start_time_minus_2hrs = start_time - timedelta(hours=2) invalid_bookings = Booking.objects.filter(car__pk=car.pk).filter( Q(end_time__gt=start_time_minus_2hrs) & Q(start_time__lt=start_time_minus_2hrs)) if invalid_bookings.count() > 0: raise ValidationError( "This car is unavailable for this start time.") end_time_plus_2hrs = end_time + timedelta(hours=2) invalid_bookings = Booking.objects.filter(car__pk=car.pk).filter( Q(start_time__lt=end_time_plus_2hrs) & Q(end_time__gt=end_time_plus_2hrs)) if invalid_bookings.count() > 0: raise ValidationError( "This booking must be ended at an earlier time.")
def _get_form_fields(self): return OrderedDict( ( (self.lookup_kwarg_gte, SplitDateTimeField( label='', widget=AdminSplitDateTime(attrs={'style': 'width: 50%', 'placeholder': 'From'}), required=False )), (self.lookup_kwarg_lte, SplitDateTimeField( label='', widget=AdminSplitDateTime(attrs={'style': 'width: 50%', 'placeholder': 'To'}), required=False )), ) )
class DREventFilterForm(forms.ModelForm): scheduled_notification_time = forms.SplitDateTimeField(widget=AdminSplitDateTime()) start = forms.SplitDateTimeField(widget=AdminSplitDateTime()) end = forms.SplitDateTimeField(widget=AdminSplitDateTime()) class Meta: exclude = [] model = DREvent def __init__(self, *args, **kwargs): super(DREventFilterForm, self).__init__(*args, **kwargs) instance = getattr(self, 'instance', None) if instance and instance.pk: self.fields['dr_program'].widget.attrs['readonly'] = True
def __init__(self, *args, **kwargs): # checking for user argument here for a more # localized form self.user = None self.timezone = None if kwargs.get('instance',None): kwargs['initial'] = kwargs.pop('initial',{}) kwargs['initial']['publish_dt'] = kwargs['instance'].publish_dt if 'user' in kwargs: self.user = kwargs.pop('user', None) super(PostForm, self).__init__(*args, **kwargs) self.fields['publish_dt'].widget = AdminSplitDateTime() self.fields['slug'].help_text = "URL will be /blog/your-name/<b>slug-goes-here</b>/" self.fields['tags'].help_text = "Separate tags with commas. Input will be lowercased." self.fields['publish_dt'].help_text = "<i>YYYY-MM-DD</i> and <i>HH:MM</i> (24-hour time)" self.fields['photo'].widget=ForeignKeyRawIdWidget(Post._meta.get_field("photo").rel,admin.site) # add span class to charfields for field in self.fields.values(): if isinstance(field, forms.fields.CharField): if 'class' in field.widget.attrs: field.widget.attrs['class'] = "%s %s" % ( field.widget.attrs['class'], 'span8', ) else: field.widget.attrs['class'] = 'span8'
class TestForm(forms.Form): """ Form with a variety of widgets to test bootstrap3 rendering. """ date = forms.DateField(required=False) datetime = forms.SplitDateTimeField(widget=AdminSplitDateTime(), required=False) subject = forms.CharField( max_length=100, help_text='my_help_text', required=True, widget=forms.TextInput(attrs={'placeholder': 'placeholdertest'}), ) password = forms.CharField(widget=forms.PasswordInput) message = forms.CharField(required=False, help_text='<i>my_help_text</i>') sender = forms.EmailField( label='Sender © unicode', help_text='E.g., "*****@*****.**"') secret = forms.CharField(initial=42, widget=forms.HiddenInput) cc_myself = forms.BooleanField( required=False, help_text='cc stands for "carbon copy." You will get a copy in your mailbox.' ) select1 = forms.ChoiceField(choices=RADIO_CHOICES) select2 = forms.MultipleChoiceField( choices=RADIO_CHOICES, help_text='Check as many as you like.', ) select3 = forms.ChoiceField(choices=MEDIA_CHOICES) select4 = forms.MultipleChoiceField( choices=MEDIA_CHOICES, help_text='Check as many as you like.', ) category1 = forms.ChoiceField( choices=RADIO_CHOICES, widget=forms.RadioSelect) category2 = forms.MultipleChoiceField( choices=RADIO_CHOICES, widget=forms.CheckboxSelectMultiple, help_text='Check as many as you like.', ) category3 = forms.ChoiceField( widget=forms.RadioSelect, choices=MEDIA_CHOICES) category4 = forms.MultipleChoiceField( choices=MEDIA_CHOICES, widget=forms.CheckboxSelectMultiple, help_text='Check as many as you like.', ) addon = forms.CharField( widget=forms.TextInput(attrs={'addon_before': 'before', 'addon_after': 'after'}), ) required_css_class = 'bootstrap3-req' # Set this to allow tests to work properly in Django 1.10+ # More information, see issue #337 use_required_attribute = False def clean(self): cleaned_data = super(TestForm, self).clean() raise forms.ValidationError( "This error was added to show the non field errors styling.")
class CreatePostForm(forms.ModelForm): upload_date = forms.SplitDateTimeField(initial=timezone.now, widget=AdminSplitDateTime()) class Meta: model = Post fields = ['title', 'category', 'upload_date', 'cover', 'body']
class CommitForm(forms.Form): PUBLISH_RADIO_CHOICES = ( ('now', _('Immediately')), ('later', _('Later')), ) message = forms.CharField(widget=forms.Textarea, label=_('Notes (optional)'), required=False) publish_radio = forms.ChoiceField( label=_('Publish at'), widget=forms.RadioSelect, choices=PUBLISH_RADIO_CHOICES, initial=PUBLISH_RADIO_CHOICES[0][0], ) publish_at = forms.SplitDateTimeField(initial=timezone.now, localize=True, required=False, widget=AdminSplitDateTime()) def get_publish_at(self): if self.cleaned_data['publish_radio'] == 'now': publish_at = timezone.now() else: publish_at = self.cleaned_data['publish_at'] return publish_at def commit(self, obj, user): return obj.commit(user, message=self.cleaned_data['message'], publish_at=self.get_publish_at())
class TestForm(forms.Form): """ Form with a variety of widgets to test bootstrap4 rendering. """ date = forms.DateField(required=False) datetime = forms.SplitDateTimeField(widget=AdminSplitDateTime(), required=False) subject = forms.CharField( max_length=100, help_text="my_help_text", required=True, widget=forms.TextInput(attrs={"placeholder": "placeholdertest"}), ) xss_field = forms.CharField( label='XSS" onmouseover="alert(\'Hello, XSS\')" foo="', max_length=100 ) password = forms.CharField(widget=forms.PasswordInput) message = forms.CharField(required=False, help_text="<i>my_help_text</i>") sender = forms.EmailField(label="Sender © unicode", help_text='E.g., "*****@*****.**"') secret = forms.CharField(initial=42, widget=forms.HiddenInput) cc_myself = forms.BooleanField( required=False, help_text='cc stands for "carbon copy." You will get a copy in your mailbox.', ) select1 = forms.ChoiceField(choices=RADIO_CHOICES) select2 = forms.MultipleChoiceField( choices=RADIO_CHOICES, help_text="Check as many as you like." ) select3 = forms.ChoiceField(choices=MEDIA_CHOICES) select4 = forms.MultipleChoiceField( choices=MEDIA_CHOICES, help_text="Check as many as you like." ) category1 = forms.ChoiceField(choices=RADIO_CHOICES, widget=forms.RadioSelect) category2 = forms.MultipleChoiceField( choices=RADIO_CHOICES, widget=forms.CheckboxSelectMultiple, help_text="Check as many as you like.", ) category3 = forms.ChoiceField(widget=forms.RadioSelect, choices=MEDIA_CHOICES) category4 = forms.MultipleChoiceField( choices=MEDIA_CHOICES, widget=forms.CheckboxSelectMultiple, help_text="Check as many as you like.", ) category5 = forms.ChoiceField(widget=RadioSelectButtonGroup, choices=MEDIA_CHOICES) addon = forms.CharField( widget=forms.TextInput(attrs={"addon_before": "before", "addon_after": "after"}) ) polygon = gisforms.PointField() required_css_class = "bootstrap4-req" # Set this to allow tests to work properly in Django 1.10+ # More information, see issue #337 use_required_attribute = False def clean(self): cleaned_data = super(TestForm, self).clean() raise forms.ValidationError("This error was added to show the non field errors styling.") return cleaned_data
class RescheduleForm(forms.Form): scheduled_execution = forms.SplitDateTimeField( required=True, initial=None, label="New execution time", widget=AdminSplitDateTime(), )
def __init__(self, *args, **kwargs): field_name = kwargs.pop('field_name') super(DateTimeRangeForm, self).__init__(*args, **kwargs) self.fields['%s__gte' % field_name] = forms.DateTimeField( label='', widget=AdminSplitDateTime(attrs={'placeholder': _('From Date')}), localize=True, required=False)
def change_widget(self, field, opts=None): widget = self._get_widget_from_opts(opts) if widget == 'date': field = forms.DateField(label=field.label, help_text=field.help_text) field.widget = AdminDateWidget() else: field.widget = AdminSplitDateTime() return field
def __init__(self, *args, **kwargs): super(InvitationForm, self).__init__(*args, **kwargs) # exclusive for InvitationForm self.fields['num_invites'].required = True self.fields['num_additional_persons_per_invite'].widget = self.fields['num_additional_persons_per_invite'].hidden_widget() self.fields['num_additional_persons_per_invite'].widget.attrs['disabled'] = 'disabled' # used for functionality "Einladung mit Freikarten" self.fields['invitations_start'].widget = AdminSplitDateTime() self.fields['invitations_deadline'].widget = AdminSplitDateTime() timeframe_values = self.create_timeframe_values() del self.fields['timeframe_select'] insertBefore = self.fields.keyOrder.index('invitations_start') self.fields.insert(insertBefore, 'timeframe_select', InvitationTimeInputField(label="Diese Einladung gilt:", initial=timeframe_values))
class CreateQuizForm(forms.ModelForm): quiz_name = forms.CharField( label='Quiz Name', widget=forms.TextInput(attrs={'placeholder': 'Quiz Name'})) quiz_id = forms.CharField( label='Quiz Id', widget=forms.TextInput(attrs={'placeholder': 'Quiz id'})) active = forms.BooleanField(label='Active', required=False) start_time = forms.SplitDateTimeField(widget=AdminSplitDateTime()) end_time = forms.SplitDateTimeField(widget=AdminSplitDateTime()) class Meta: model = Quiz fields = [ 'quiz_name', 'quiz_id', 'active', 'start_time', 'end_time', ]
def __init__(self, request, *args, **kwargs): field_name = kwargs.pop('field_name') super(DateTimeFilterForm, self).__init__(*args, **kwargs) self.request = request self.fields['%s_as_of' % field_name] = forms.SplitDateTimeField( label='', input_time_formats=['%I:%M %p', '%H:%M:%S'], widget=AdminSplitDateTime( attrs={'placeholder': 'as of date and time'}), localize=True, required=True)
def test_localization(self): w = AdminSplitDateTime() with self.settings(USE_L10N=True): with translation.override('de-at'): w.is_localized = True self.assertEqual( conditional_escape( w.render('test', datetime(2007, 12, 1, 9, 30))), '<p class="datetime">Datum: <input value="01.12.2007" type="text" class="vDateField" name="test_0" size="10" /><br />Zeit: <input value="09:30:00" type="text" class="vTimeField" name="test_1" size="8" /></p>', )
class TaskCreationForm(ModelForm): def __init__(self, *args, **kwargs): super(TaskCreationForm, self).__init__(*args, **kwargs) self.fields['group'].widget.attrs['disabled'] = True visible = forms.SplitDateTimeField(widget=AdminSplitDateTime()) started_at = forms.SplitDateTimeField(widget=AdminSplitDateTime()) finished_at = forms.SplitDateTimeField(widget=AdminSplitDateTime()) class Meta: model = Task fields = [ 'name', 'description', 'started_at', 'finished_at', 'visible', 'group', 'document', ]
def __init__(self, *args, **kwargs): super(NoteForm, self).__init__(*args, **kwargs) self.fields['occasion'].widget.attrs['size'] = 100 self.fields['project'].widget = SelectWithPop(self.user) self.fields['project'].queryset = Project.objects.filter( author__username__exact=self.user) # set the text field size to a reasonable default self.fields['entry'].widget.attrs['rows'] = 20 self.fields['entry'].widget.attrs['cols'] = 50 # self.fields['date'].widget = AdminSplitDateTime() self.fields['schedule'].initial = Note.SCHEDULE_PAST
class AvailibilityForm(forms.ModelForm): notAvailableFrom = forms.SplitDateTimeField(label='Not available From', widget=AdminSplitDateTime()) notAvailableTill = forms.SplitDateTimeField(label='Not available till', widget=AdminSplitDateTime()) opening = forms.SplitDateTimeField(label='Opening', widget=AdminSplitDateTime()) closing = forms.SplitDateTimeField(label='Opening', widget=AdminSplitDateTime()) class Meta: model = Aivailibility fields = ( 'opening', 'closing', 'notAvailableFrom', 'notAvailableTill', )
class DREventForm(forms.ModelForm): scheduled_notification_time = forms.SplitDateTimeField(widget=AdminSplitDateTime()) start = forms.SplitDateTimeField(widget=AdminSplitDateTime()) end = forms.SplitDateTimeField(widget=AdminSplitDateTime()) class Meta: model = DREvent fields = '__all__' widgets = {'status': forms.HiddenInput(), 'modification_number': forms.HiddenInput(), 'last_status_time': forms.HiddenInput(), 'sites': FilteredSelectMultiple('sites', False,)} def __init__(self, *args, **kwargs): super(DREventForm, self).__init__(*args, **kwargs) self.fields['modification_number'].required = False self.fields['status'].required = False self.fields['last_status_time'].required = False self.fields['event_id'].required = False def clean(self): if self._errors: return self._errors cleaned_data = super().clean() try: scheduled_notification_time = cleaned_data['scheduled_notification_time'] start = cleaned_data['start'] end = cleaned_data['end'] except KeyError: raise ValidationError('Please enter valid date and time') if start > end: raise ValidationError('Start time must precede end time') if scheduled_notification_time > start: raise ValidationError('Notification time must precede start time') if scheduled_notification_time < timezone.now() or \ start < timezone.now() or \ end < timezone.now(): raise ValidationError('All times must be in the future')
class BookingProgress(forms.ModelForm): bookingFrom = forms.SplitDateTimeField( label ='From', input_time_formats=['%I:%M %p', '%H:%M:%S'], widget=AdminSplitDateTime()) bookingUntil= forms.SplitDateTimeField( input_time_formats=['%I:%M %p', '%H:%M:%S'], widget=AdminSplitDateTime(), label ='Until') class Meta: model = Booking_inprogress fields = ( 'bookingFrom', 'bookingUntil', ) def clean(self,*args,**kwargs): bookingFrom = self.cleaned_data.get('bookingFrom') bookingUntil = self.cleaned_data.get('bookingUntil') if bookingFrom.date() != bookingUntil.date(): raise forms.ValidationError('Your reservation should have the same date') if bookingFrom.time() == bookingUntil.time(): raise forms.ValidationError('You cannot choose the same time for the begining and the end of the game') return super(BookingProgress, self).clean(*args, **kwargs)
def __init__(self, future=True, *args, **kwargs): dt = forms.SplitDateTimeField(initial=datetime.now()) comp = forms.ChoiceField( choices=COMPARATORS, initial=('A' if future else 'B'), ) super(DateTimeQueryField,self).__init__( fields=(comp,dt), widget=DateTimeQueryWidget(( comp.widget, AdminSplitDateTime(), )), *args, **kwargs )
def test_localization(self): w = AdminSplitDateTime() activate('de-at') old_USE_L10N = settings.USE_L10N try: settings.USE_L10N = True w.is_localized = True self.assertEqual( conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))), '<p class="datetime">Datum: <input value="01.12.2007" type="text" class="vDateField" name="test_0" size="10" /><br />Zeit: <input value="09:30:00" type="text" class="vTimeField" name="test_1" size="8" /></p>', ) finally: deactivate() settings.USE_L10N = old_USE_L10N
class FlashNewsViewForm(forms.Form): message = forms.CharField(widget=forms.Textarea, required=True, max_length=100) send_date = forms.SplitDateTimeField(widget=AdminSplitDateTime()) class Media: css = { 'all': ('/static/admin/css/widgets.css',) } def __init__(self, *args, **kwargs): super(FlashNewsViewForm, self).__init__(*args, **kwargs) servers = Server.objects.all() server_list = [] for sv in servers: server_list.append((sv.id, sv.name)) server_group_choice = tuple(server_list) self.fields['server'] = forms.MultipleChoiceField(choices=server_group_choice, widget=FilteredSelectMultiple("服务器", is_stacked=False)) for key in self.fields: self.fields[key].required = True
class RegisterForm(forms.Form): username = forms.CharField(min_length=5, max_length=10, error_messages={ 'required': "入力必須", 'min_length': "不得少于3个字" }) password = forms.CharField(widget=forms.PasswordInput) birth = forms.DateField(widget=forms.DateInput( attrs={'placeholder': 'YYYY-MM-DD'})) datetime = forms.SplitDateTimeField(widget=AdminSplitDateTime(), required=False) select1 = forms.ChoiceField(choices=RADIO_CHOICES) select2 = forms.MultipleChoiceField( choices=RADIO_CHOICES, help_text='Check as many as you like.', ) select3 = forms.ChoiceField(choices=MEDIA_CHOICES) select4 = forms.MultipleChoiceField( choices=MEDIA_CHOICES, help_text='Check as many as you like.', )
def test_render(self): w = AdminSplitDateTime() self.assertEqual( conditional_escape(w.render('test', datetime(2007, 12, 1, 9, 30))), '<p class="datetime">Date: <input value="2007-12-01" type="text" class="vDateField" name="test_0" size="10" /><br />Time: <input value="09:30:00" type="text" class="vTimeField" name="test_1" size="8" /></p>', )
class UserReportForm(forms.Form): start_date = forms.SplitDateTimeField(label=mark_safe("<br/>Start Date"), widget=AdminSplitDateTime()) end_date = forms.SplitDateTimeField(label=mark_safe("<br/>End Date"), widget=AdminSplitDateTime())
class TestForm(forms.Form): char = forms.CharField(max_length=255) hidden = forms.CharField(max_length=255, widget=forms.HiddenInput()) date = forms.DateField(widget=AdminDateWidget()) datetime = forms.DateTimeField(widget=AdminSplitDateTime())