class SearchForm(Form): text = fields.CharField(max_length='255', required=False) genre = fields.IntegerField(min_value=0, required=False) year_old = fields.IntegerField(min_value=0, required=False) rating = fields.FloatField(min_value=0, required=False) price = fields.FloatField(min_value=0, required=False) instock = fields.BooleanField(required=False) recommend = fields.BooleanField(required=False) def __init__(self, *args, **kwargs): super(SearchForm, self).__init__(*args, **kwargs) for k, v in self.fields.items(): if k in kwargs['data'] and kwargs['data'][k]: if self.fields[k].required == False: self.fields[k].required = True class Meta: fields = ( 'text', 'genre', 'year_old', 'rating', 'price', 'instock', )
class CheckInForm(Form): t_shirt = fields.BooleanField(label='T-shirt', required=False) swag = fields.BooleanField(label='Swag Bag', required=False) nametag = fields.BooleanField(required=False) room_key = fields.BooleanField(required=False) key_card = fields.CharField(required=False) notes = fields.CharField( required=False, widget=widgets.Textarea(attrs={'rows': 3}), ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.include_media = False self.helper.layout = Layout( 't_shirt', 'swag', 'nametag', 'room_key', 'key_card', ) self.helper.layout.fields += [ 'notes', ButtonHolder( Submit('submit', 'Check In'), HTML( '<a href="{}" class="btn btn-secondary">Cancel</a>'.format( reverse('front_desk'))), ), ]
class GlobalSettingsForm(Form): new_wenda_money = fields.IntegerField(error_messages={ "required": "第一项不能为空!", "invalid": "第一项格式错误,请填写整数格式!", }, ) old_wenda_money = fields.IntegerField(error_messages={ "required": "第二项不能为空!", "invalid": "第二项格式错误,请填写整数格式!", }, ) xie_wenda_money = fields.IntegerField(error_messages={ "required": "第三项不能为空!", "invalid": "第三项格式错误,请填写整数格式!", }, ) fa_wenda_money = fields.IntegerField(error_messages={ "required": "第四项不能为空!", "invalid": "第四项格式错误,请填写整数格式!", }, ) fugaibaobiao_shengcheng_moshi = fields.BooleanField( required=False, error_messages={ "required": "第五项调试模式类型错误!", # "invalid": "第五项格式错误", }, ) bianji_shifou_dianji_add_map = fields.BooleanField( required=False, error_messages={ "required": "第六项添加地图类型错误!", # "invalid": "第六项格式错误", }, )
class CheckoutAddressPluginForm(DialogPluginBaseForm): ADDRESS_CHOICES = [ ('shipping', _("Shipping")), ('billing', _("Billing")), ] address_form = fields.ChoiceField(choices=ADDRESS_CHOICES, widget=widgets.RadioSelect, label=_("Address Form"), initial=ADDRESS_CHOICES[0][0]) allow_multiple = fields.BooleanField( label=_("Multiple Addresses"), initial=False, required=False, help_text=_("Allow the customer to add and edit multiple addresses."), ) allow_use_primary = fields.BooleanField( label=_("Use primary address"), initial=False, required=False, help_text= _("Allow the customer to use the primary address, if this is the secondary form." ), ) class Meta: entangled_fields = { 'glossary': ['address_form', 'allow_multiple', 'allow_use_primary'] }
class CheckOutForm(Form): returned_key = fields.BooleanField(label='Returned Room Key', required=False) returned_card = fields.BooleanField(label='Returned Dorm Card', required=False) notes = fields.CharField( required=False, widget=widgets.Textarea(attrs={'rows': 3}), ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.helper = FormHelper() self.helper.include_media = False self.helper.layout = Layout( 'returned_key', 'returned_card', 'notes', ButtonHolder( Submit('submit', 'Check Out'), HTML( '<a href="{}" class="btn btn-secondary">Cancel</a>'.format( reverse('front_desk'))), ), )
class SearchPagesForm(forms.Form): # state = fields.ChoiceField(choices=[]) date1 = fields.ChoiceField(choices=[]) date2 = fields.ChoiceField(choices=[]) proxtext = fields.CharField() sequence = fields.BooleanField() issue_date = fields.BooleanField() def __init__(self, *args, **kwargs): super(SearchPagesForm, self).__init__(*args, **kwargs) # self.titles, self.states = _titles_states() # added by MK self.titles = _titles_options() self.cities = _cities_options() self.counties = _counties_options() self.types = _types_options() self.regions = _regions_options() fulltextStartYear, fulltextEndYear = _fulltext_range() self.years = [(year, year) for year in range(fulltextStartYear, fulltextEndYear + 1) ] self.fulltextStartYear = fulltextStartYear self.fulltextEndYear = fulltextEndYear # self.fields["state"].choices = self.states self.fields["date1"].choices = self.years self.fields["date1"].initial = fulltextStartYear self.fields["date2"].choices = self.years self.fields["date2"].initial = fulltextEndYear self.fields["sequence"].widget.attrs['value'] = 1
class ExampleRegistrationForm(forms.Form): debcamp = fields.BooleanField(label=_('Plan to attend DebCamp'), required=False) debconf = fields.BooleanField(label=_('Plan to attend DebConf'), required=False) require_sponsorship = fields.BooleanField( label=_('Will require sponsorship'), required=False) def __init__(self, *args, **kwargs): super(ExampleRegistrationForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.layout = Layout( Fieldset(_('Pre-Registration'), 'debcamp', 'debconf', 'require_sponsorship')) self.helper.add_input(Submit('submit', _('Save'))) @classmethod def is_registered(cls, kv_data): """ Given a user's kv_data query, determine if they have registered to attend. """ for item in kv_data.filter(key__in=('debcamp', 'debconf')): if item.value is True: return True return False def initial_values(self, user): """Set default values, based on the user""" return {'debconf': True}
class DetailForm(Form): """ Форма детализация для vbFilm """ extend = fields.BooleanField(initial=False, required=False, help_text=u'Расширенный') persons = fields.BooleanField(initial=False, required=False, help_text=u'Персоны')
class SearchPagesFormBase(forms.Form): state = fields.ChoiceField(choices=[]) date1 = fields.ChoiceField(choices=[]) date2 = fields.ChoiceField(choices=[]) proxtext = fields.CharField() issue_date = fields.BooleanField() def __init__(self, *args, **kwargs): super(SearchPagesFormBase, self).__init__(*args, **kwargs) self.titles, self.states = _titles_states() fulltextStartYear, fulltextEndYear = _fulltext_range() self.years = [(year, year) for year in range(fulltextStartYear, fulltextEndYear + 1) ] self.fulltextStartYear = fulltextStartYear self.fulltextEndYear = fulltextEndYear self.fields["state"].choices = self.states self.fields["date1"].choices = self.years self.fields["date1"].initial = fulltextStartYear self.fields["date2"].choices = self.years self.fields["date2"].initial = fulltextEndYear
class UserForm(ModelForm): # Fields related to user rights. is_admin = fields.BooleanField(label='System Administrator', required=False) def __init__(self, *args, **kwargs): super(UserForm, self).__init__(*args, **kwargs) # If there's an existing user, set the initial state of the user rights. if self.instance and self.instance.id: user_rights = UserRights.get(self.instance) self.initial.update({ 'is_admin': user_rights.is_admin, }) def save(self, *args, **kwargs): user = self.save_user(*args, **kwargs) self.save_user_rights(user) return user def save_user(self, *args, **kwargs): return super(UserForm, self).save(*args, **kwargs) def save_user_rights(self, user): user_rights = UserRights.objects.get_or_create(user=user)[0] user_rights.is_admin = self.is_checkbox_set('is_admin') user_rights.save() def is_checkbox_set(self, name): if name not in self.cleaned_data: return False return True if self.cleaned_data[name] else False
def __init__(self, queryset, *args, **kwargs): kwargs.setdefault('require_all_fields', False) subfields = ( fields.BooleanField(required=False), ColortagIEField(queryset, required=False) ) super().__init__(subfields, *args, **kwargs)
class BillingAddressForm(AddressForm): scope_prefix = 'data.billing_address' priority_field = 'priority_billing' use_shipping_address = fields.BooleanField(required=False, initial=True, widget=CheckboxInput(_("Use shipping address for billing"))) def as_div(self): # Intentionally rendered without field `use_shipping_address` self.fields.pop('use_shipping_address', None) return super(BillingAddressForm, self).as_div() @classmethod def form_factory(cls, request, data, cart): """ Overridden method to reuse data from ShippingAddressForm in case the checkbox for `use_shipping_address` is active. """ if data and data.pop('use_shipping_address', False): cls.set_address(cart, cart.shipping_address) else: return super(BillingAddressForm, cls).form_factory(request, data, cart) @classmethod def set_address(cls, cart, instance): # TODO: super(BillingAddressForm, cls).set_address(cart, instance) cart.billing_address = instance
class LoginForm(BaseForm, forms.Form): username = fields.CharField(error_messages={ 'required': '用户名不能为空', }) pwd = fields.CharField(error_messages={ 'required': '密码不能为空', }) checkCode = fields.CharField(error_messages={'required': '验证码不能为空.'}) rbm = fields.BooleanField(required=False, ) def clean_checkCode(self): value_data = self.cleaned_data if self.request.session['CheckCode'].upper() != value_data.get( "checkCode").upper(): self.add_error("checkCode", "验证码错误") raise ValidationError(message='验证码错误', code='invalid') return value_data def clean(self): userName = self.cleaned_data.get("username") pwd = self.cleaned_data.get("pwd") # 可以使用Q查询 Q(username=userName) & Q(pwd=pwd) userInfo = UserInfo.objects.filter(username=userName, pwd=pwd) if userInfo: # 记录session,可用于修改headTar中的状态。 self.request.session['user_info'] = userInfo.values( 'uid', 'username', 'email', 'bloginfo__bid', 'bloginfo__surfix').first() # 如果勾选了30免登陆,设置session的过期时间 if self.cleaned_data.get('rbm'): self.request.session.set_expiry(60 * 60 * 24 * 7) else: self.add_error("username", "用户名不存在或密码错误") raise ValidationError(message='用户名不存在或密码错误', code='invalid') return self.cleaned_data
class ProductForm(EntangledModelForm): name = fields.CharField() tenant = ModelChoiceField(queryset=get_user_model().objects.all(), empty_label=None) active = fields.BooleanField() color = fields.CharField() size = fields.ChoiceField(choices=[ ('s', "Small"), ('m', "Medium"), ('l', "Large"), ]) categories = ModelMultipleChoiceField(queryset=Category.objects.all(), required=False) class Meta: model = Product untangled_fields = ['name'] entangled_fields = { 'properties': ['tenant', 'active', 'color', 'size', 'categories'] } retangled_fields = { 'color': 'extra.variants.color', 'size': 'extra.variants.size', 'tenant': 'ownership.tenant', 'categories': 'extra.categories' }
def build_boolean_field(self, attr, **kwargs): """ Build field for sqlalchemy boolean type. """ if attr.column.nullable: return djangofields.NullBooleanField(**kwargs) return djangofields.BooleanField(**kwargs)
def __init__(self, choices, **kwargs): self.choices = choices fields = [django_fields.BooleanField(required=False) for c in choices] widget = widgets.DependentCheckboxes(choices) super(DependentBooleanField, self).__init__(widget=widget, fields=fields, require_all_fields=False, **kwargs)
def get_implementation(self, widget_attrs={}): widget_attrs[u"data-id"] = self.id widget = widgets.CheckboxInput(attrs=widget_attrs) return fields.BooleanField(label=self.display_name, required=self.required, widget=widget, initial=self.default_checked)
class DeleteParticipationForm(Form): yes_please = fields.BooleanField(label=_('Yes I am sure'), required=True) def __init__(self, *args, **kwargs) -> None: super().__init__(*args, **kwargs) self.helper = helper = MyFormHelper(self) helper.layout.append( Submit('submit', _('Delete'))) # , css_class='btn-participation-continue'))
class BillingAddressForm(AddressForm): scope_prefix = 'data.billing_address' legend = _("Billing Address") default_priority = 'nop' plugin_fields = AddressForm.plugin_fields + ('use_shipping_address', ) use_shipping_address = fields.BooleanField( required=False, initial=True, widget=CheckboxInput( _("Use shipping address for billing"), attrs={'ng-change': 'switchEntity(billing_address_form)'})) class Meta(AddressForm.Meta): model = BillingAddressModel def __init__(self, initial=None, instance=None, *args, **kwargs): if instance: initial = initial or {} initial['use_shipping_address'] = False super(BillingAddressForm, self).__init__(initial=initial, instance=instance, *args, **kwargs) @classmethod def get_address(cls, cart): return cart.billing_address def set_address(self, cart, instance): cart.billing_address = instance if not self[ 'use_shipping_address'].value() else None def full_clean(self): super(BillingAddressForm, self).full_clean() if self.is_bound and self['use_shipping_address'].value(): # reset errors, since then the form is always regarded as valid self._errors = ErrorDict() def is_valid(self): return self['use_shipping_address'].value() or super( BillingAddressForm, self).is_valid() def save(self, commit=True): if not self['use_shipping_address'].value(): return super(BillingAddressForm, self).save(commit) def as_div(self): # Intentionally rendered without field `use_shipping_address` self.fields.pop('use_shipping_address', None) return super(BillingAddressForm, self).as_div() def as_text(self): bound_field = self['use_shipping_address'] if bound_field.value(): return bound_field.field.widget.choice_label return super(BillingAddressForm, self).as_text()
class ProductForm(EntangledModelForm): name = fields.CharField() active = fields.BooleanField() description = fields.CharField(required=False, widget=widgets.Textarea) class Meta: model = Product untangled_fields = ['name'] entangled_fields = {'properties': ['active', 'description']}
class SharableCascadeForm(forms.ModelForm): save_shared_glossary = fields.BooleanField(required=False, label=_("Remember these settings as:")) save_as_identifier = fields.CharField(required=False, label='') def clean_save_as_identifier(self): identifier = self.cleaned_data['save_as_identifier'] if SharedGlossary.objects.filter(identifier=identifier).exclude(pk=self.instance.pk).exists(): raise ValidationError(_("The identifier '{0}' has already been used, please choose another name.").format(identifier)) return identifier
class CreateUserForm(UserCreationForm): broker = fields.BooleanField(required=False) class Meta: model = User fields = ( "username", "email", )
class DomainTransferTakeoverForm(forms.Form): domain_name = fields.CharField() transfer_code = fields.CharField() rewrite_contacts = fields.BooleanField( initial=True, label='Use my default contacts', help_text= 'This will automatically rewrite current domain contacts with my default info' )
class ShopAddToCartPluginForm(EntangledModelFormMixin): use_modal_dialog = fields.BooleanField( label=_("Use Modal Dialog"), initial=True, required=False, help_text=_("After adding product to cart, render a modal dialog"), ) class Meta: entangled_fields = {'glossary': ['use_modal_dialog']}
class MovePageForm(forms.Form): report_page = ModelChoiceField(queryset=ReportPage.objects.all(), required=True) move_up = fields.BooleanField(required=False) def __init__(self, *args, report=None, **kwargs): self.report = report super(MovePageForm, self).__init__(*args, **kwargs) def clean_report_page(self): report_page = self.cleaned_data['report_page'] if report_page not in self.report.get_pages(): raise ValidationError("Page is not part of this report", code='report_invalid') return report_page def clean(self): if 'report_page' not in self.cleaned_data: # There is no report page, so likely an error occured in clean_report_page return cur_link = ReportPageLink.objects.get(page=self.cleaned_data['report_page']) if self.cleaned_data['move_up']: if ReportPageLink.objects.filter(report=self.report, page_number__lt=cur_link.page_number).count() == 0: raise ValidationError( "This page was already the first page", code='is_first_page' ) else: if ReportPageLink.objects.filter(report=self.report, page_number__gt=cur_link.page_number).count() == 0: raise ValidationError( "This page was already the last page", code='is_last_page' ) return self.cleaned_data def save(self): """ Save the move by switching the page numbers of the two pages """ this_page_link = self.cleaned_data['report_page'].reportpagelink current_page_number = this_page_link.page_number switch_with_link = ReportPageLink.objects. \ filter(report=self.report). \ order_by('page_number') if self.cleaned_data['move_up']: switch_with_link = switch_with_link.\ filter(page_number__lt=current_page_number).\ last() else: switch_with_link = switch_with_link. \ filter(page_number__gt=current_page_number). \ first() this_page_link.page_number = switch_with_link.page_number this_page_link.save() switch_with_link.page_number = current_page_number switch_with_link.save()
class LoginForm(Form): email = fields.CharField(widget=widgets.EmailInput) password = fields.CharField(widget=widgets.PasswordInput) remember = fields.BooleanField(required=False) # 自定义字段验证信息,以 ["clean_%s" % "字段名"] 为方法名 def clean_email(self): if not User.objects.filter(email=self.cleaned_data['email']): raise ValidationError('邮箱未注册', code=500) else: return self.cleaned_data['email']
class ContactForm(forms.Form): email = fields.EmailField(widget=widgets.EmailInput(attrs=ATTRS)) conditions = fields.BooleanField(widget=widgets.CheckboxInput( attrs=ATTRS.update({'class': ''}))) message = fields.CharField(widget=widgets.Textarea(attrs=ATTRS)) def clean_message(self): message = self.cleaned_data['message'] if len(message) > 300: raise forms.ValidationError("Le messsage est trop long") super().clean()
class MethodPluginForm(DialogPluginBaseForm): show_additional_charge = fields.BooleanField( label=_("Show additional charge"), initial=True, required=False, help_text= _("Add an extra line showing the additional charge depending on the chosen payment/shipping method." ), ) class Meta: entangled_fields = {'glossary': ['show_additional_charge']}
class LoginForm(Form): name = fields.CharField( required=True, error_messages={'required': '用户名不能为空'}, widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': '用户名', 'id': 'name'}) ) password = fields.CharField( required=True, error_messages={'required': '密码不能为空'}, widget=widgets.PasswordInput(attrs={'class': 'form-control', 'placeholder': '密码', 'id': 'password'}) ) rmb = fields.BooleanField(required=False, widget=widgets.CheckboxInput(attrs={'value': 1}))
class InquiryUserExcludeFilterForm(FilterInquiriesMixin, FilterFormBase): """ A checkbox that marks whether Inquiries made by Users should be ignored """ exclude_users = fields.BooleanField(initial=False, required=False, label="Gestart door users") exclude_uncompleted = fields.BooleanField(initial=False, required=False) prefix = 'filter_users' description = "Exclude for..." def has_filter_data(self): """ Returns whether this filter has data it filters on """ if not self.is_valid(): # If a form is not valid, it should by definition not be filtered return False return any(self.cleaned_data.values()) def filter(self, data): data = super(InquiryUserExcludeFilterForm, self).filter(data) if self.cleaned_data["exclude_users"]: data = data.filter(inquirer__user=None) if self.cleaned_data["exclude_uncompleted"]: data = data.filter(is_complete=True) return data