class Add(ModelForm): hours = tuple([(num, '0' + str(num)) if num < 10 else (num, str(num)) for num in range(1, 13)]) minutes = tuple([(num, '0' + str(num)) if num < 10 else (num, str(num)) for num in range(0, 60)]) am_pm = (('AM', 'AM'), ('PM', 'PM')) date = DateField(input_formats=["%Y-%m-%d"], widget=SelectDateWidget) hour = DateField(widget=Select(choices=hours)) minute = DateField(widget=Select(choices=minutes)) am_or_pm = CharField(widget=Select(choices=am_pm)) class Meta: model = Appointment fields = ["date", "time", "tasks"]
class MakeTeacherPlanFrom(forms.Form): start_date = IntegerField( label="Год начала действия учебного плана", widget=forms.TextInput(attrs={'type': 'number', "min": "2000", "max": "2100", "step": "1"}) ) first_name = CharField(label="Имя", max_length=30) last_name = CharField(label="Фамилия", max_length=30) patronymic = CharField(label="Отчество", max_length=30) election_date = DateField( label="Дата текущего избрания или зачисления на преподавательскую должность", widget=SelectDateWidget(years=[y for y in range(2000, 2100)]) ) position = CharField( max_length=40, label="Должность", ) contract_date = DateField( label="Срок окончания трудового договора", widget=SelectDateWidget(years=[y for y in range(1940, 2100)]), ) academic_degree = ChoiceField( choices=ACADEMIC_DEGREE_CHOICES, label="Ученая степень", ) year_of_academic_degree = IntegerField( label="Год присвоения ученой степени", widget=forms.TextInput(attrs={'type': 'number', "min": "1950","max":"2100", "step": "1"}) ) academic_status = ChoiceField( choices=ACADEMIC_STATUS_CHOICES, label="Учебное звание", ) year_of_academic_status = IntegerField( label="Год получения учебного звания", widget=forms.TextInput(attrs={'type': 'number', "min": "1950", "max": "2100", "step": "1"}) ) rate = ChoiceField( choices=RATE_CHOICES, label="Ставка" ) department_name = CharField(label="Название кафедры", max_length=10) organisation_name = CharField(label="Название факультета", max_length=10) department_head = CharField(label="Заведующий кафедры", max_length=100) organisation_head = CharField(label="Декан", max_length=100)
class StatsSelectionForm(Form): ''' Form to be used to get date range of statistics ''' start = DateField() end = DateField() def clean(self): s = self.cleaned_data['start'] e = self.cleaned_data['end'] if e < s: self.add_error('start', 'Please select an end time after the start time') return self.cleaned_data
class CustomerRegistrationForm(UserCreationForm): dob = DateField(required=True, widget=DateInput(attrs={ 'placeholder': 'MM/DD/YYYY', 'required': 'required' })) address = CharField(max_length=35, strip=True) regions = Region.objects.all() region = ModelChoiceField(queryset=regions) class Meta(UserCreationForm.Meta): model = User @transaction.atomic def save(self): print(self.cleaned_data) user = super().save(commit=False) user.is_customer = True user.save() dob = self.cleaned_data.get('dob') address = self.cleaned_data.get('address') region = self.cleaned_data.get('region') Customer.objects.create(user=user, DOB=dob, address=address, region=region) return user
class MenuModelForm(ModelForm): plates = ModelMultipleChoiceField(required=True, widget=SelectMultiplePickerInput(), queryset=Plate.objects.all()) date = DateField( input_formats=[settings.DATE_FORMAT], widget=DatePickerInput(attrs={ 'placeholder': 'Seleccione una fecha', 'minDate': date.today() })) class Meta: model = Menu fields = ('name', 'date', 'plates') def __init__(self, *args, **kwargs): user = kwargs.pop('user', None) super(MenuModelForm, self).__init__(*args, **kwargs) if ('deliveries' in self.initial): self.fields['date'].initial = self.initial['deliveries'].first( ).date plates = Plate.objects\ .filter(owner=user) self.fields['plates'].widget.queryset = plates if 'plates' in self.initial: self.fields['plates'].initial = self.initial['plates']
def test_datefield_1(self): f = DateField() self.assertEqual(date(2006, 10, 25), f.clean(date(2006, 10, 25))) self.assertEqual(date(2006, 10, 25), f.clean(datetime(2006, 10, 25, 14, 30))) self.assertEqual(date(2006, 10, 25), f.clean(datetime(2006, 10, 25, 14, 30, 59))) self.assertEqual(date(2006, 10, 25), f.clean(datetime(2006, 10, 25, 14, 30, 59, 200))) self.assertEqual(date(2006, 10, 25), f.clean('2006-10-25')) self.assertEqual(date(2006, 10, 25), f.clean('10/25/2006')) self.assertEqual(date(2006, 10, 25), f.clean('10/25/06')) self.assertEqual(date(2006, 10, 25), f.clean('Oct 25 2006')) self.assertEqual(date(2006, 10, 25), f.clean('October 25 2006')) self.assertEqual(date(2006, 10, 25), f.clean('October 25, 2006')) self.assertEqual(date(2006, 10, 25), f.clean('25 October 2006')) self.assertEqual(date(2006, 10, 25), f.clean('25 October, 2006')) with self.assertRaisesMessage(ValidationError, "'Enter a valid date.'"): f.clean('2006-4-31') with self.assertRaisesMessage(ValidationError, "'Enter a valid date.'"): f.clean('200a-10-25') with self.assertRaisesMessage(ValidationError, "'Enter a valid date.'"): f.clean('25/10/06') with self.assertRaisesMessage(ValidationError, "'This field is required.'"): f.clean(None)
class TestForm(Form): first_name = CharField() last_name = CharField() birthday = DateField() def clean(self): raise ValidationError("I like to be awkward.")
class PhotoForm(ModelForm): """ Classe qui permet la création d'un formulaire pour uploader une(des) photo(s) """ fichier = FileField(widget=ClearableFileInput(attrs={"multiple": True})) date_de_l_evenement = DateField(required=True, input_formats=DATE_INPUTS_FORMATS) # utiliser plutôt l'attribut label comme pour AbonnementEvenementForm # ================================== def __init__(self, *args, **kwargs): """ Constructeur de la classe """ # Les lignes suivantes permettent de modifier les label d'un champ dans la page super(ModelForm, self).__init__(*args, **kwargs) self.fields["nom_de_l_evenement"].label = "Nom de l'évènement" self.fields["date_de_l_evenement"].label = "Date de l'évènement" # utiliser plutôt l'attribut label comme pour AbonnementEvenementForm self.fields["fichier"].label = "Photo(s)" # ========= class Meta: """ Configuration/définition des options de metadonnées du formulaire """ model = Photo fields = ("fichier", "nom_de_l_evenement", "date_de_l_evenement")
class ReviewForm(forms.ModelForm): # pound = forms.ModelChoiceField(queryset=Pound.objects.all(), required=False) # rating = forms.IntegerField(initial=5, min_value=1, max_value=5) fishing_date = DateField( input_formats=['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y'], initial=now().date()) class Meta: model = Review fields = ('lat', 'lang', 'fishing_date', 'fish_caught', 'picture', 'method', 'content', 'length', 'weight', 'pound') labels = { "fishing_date": "Когда", 'pound': "Водоем", 'content': "Описание", 'fish_caught': "Рыба поймана", 'weight': "Вес", 'length': 'Длина', 'picture': 'Прикрепить фото' } def __init__(self, *args, **kwargs): super(ReviewForm, self).__init__(*args, **kwargs) self.fields["fish_caught"].help_text = "" self.fields["lat"].widget = forms.widgets.HiddenInput() self.fields["lang"].widget = forms.widgets.HiddenInput() self.fields["fishing_date"].widget = DatePickerInput(format='%m/%d/%Y')
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 FromToDateForm(Form): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_show_labels = False from_date = DateField(widget=DateInput(attrs={'class': "form-control onClickDatepicker"})) to_date = DateField(widget=DateInput(attrs={'class': "form-control onClickDatepicker"})) def clean(self): cleaned_data = super().clean() from_date = cleaned_data.get('from_date') to_date = cleaned_data.get('to_date') if from_date and to_date and from_date > to_date: self.add_error(field='to_date', error=ValidationError('"To" date cannot be earlier than "From" date')) return cleaned_data
class DecorationOwnershipForm(BSModelForm): class Meta: model = DecorationOwnership fields = '__all__' acquired = DateField(widget=DateInput(attrs={'type': 'date'})) member = AutoCompleteSelectField('member', required=True, help_text=None)
def __init__(self, *args, **kwargs): user = kwargs.pop('user', User()) super(MilestoneCreationForm, self).__init__(*args, **kwargs) self.fields['milestone_title'] = CharField(max_length=200) self.fields['milestone_date'] = DateField(widget=widgets.DateInput( attrs={'type': 'date'})) self.fields['milestone_description'] = CharField(max_length=500)
class CertificationForm(ModelForm): date_obtained = DateField(required=False, input_formats=settings.DATE_INPUT_FORMATS, widget=DateInput(format='%d/%m/%Y', attrs={ 'class': 'date-picker', 'placeholder': 'DD/MM/YYYY' })) class Meta: model = Certification fields = [ 'name', 'date_obtained', 'city', 'resume', ] widgets = { 'name': TextInput( attrs={ 'placeholder': 'For example: Certified Technical Architect' }), 'city': TextInput(attrs={'placeholder': 'For example: New York'}), 'resume': forms.HiddenInput(), } labels = {'name': 'Certification name'}
class PeriodForm(ModelForm): start = DateField() end = DateField() def __init__(self, *args, **kwargs): self.classroom = kwargs.pop('classroom') super().__init__(*args, **kwargs) def clean(self): self.instance.classroom = self.classroom super().clean() class Meta: model = main.models.Period fields = ['start', 'end', 'solicits_preferences']
class UserForm(ModelForm): date_joined = DateField( required=False, widget=Html5DateInput, ) class Meta: model = User fields = ('first_name', 'last_name', 'email', 'date_joined') def clean_date_joined(self): cd = self.cleaned_data date = cd['date_joined'] if date: return date else: raise ValidationError("Enter a date.") def save(self, commit=True): date = self.cleaned_data["date_joined"] user = super(UserForm, self).save(commit=False) user.date_joined = date if commit: user.save() return user
class GoalsForm(forms.ModelForm): due = DateField(input_formats=['%d/%m/%Y']) class Meta: model = Goals fields = '__all__' labels = {"summary": "Objective", "weightage": "Weightage (%)"} widgets = { 'appraisal': forms.Select(attrs={'class': 'form-control'}), 'employee': forms.Select(attrs={'class': 'form-control'}), 'summary': forms.TextInput(attrs={'class': 'form-control'}), 'goal_category': forms.Select(attrs={'class': 'form-control'}), 'description': forms.Textarea( attrs={ 'class': 'form-control', 'style': 'max-height: 150px; resize: none' }), 'due': forms.DateTimeInput(attrs={ 'class': 'form-control datetimepicker-input', 'data-target': '#datetimepicker1' }, format='%d/%m/%Y'), 'user_rating': forms.Select(attrs={'class': 'form-control'}), 'manager_rating': forms.Select(attrs={'class': 'form-control'}), 'board_rating': forms.Select(attrs={'class': 'form-control'}) }
class PatientForm(ModelForm): birth_date = DateField(input_formats=settings.DATE_INPUT_FORMATS) helper = FormHelper() helper.form_class = 'form-inline' helper.form_tag = False helper.layout = Layout( Div(Div('names', css_class='column_two'), Div('last_names', css_class='column_two'), css_class='row'), Div(Div('document_type', css_class='column_two'), Div('document', css_class='column_two'), css_class='row'), Div(Div('birth_date', css_class='column_two'), Div('birth_city', css_class='column_two'), css_class='row'), Div(Div('address', css_class='column_two'), Div('phone', css_class='column_two'), css_class='row'), Div(Div('scholarship', css_class='column_two'), Div('profesion', css_class='column_two'), css_class='row'), Div(Div('gender', css_class='column_three'), Div('civil_status', css_class='column_three'), Div('origin', css_class='column_three'), css_class='row'), ) class Meta(object): model = Patient fields = '__all__' widgets = { 'birth_date': forms.DateInput(format=('%Y-%m-%d'), attrs={'type': 'date'}) }
class ActivityForm(ModelForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_show_labels = False class Meta: model = Activity exclude = ['User'] date = DateField(required=False, initial=datetime.date.today().strftime('%m/%d/%Y'), widget=DateInput(attrs={'class': "form-control datepicker"})) duration = IntegerField(required=False, min_value=1, max_value=999, widget=NumberInput(attrs={'class': "form-control", 'placeholder': "minutes"})) Sport = ModelChoiceField(required=False, queryset=Sport.objects.all().order_by('name'), empty_label='choose sport', widget=Select(attrs={'class': "form-control"})) def clean_date(self): return check_not_empty(self, filed_name='date') def clean_duration(self): return check_not_empty(self, filed_name='duration') def clean_Sport(self): return check_not_empty(self, filed_name='Sport')
class SearchEventForm(Form): date = DateField(label='Wybierz dzień', required=False, widget=DateInput(attrs={'class': 'datepicker'}), input_formats=settings.DATE_INPUT_FORMATS) query = CharField(label='Wpisz, czego szukasz', required=False) city = CharField(label='Miasto', required=False)
class PatientForm(ModelForm): # name = CharField(validators=[RegexValidator('^')]) gender = ChoiceField(choices=BOOL_CHOICES, label="Genêro", initial='', widget=Select(), required=True) name = CharField(label='Nome') birth_date = DateField(label='Data de Nascimento') phone = CharField(label='Telefone ou Celular') CPF = BRCPFField(label="CPF") RG = CharField(label='RG (Identidade)') class Meta: model = Patient # fields = ['name', 'gender', 'birth_date', 'email', 'phone', 'RG', 'CPF', 'comments', 'found_us_by', 'address'] # id = id_address name=id_address fields = '__all__' labels = { 'comments': 'Observações', 'found_us_by': 'Como nos encontrou' } widgets = { 'address': HiddenInput(), }
class MenuForm(ModelForm): """MenuForm class Inherit: - ModelForm field: - expiration_date: - DateField with SelectDateWidget and range of years for selection """ year = datetime.datetime.today().year year_range = tuple([i for i in range(year, year + 3)]) expiration_date = DateField( required=False, widget=SelectDateWidget(years=year_range) ) class Meta: model = Menu exclude = ('created_date',) def clean(self): """clean method, overrides the super class clean() method. - Makes sure expiration date is not passed if there is one. - Makes sure that at least 1 item is selected. -:return: - cleaned_data """ cleaned_data = super().clean() items = cleaned_data.get('items') expiration_date = cleaned_data.get('expiration_date') if expiration_date: if expiration_date < datetime.date.today(): raise ValidationError('Expiration date already passed!!') if items: if len(items) < 1: raise ValidationError("You must select one or more items!") else: raise ValidationError('You must select one or more items!') return cleaned_data
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 LessonForm(Form): startTime = CharField(min_length=5, max_length=5, required=True) endTime = CharField(min_length=5, max_length=5, required=True) startDate = DateField(required=True) courseId = CharField(min_length=1, max_length=50, required=True) id = CharField(max_length=50) _id = CharField(min_length=24, max_length=24, required=False)
class CreateDepartmentalGoalsForm(forms.ModelForm): due = DateField(input_formats=['%d/%m/%Y']) class Meta: model = Departmental_Goals fields=['summary', 'description', 'due'] labels = { "summary": "Objective", "description": "Measures/Milestones", "goal_category": "Category", "due": "Deadline of Objective (DD/MM/YYYY)", } widgets = { 'department': forms.Select(attrs={ 'class': 'form-control' }), 'summary': forms.TextInput(attrs={ 'class': 'form-control' }), 'goal_category': forms.Select(attrs={ 'class': 'form-control' }), 'description': forms.Textarea(attrs={ 'class': 'form-control', 'style': 'max-height: 500px;' }), 'due': forms.DateTimeInput(attrs={ 'class': 'form-control datetimepicker-input', 'style': 'width: 50%', 'data-target': '#datetimepicker1' }, format='%d/%m/%Y'), }
class ProfesorForm(forms.ModelForm): fecha_nacimiento = DateField(input_formats=settings.DATE_INPUT_FORMATS) direccion = forms.CharField(label='Dirección') telefono1 = forms.CharField(label='Teléfono') telefono2 = forms.CharField(label='Otro contacto') salario = CurrencyIntegerField() class Meta: model = Profesor fields = [ 'cedula', 'nombre', 'apellido', 'fecha_nacimiento', 'sexo', 'direccion', 'telefono1', 'telefono2', 'fotocopia_cedula', 'salario', 'especialidad' ] sexo = forms.ChoiceField(choices=Persona.SEXO, widget=forms.RadioSelect(choices=Persona.SEXO)) def __init__(self, *args, **kwargs): super(ProfesorForm, self).__init__(*args, **kwargs) self.fields['cedula'].widget.attrs[ 'placeholder'] = 'Cédula del profesor' self.fields['nombre'].widget.attrs[ 'placeholder'] = 'Nombre completo del profesor' self.fields['apellido'].widget.attrs[ 'placeholder'] = 'Apellido completo del profesor' self.fields['direccion'].widget.attrs[ 'placeholder'] = 'Dirección del profesor' self.fields['telefono1'].widget.attrs[ 'placeholder'] = 'Teléfono del profesor' self.fields['telefono2'].widget.attrs[ 'placeholder'] = 'Contacto de emergencia del profesor' self.fields['salario'].widget.attrs['placeholder'] = '1.500.000Gs' self.fields['especialidad'].widget.attrs[ 'placeholder'] = 'Título o conocimientos'
class TransactionAddForm(MoneypitForm): type = ChoiceField(choices=Transaction.TYPES) description = CharField(required=False) amount = DecimalField(initial=0.0) date = DateField(initial=datetime.utcnow()) def __init__(self, *args, **kwargs): self.wealth = kwargs.pop('wealth', None) self.accounts_list = kwargs.pop('accounts_list', None) super(TransactionAddForm, self).__init__(*args, **kwargs) self.fields['account_from'] = ChoiceField(choices=self.accounts_list) def clean_account_from(self): return self._check_account('account_from', 'The transaction account does not exist') def clean_amount(self): return self._check_amount('amount') def _check_account(self, field, error_msg): account_id = self.cleaned_data[field] try: Account.objects.get(id=account_id, wealth=self.wealth) except ObjectDoesNotExist: raise ValidationError(error_msg) return account_id def _check_amount(self, field): amount = self.cleaned_data[field] if amount and amount <= 0: raise ValidationError('Amount cannot be negative') return amount
class PersonaForm(forms.ModelForm): fecha_nacimiento = DateField(input_formats=settings.DATE_INPUT_FORMATS) direccion = forms.CharField(label='Dirección') telefono1 = forms.CharField(label='Teléfono') telefono2 = forms.CharField(label='Otro contacto') cedula = CustomModelChoiceField(queryset=Persona.objects.all(), widget=autocomplete.ModelSelect2( url='persona-autocomplete', attrs={ 'data-tags': 'true', 'data-language': 'es' })) sexo = forms.ChoiceField(choices=Persona.SEXO, widget=forms.RadioSelect(choices=Persona.SEXO)) estado = forms.ChoiceField( choices=Persona.ESTADO, widget=forms.RadioSelect(choices=Persona.ESTADO), initial='A') class Meta: model = Persona fields = [ 'cedula', 'nombre', 'apellido', 'fecha_nacimiento', 'sexo', 'direccion', 'telefono1', 'telefono2', 'fotocopia_cedula', 'estado' ]
class PatientForm(ModelForm): birthday = DateField(widget=DateInput(format = '%d/%m/%Y'), input_formats=('%d/%m/%Y',)) class Meta: model = Patient fields = ['first_name', 'last_name', 'birthday', 'gender']
class MemberFormKontakt(ModelForm): birthday = DateField(input_formats=('%d.%m.%Y', ), widget=DateInput(format="%d.%m.%Y")) def __init__(self, *args, **kwargs): super(MemberFormKontakt, self).__init__(*args, **kwargs) if self.instance.id: self.fields['username'].widget.attrs['readonly'] = True self.fields.update({ 'newPass': CharField(widget=PasswordInput(), required=False), }) self.fields[ 'password'].label = u"Lösenord för att bekräfta ändringar" self.fields['newPass'].label = "Nytt password" class Meta: model = Member fields = ('username', 'first_name', 'last_name', 'birthday', 'email', 'phone', 'address', 'password') widgets = { 'password': PasswordInput(), 'address': Textarea(attrs={ 'cols': 80, 'rows': 5 }), }