示例#1
0
class OrganizationForm(forms.ModelForm):
    phone_number = USPhoneNumberField(required=False)
    mailing_address_state = USStateField(widget=USStateSelect,
                                         required=True,
                                         label='State')
    mailing_address_zip = USZipCodeField(required=True, label='Zipcode')

    class Meta:
        model = Organization
        exclude = ['user', 'date_created']

    def __init__(self, *args, **kwargs):
        super(OrganizationForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_id = 'OrganizationForm'
        self.helper.form_class = 'form-horizontal'
        #self.helper.field_class = 'col-lg-4'
        #self.helper.label_class = 'col-lg-2'
        self.helper.form_tag = True

        self.helper.layout = Layout(
            Fieldset('Add Third Party Buyer',
                     HTML("""
						<p>If you are applying on behalf of an organization, family member, client or other third party who will take title, provide their name and contact information.</p>
					"""),
                     Field('name'),
                     Field('email'),
                     Field('phone_number'),
                     css_class='well'),
            Fieldset('Type and Relationship',
                     Field('entity_type'),
                     Field('relationship_to_user'),
                     css_class='well'),
            Fieldset('Mailing Address',
                     Field('mailing_address_line1'),
                     Field('mailing_address_line2'),
                     Field('mailing_address_line3'),
                     Field('mailing_address_city'),
                     Field('mailing_address_state'),
                     Field('mailing_address_zip'),
                     css_class='well'),
            Fieldset(
                'Supporting Documents',
                HTML("""
						<p>Organizations should provide additional identifying and financial documents.</p>
					"""),
                Field('sos_business_entity_report'),
                #Field('irs_determination_letter'),
                #Field('most_recent_financial_statement'),
                #HTML('<div class="form-group"><div class="control-label col-lg-4">Attach a file</div><div id="file-uploader" class="form-control-static col-lg-6">Drop your file here to upload</div>'),
                css_class='well'),
            FormActions(
                #Button('cancel', 'Cancel'),
                Submit('save', 'Save')))
        self.helper.form_method = 'post'
        self.helper.form_action = ''
示例#2
0
class USPostalAddressForm(PostalAddressForm):
    line1 = forms.CharField(label=_(u"Street"), max_length=50)
    line2 = forms.CharField(label=_(u"Area"), required=False, max_length=100)
    city = forms.CharField(label=_(u"City"), max_length=50)
    state = USStateField(label=_(u"US State"), widget=USStateSelect)
    code = USZipCodeField(label=_(u"Zip Code"))

    def __init__(self, *args, **kwargs):
        super(USPostalAddressForm, self).__init__(*args, **kwargs)
        self.fields['country'].initial = "US"
示例#3
0
class OrderCreateForm(forms.ModelForm):
    """ docs. """
    postal_code = USZipCodeField()

    class Meta:
        model = Order
        fields = [
            'first_name', 'last_name', 'email', 'address', 'postal_code',
            'city'
        ]
示例#4
0
class AddressForm(forms.Form):
    address_street1 = forms.CharField(label='Address', max_length=90)
    address_street2 = forms.CharField(label='Address line 2', required=False)
    address_city = forms.CharField(label='City', max_length=90)

    address_state = USStateField(
        label="State",
        initial="MN",
        widget=USStateSelect(attrs={'class': 'custom-select'}))

    address_zip = USZipCodeField(label='Zip Code')
示例#5
0
class VoterForm(forms.Form):

    email = forms.EmailField()
    zipcode = USZipCodeField()
    captcha = NoReCaptchaField(gtag_attrs={'data-size': 'compact'})

    def __init__(self, *args, **kwargs):
        super(VoterForm, self).__init__(*args, **kwargs)

    def ignore_captcha(self):
        del self.fields['captcha']
示例#6
0
class SearchForm(forms.Form):
    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user')

        super(SearchForm, self).__init__(*args, **kwargs)

        if user.is_superuser:
            states = list(STATE_CHOICES)
        else:
            user_states = [org.state for org in user.organizations.all()]
            states = []

            for state in list(STATE_CHOICES):
                if state[0] in user_states:
                    states.append(state)

        states.insert(0, ('', 'Select ...'))

        self.fields['state'] = USStateField(
            required=False, widget=forms.Select(choices=states), label='State')

    signed_petition = forms.BooleanField(required=False,
                                         label='Signed Petition')
    has_phone_number = forms.BooleanField(required=False,
                                          label='Has Phone Number')
    volunteer_activity = forms.ModelMultipleChoiceField(
        required=False,
        label='Volunteer Activities',
        queryset=VolunteerActivity.objects.all())
    city = forms.CharField(required=False, label='City')
    zip = USZipCodeField(required=False, label='Zip')
    zip_radius = forms.IntegerField(
        required=False,
        label='Radius in Miles',
        help_text='Leave blank for exact zip code match')

    def clean(self):
        cleaned_data = super(SearchForm, self).clean()

        # make sure they selected at least one search field
        if not cleaned_data.get('signed_petition') and not cleaned_data.get('volunteer_activity') \
                and not cleaned_data.get('has_phone_number') and not cleaned_data.get('city') \
                and not cleaned_data.get('state') and not cleaned_data.get('zip'):
            self.add_error('volunteer_activity',
                           'Please select at least one search criteria.')
        elif cleaned_data.get('zip'):
            try:
                ZipCode.objects.get(zip=cleaned_data.get('zip'))
            except ZipCode.DoesNotExist:
                self.add_error('zip', 'Invalid zip code')
        elif cleaned_data.get('zip_radius') and not cleaned_data.get('zip'):
            self.add_error(
                'zip',
                'A zip code is required when searching on zip code radius')
示例#7
0
def clean_postal_code(country, code):
    if not code:
        # Other places are responsible for checking whether empty is okay.
        return code
    if country == 'GB':
        field = GBPostcodeField()
    elif country == 'US':
        field = USZipCodeField()
    else:
        return code
    return field.clean(code)
示例#8
0
class SignUpForm(UserCreationForm):

    first_name = forms.CharField(max_length=40,
                                 required=True,
                                 help_text='Required')
    last_name = forms.CharField(max_length=40,
                                required=True,
                                help_text='Required')
    email = forms.EmailField(max_length=254,
                             required=True,
                             help_text='Required')
    address = forms.CharField(max_length=254,
                              required=True,
                              help_text='Required')
    state = USStateField(required=True,
                         widget=USStateSelect(),
                         help_text='Required')
    city = forms.CharField(max_length=85, required=True, help_text='Required')
    zip_code = USZipCodeField(required=True, help_text='Required')

    class Meta:
        model = User
        fields = ('username', 'password1', 'password2', 'first_name',
                  'last_name', 'email')

    def clean_email(self):
        email = self.cleaned_data['email']
        if User.objects.filter(email=email).count() > 0:
            raise forms.ValidationError(
                "A user with that email already exists.")
        return email

    def clean_first_name(self):
        first_name = self.cleaned_data['first_name']
        has_name_chars(first_name)
        return first_name

    def clean_last_name(self):
        last_name = self.cleaned_data['last_name']
        has_name_chars(last_name)
        return last_name

    def clean_city(self):
        city = self.cleaned_data['city']
        has_name_chars(city)
        return city

    def clean_address(self):
        address = self.cleaned_data['address']
        for char in address:
            if char in "!@$%^&*()~,./?;:":
                raise forms.ValidationError(
                    'You included an in Invalid Symbol in the address field')
        return address
示例#9
0
class OrderCreateForm(forms.ModelForm):
    postal_code = USZipCodeField()
    state = USStateSelect()

    class Meta:
        model = Order
        fields = [
            'address',
            'postal_code',
            'city',
            'state',
        ]  #
示例#10
0
class PractProfileForm(forms.ModelForm):
    class Meta:
        model = Practitioner
        exclude = ('account', 'available', 'verified', 'created', 'updated_at')

    phone = forms.IntegerField(required=False)
    accreditation = forms.CharField(required=False)
    license = forms.CharField(required=False)
    state = USStateField(required=False)
    zipcode = USZipCodeField(required=False)
    school = forms.CharField(required=False)
    about = forms.CharField(required=False, widget=forms.Textarea)
示例#11
0
class OrderCreateForm(forms.ModelForm):

    country = CountryField().formfield()
    #state = forms.CharField(widget=USStateSelect())
    postal_code = USZipCodeField()

    class Meta:
        model = Order
        fields = [
            'first_name', 'last_name', 'email', 'address', 'postal_code',
            'country', 'city', 'state'
        ]
示例#12
0
文件: forms.py 项目: WPMedia/muckrock
class AddressForm(forms.ModelForm):
    """A form for entering an address"""

    # Character limits are for conforming to Lob's requirements
    agency_override = forms.CharField(
        max_length=40,
        label="Name",
        required=False,
        help_text=
        "Who the letter should be addressed to.  If left blank, will default "
        "to the agency's name.  This should be filled in if the agency name "
        "is greater than 40 characters for Lob compatibility",
    )
    attn_override = forms.CharField(
        max_length=40,
        label="Attention of",
        required=False,
        help_text=
        "Who the letter should be to the attention of.  If left blank, "
        "will default to the FOIA Office (or applicable law for states).",
    )
    street = forms.CharField(max_length=64)
    suite = forms.CharField(max_length=64, required=False)
    city = forms.CharField(max_length=200)
    state = forms.ChoiceField(choices=(("", "---"), ) + tuple(STATE_CHOICES))
    zip_code = USZipCodeField()

    class Meta:
        model = Address
        fields = [
            "agency_override",
            "attn_override",
            "street",
            "suite",
            "city",
            "state",
            "zip_code",
        ]

    def __init__(self, *args, **kwargs):
        self.agency = kwargs.pop("agency")
        super(AddressForm, self).__init__(*args, **kwargs)

    def clean_agency_override(self):
        """Require this field if the agency name is too long"""
        agency_override = self.cleaned_data["agency_override"]
        if (not agency_override and not self.agency.mail_name
                and len(self.agency.name) > 40):
            raise forms.ValidationError(
                "Must supply a name since the agency name is over 40 characters long"
            )
        return agency_override
示例#13
0
class OrderCreateForm(forms.ModelForm):
    postal_code = USZipCodeField()

    class Meta:
        model = Order
        fields = [
            "first_name",
            "last_name",
            "email",
            "address",
            "postal_code",
            "city",
        ]
示例#14
0
    def __init__(self, *args, **kwargs):
        """Constructor for AltLocationField.

        Setting up and providing fields list to parent`s init.

        """
        list_fields = [
            forms.CharField(max_length=255),
            forms.CharField(max_length=255),
            USStateField(),
            USZipCodeField()
        ]
        super().__init__(list_fields, *args, **kwargs)
示例#15
0
class PropertyListingForm(forms.ModelForm):
    address = forms.CharField()
    city = forms.CharField()
    state = forms.ModelChoiceField(queryset=State.objects.all())
    zip_code = USZipCodeField()
    beds = forms.IntegerField()
    baths = forms.FloatField()

    class Meta:
        model = PropertyListing
        fields = '__all__'
        widgets = {
            'available_date': forms.DateInput(attrs={'class': 'datepicker'})
        }
示例#16
0
class OpenDebatesRegistrationForm(RegistrationForm):

    first_name = forms.CharField(max_length=30)
    last_name = forms.CharField(max_length=30)
    display_name = forms.CharField(max_length=255,
                                   label=mark_safe(display_name_label),
                                   required=False)
    twitter_handle = forms.CharField(max_length=255,
                                     label=mark_safe(twitter_handle_label),
                                     required=False)
    zip = USZipCodeField()
    captcha = NoReCaptchaField(label=_("Are you human?"))

    def clean_twitter_handle(self):
        if self.cleaned_data.get("twitter_handle", "").startswith("@"):
            return self.cleaned_data['twitter_handle'].lstrip("@")
        if self.cleaned_data.get("twitter_handle",
                                 "").startswith("https://twitter.com/"):
            return self.cleaned_data['twitter_handle'][20:]
        if self.cleaned_data.get("twitter_handle",
                                 "").startswith("http://twitter.com/"):
            return self.cleaned_data['twitter_handle'][19:]
        if self.cleaned_data.get("twitter_handle",
                                 "").startswith("twitter.com/"):
            return self.cleaned_data['twitter_handle'][12:]
        return self.cleaned_data.get("twitter_handle", "").strip() or None

    def clean_email(self):
        """
        Validate that the supplied email address is unique for the
        site.

        """
        User = get_user_model()
        if User.objects.filter(email__iexact=self.cleaned_data['email']):
            raise forms.ValidationError(
                "This email address is already in use. Please supply "
                "a different email address.")
        return self.cleaned_data['email']

    def save(self, commit=True):
        user = super(OpenDebatesRegistrationForm, self).save(commit=False)
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        if commit:
            user.save()
        return user

    def ignore_captcha(self):
        del self.fields['captcha']
示例#17
0
class ResourceForm(ModelForm):
    """Form for editing and creating resources."""

    state = forms.ChoiceField(choices=[('Washington', 'Washington')],
                              initial='Washington',
                              disabled=True,
                              label='State')

    street = forms.CharField(required=False)

    zip_code = USZipCodeField(required=False)

    phone_number = USPhoneNumberField(required=False)

    fax_number = USPhoneNumberField(required=False)

    website = forms.URLField(initial='http://', required=False)

    class Meta:
        model = Resource
        fields = [
            'name', 'description', 'street', 'city', 'state', 'zip_code',
            'website', 'phone_number', 'fax_number', 'email', 'image',
            'gender', 'languages', 'services', 'lower_age', 'upper_age',
            'us_citizens_only', 'sober_only', 'case_managers', 'open_24_hours',
            'pets', 'accepts_sex_offender_records', 'accepts_criminal_records',
            'accepts_incarcerated', 'family_friendly', 'orca_cards_available'
        ]
        widgets = {
            'languages': forms.CheckboxSelectMultiple(),
            'services': forms.CheckboxSelectMultiple()
        }
        labels = {
            'languages': 'Languages spoken:',
            'services': 'Select all services your organization provides.',
            'gender': 'Gender restrictions?',
            'lower_age': 'Lower age limit',
            'upper_age': 'Upper age limit',
            'pets': 'Pets allowed'
        }

    def clean(self):
        """Overridden clean method for validation of the age inputs."""
        if self.cleaned_data['upper_age'] <= self.cleaned_data['lower_age']:
            raise ValidationError(
                'Invalid entries for lower and upper age ranges.')
        return self.cleaned_data
示例#18
0
class ContactForm(forms.Form):
    address_street1 = forms.CharField(label='Address', max_length=90)
    address_street2 = forms.CharField(label='Address line 2', required=False)
    address_city = forms.CharField(label='City', max_length=90)
    address_state = USStateField(
        label="State",
        initial="MN",
        widget=USStateSelect(attrs={'class': 'custom-select'}))
    address_zip = USZipCodeField(label='Zip Code')

    phone_number = PhoneNumberField(label="Phone", region='US')
    phone_can_receive_sms = forms.BooleanField(
        label='This phone can receive SMS messages.', required=False)

    emergency_contact_name = forms.CharField(label='Emergency Contact',
                                             max_length=90)
    emergency_contact_phone = PhoneNumberField(region='US')
示例#19
0
class CheckoutForm(forms.Form):
    first_name = forms.CharField()
    last_name = forms.CharField()
    street_address_1 = forms.CharField(widget=forms.TextInput(
        attrs={
            'class': "form-control",
            'placeholder': "1234 Main St."
        }))
    apartment = forms.CharField(
        required=False,
        widget=forms.TextInput(attrs={
            'class': "form-control",
            'placeholder': "Apartment or suite"
        }))
    country = forms.ChoiceField(choices=COUNTRY_CHOICES,
                                widget=forms.Select(
                                    attrs={
                                        'onChange': 'countrySelect(this)',
                                        'class': 'custom-select d-block w-100',
                                    }))
    province = CAProvinceField(widget=CAProvinceSelect(
        attrs={
            'type': 'hidden',
            'class': 'custom-select d-block w-100',
        }))
    ca_postal_code = CAPostalCodeField(
        required=False,
        widget=forms.TextInput(attrs={
            'class': 'custom-select d-block w-100',
        }))
    us_state = USStateField(
        widget=USStateSelect(attrs={
            'class': 'custom-select d-block w-100',
        }),
        required=False)
    us_zip_code = USZipCodeField(
        required=False,
        widget=forms.TextInput(attrs={
            'class': 'custom-select d-block w-100',
        }))
    same_billing_address = forms.BooleanField(widget=forms.CheckboxInput(),
                                              required=False)
    save_info = forms.BooleanField(widget=forms.CheckboxInput(),
                                   required=False)
    payment_option = forms.ChoiceField(choices=PAYMENT_CHOICE,
                                       widget=forms.RadioSelect())
示例#20
0
 class Meta:
     model = Order
     fields = [
         'first_name', 'last_name', 'email', 'address', 'postal_code',
         'city', 'country'
     ]
     widget = {
         'first_name': forms.TextInput(attrs={'class': 'form-control'}),
         'last_name': forms.TextInput(attrs={
             'class': 'form-control',
         }),
         'email': forms.EmailInput(attrs={'class': 'form-control'}),
         'address': forms.TextInput(attrs={'class': 'form-control'}),
         'postal_code': USZipCodeField(),
         'city': forms.TextInput(attrs={'class': 'form-control'}),
         'country': forms.TextInput(attrs={'class': ' form-control'}),
     }
示例#21
0
class Address(models.Model):
    street = models.CharField(max_length=50)
    city = models.CharField(max_length=50)
    state = USStateField()
    zip_code = USZipCodeField()

    def __str__(self):
        if self.person_set.count() > 0:
            users = [u.fullname for u in self.person_set.select_related()]
            return ','.join(users) + '\'s address'
        elif self.company_set.count() > 0:
            companies = [u.name for u in self.company_set.select_related()]
            return ','.join(companies) + '\'s address'
        else:
            return "Unassociated Address"

    class Meta:
        verbose_name = "Address"
        verbose_name_plural = "Addresses"
示例#22
0
class BillingUpdateForm(forms.ModelForm):
    """
    A form to accept a credit card updates
    """

    payment_method_nonce = forms.CharField(required=True, error_messages={'required': 'Payment token is required.'})

    nickname = forms.CharField(max_length=20,required=False,widget=forms.TextInput(attrs={'placeholder': 'Nickname'}))
    is_default = forms.BooleanField(label="Make this payment default", required=False,
        widget=forms.CheckboxInput())
    street_1 = forms.CharField(max_length=128, required=False, error_messages={'required': 'Billing street address is required.'}, widget=forms.TextInput(attrs={'placeholder': 'Street Address 1'}))
    street_2 = forms.CharField(max_length=128, required=False, widget=forms.TextInput(attrs={'placeholder': 'Street Address 2'}))
    city = forms.CharField(max_length=64, required=False, error_messages={'required': 'Billing city is required.'}, widget=forms.TextInput(attrs={'placeholder': 'City'}))
    state = forms.ChoiceField(required=False, choices=STATE_CHOICES, initial='TX')
    postal_code = USZipCodeField(required=False, error_messages={'required': 'Billing zip code is required.'}, widget=forms.TextInput(attrs={'placeholder': 'Billing Zip Code'}))

    class Meta:
        model = Address
        fields = ('street_1', 'street_2', 'city', 'state', 'postal_code')
示例#23
0
class PractInfoForm(forms.Form):
    class Meta:
        model = Practitioner
        # fields = ["username","password","password_c","first_name","last_name","email","phone","zipcode"]
        exclude = ('available', 'verified', 'created', 'updated_at')

    username = forms.CharField(max_length=100)
    password = forms.CharField(max_length=50, widget=forms.PasswordInput)
    password_c = forms.CharField(max_length=50, widget=forms.PasswordInput)

    first_name = forms.CharField(max_length=100)
    last_name = forms.CharField(max_length=100)

    email = forms.EmailField()
    phone = forms.IntegerField(required=False)
    # state 		= forms.ChoiceField(choices=STATE_CHOICES)

    state = USStateField(required=False)
    zipcode = USZipCodeField(required=False)
示例#24
0
class ProfileForm(ModelForm):
    STATE_CHOICES = list(STATE_CHOICES)
    STATE_CHOICES.insert(0, ('', '---------'))
    state = USStateField(
        widget=forms.Select(choices=STATE_CHOICES,
                            attrs={'class': 'form-control'}),
        required=False,
    )
    zip_code = USZipCodeField(
        widget=forms.TextInput(attrs={'class': 'form-control'}),
        required=False,
    )

    class Meta:
        model = UserProfile
        fields = (
            'employer',
            'address1',
            'address2',
            'city',
            'state',
            'zip_code',
            'wants_newsletter',
            'barmembership',
            'plaintext_preferred',
        )
        widgets = {
            'employer':
            forms.TextInput(attrs={'class': 'form-control'}),
            'barmembership':
            forms.SelectMultiple(attrs={
                'size': '8',
                'class': 'form-control'
            }),
            'address1':
            forms.TextInput(attrs={'class': 'form-control'}),
            'address2':
            forms.TextInput(attrs={'class': 'form-control'}),
            'city':
            forms.TextInput(attrs={'class': 'form-control'}),
            #        'wants_newsletter': forms.TextInput(attrs={'class': 'form-control'}),
            #        'plaintext_preferred': forms.TextInput(attrs={'class': 'form-control'}),
        }
示例#25
0
class LocationForm(forms.ModelForm):
    zipcode = USZipCodeField()

    class Meta:
        model = Location
        fields = ('zipcode', )

    def __init__(self, *args, **kwargs):
        self.owner = kwargs.pop('owner')
        super(LocationForm, self).__init__(*args, **kwargs)

    def clean_zipcode(self):
        zipcode = self.cleaned_data['zipcode'][:5]
        if Location.objects.filter(owner_id=self.owner,
                                   zipcode=zipcode).exists():
            raise forms.ValidationError(
                "You already have this zipcode in your list.")
        elif zipcodes.is_real(zipcode) == False:
            raise forms.ValidationError("You must enter a real US zipcode.")
        return zipcode
示例#26
0
class RegisterForm(forms.Form):
    def __init__(self, *args, **kwargs):
        kwargs.setdefault('label_suffix', '')
        super(RegisterForm, self).__init__(*args, **kwargs)

    email = forms.EmailField(label="Email", max_length=255)
    fname = forms.CharField(label="First name", max_length=50)
    lname = forms.CharField(label="Last name", max_length=50)
    password = forms.CharField(label="Password",
                               widget=forms.PasswordInput,
                               max_length=100)
    rpassword = forms.CharField(label="Confirm password",
                                widget=forms.PasswordInput,
                                max_length=100)
    street = forms.CharField(label="Street address", max_length=128)
    city = forms.CharField(label="City", max_length=64)
    state = USStateField(label="State")
    zip = USZipCodeField(label="Zip", max_length=5)
    action = forms.CharField(label="action",
                             widget=forms.HiddenInput(),
                             initial="kek")
示例#27
0
class AddressForm(forms.ModelForm):
    address = forms.CharField(max_length=20, required=True)
    state = USStateSelect()
    city = forms.CharField(max_length=20)
    zipcode = USZipCodeField()

    class Meta:
        model = Address
        fields = ('address', 'state', 'city', 'zipcode')

    def save(self, commit=True):
        address = super().save(commit=False)
        address.address = self.cleaned_data.get('address')
        address.state = self.cleaned_data.get('state')
        address.city = self.cleaned_data.get('city')
        address.zipcode = self.cleaned_data.get('zipcode')

        if commit:
            address.save()

        return address
示例#28
0
class Passport(forms.Form):
    another_passport = forms.ChoiceField(label="Do you have a passport from another country?", choices=YES_OR_NO_RADIO, widget=UswdsRadioSelect, required=False)
    # @todo: Implement subsequent conditional qs.
    # From which country or countries do you currently have a passport?
    # What is the status of your current passport(s)?)
    travel_departure_date = forms.DateTimeField(label='Consider your upcoming travel plans. On what date (MM/DD/YYYY) do you plan to leave the United States?', help_text="If you do not have any upcoming travel plans, please leave this field blank.", required=False)
    travel_return_date = forms.DateTimeField(label='On what date (MM/DD/YYYY) do you plan to return?', help_text="If you do not have any upcoming travel plans, please leave this field blank.", required=False)
    travel_destinations = forms.CharField(label="Which country or countries will you visit?", required=False)
    emergency_contact_name = forms.CharField(label="Emergency contact's name", required=False)
    emergency_contact_phone = USPhoneNumberField(label="Emergency contact's phone number", required=False)
    emergency_contact_address_street = forms.CharField(label="Emergency contact's street number and name", required=False)
    emergency_contact_address_apt = forms.CharField(label="Emergency contact's apartment or floor number (if applicable)", required=False)
    emergency_contact_address_city = forms.CharField(label="Emergency contact's city", required=False)
    emergency_contact_address_state = forms.ChoiceField(choices=STATES, label="Emergency contact's state", required=False)
    # @maybe: Refactor as a USStateSelect. Also, allow non-U.S. answers.
    emergency_contact_address_zip = USZipCodeField(label="Emergency contact's ZIP code", required=False)
    # @maybe: Refactor these as CountryField()s.
    # Docs: https://pypi.python.org/pypi/django-countries#countryselectwidget
    emergency_contact_address_country = forms.CharField(label="Emergency contact's country, if outside the U.S.", required=False)
    emergency_contact_email = forms.EmailField(label="Emergency contact's email address", required=False)
    emergency_contact_relationship = forms.CharField(label="Emergency contact's relationship", required=False)
示例#29
0
class ProfileForm(forms.Form):
    """
    A form for a user to update their basic profile information
    """

    first_name = forms.CharField(max_length=30, error_messages={'required': 'First name is required.'})
    last_name = forms.CharField(max_length=30, error_messages={'required': 'Last name is required.'})
    email = forms.EmailField(error_messages={'required': 'Email address is required.'})
    company_name = forms.CharField(max_length=120, required=False, error_messages={})
    phone = USPhoneNumberField(error_messages={'required': 'Phone number is required.'})
    mobile_phone = USPhoneNumberField(required=False, error_messages={})

    ship_street_1 = forms.CharField(max_length=128, required=False)
    ship_street_2 = forms.CharField(max_length=128, required=False)
    ship_city = forms.CharField(max_length=64, required=False)
    ship_state = forms.ChoiceField(required=False, choices=STATE_CHOICES, initial='TX')
    ship_postal_code = USZipCodeField(required=False)

    date_of_birth = forms.DateField(widget=forms.DateInput(format='%m/%d/%Y'), input_formats=('%m/%d/%Y', '%m/%d/%y',), error_messages={'required': 'Date of Birth is required.'})
    weight = forms.ChoiceField(widget=forms.Select, choices=UserProfile.WEIGHT_RANGE_CHOICES)

    origin_airport = AdvancedModelChoiceField(queryset=Airport.objects.all(), widget=forms.RadioSelect, required=False, empty_label=None)

    food_options = forms.ModelMultipleChoiceField(queryset=FoodOption.objects.all(), widget=forms.CheckboxSelectMultiple, required=False)
    allergies = forms.CharField(max_length=128, required=False)

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')
        super(ProfileForm, self).__init__(*args, **kwargs)

    def clean_email(self):
        """
        Check to see if this email already belongs to someone else.
        """
        email = self.cleaned_data.get('email')

        if User.objects.filter(email=email).exclude(id=self.user.id).exists():
            self._errors['email'] = self.error_class(['This email has already been used.'])

        return email
示例#30
0
class ProfileEditForm(forms.ModelForm):
    SEX = (
        ('s', 'SEX'),
        ('m', 'MALE'),
        ('f', 'FEMALE'),
    )
    MARITAL = (
        ('si', 'SINGLE'),
        ('ma', 'MARRIED'),
        ('di', 'DIVORCED'),
        ('se', 'SEPERATED'),
    )
    KIDS = (('no', 'NO'), ('yes', 'YES'), ('maybe', 'MAYBE'))
    SEX_INTEREST = (
        ('m', 'MALE'),
        ('f', 'FEMALE'),
        ('b', 'MALE & FEMALE'),
    )
    PROFILE_STATE_CHOICES = list(STATE_CHOICES)
    PROFILE_STATE_CHOICES.insert(0, ('', 'STATES'))
    sex = forms.CharField(widget=forms.Select(choices=SEX))
    marital = forms.CharField(widget=forms.Select(choices=MARITAL))
    kids = forms.CharField(widget=forms.Select(choices=KIDS))
    interest = forms.CharField(widget=forms.Select(choices=SEX_INTEREST))
    DOB = forms.DateField(widget=forms.TextInput(
        attrs={'class': 'datepicker'}))
    zip_code = USZipCodeField()
    state_province = USStateField(widget=forms.Select(
        choices=PROFILE_STATE_CHOICES))
    SSN = USSocialSecurityNumberField()
    phone = PhoneNumberField()
    fax = PhoneNumberField()

    class Meta:
        model = Profile
        fields = ('username', 'passport', 'sex', 'interest', 'marital', 'kids',
                  'next_of_kin', 'height', 'DOB', 'phone', 'fax', 'address',
                  'city', 'zip_code', 'state_province', 'SSN', 'country')
        widgets = {'country': CountrySelectWidget()}