class SocialLinksForm(forms.Form): HELP_URLS = 'Use a full web address (URL) including http:// or https://' facebook_url = forms.URLField( label='URL for your Facebook company page (optional):', help_text=HELP_URLS, max_length=255, required=False, validators=[ directory_validators.company.case_study_social_link_facebook ], ) twitter_url = forms.URLField( label='URL for your Twitter company profile (optional):', help_text=HELP_URLS, max_length=255, required=False, validators=[ directory_validators.company.case_study_social_link_twitter ], ) linkedin_url = forms.URLField( label='URL for your LinkedIn company profile (optional):', help_text=HELP_URLS, max_length=255, required=False, validators=[ directory_validators.company.case_study_social_link_linkedin ], )
class CompaniesHouseBusinessDetailsForm(forms.Form): name = forms.CharField(label='Trading name') number = forms.CharField(disabled=True, ) date_of_creation = forms.DateField( label='Incorporated on', input_formats=['%d %B %Y'], disabled=True, required=False, ) address = forms.CharField( disabled=True, required=False, ) website = forms.URLField( label='Business URL (optional)', help_text='The website address must start with http:// or https://', required=False, ) employees = forms.ChoiceField( choices=EMPLOYEES_CHOICES, label='How many employees are in your business?', ) sectors = forms.ChoiceField( label='What industry is your business in?', choices=INDUSTRY_CHOICES, ) def clean_sectors(self): return [self.cleaned_data['sectors']] def clean(self): super().clean() self.cleaned_data.pop('clean_number', None) self.cleaned_data.pop('date_of_creation', None)
class CaseStudyBasicInfoForm(forms.Form): title = forms.CharField( label='Title of your case study or project', max_length=60, validators=[directory_validators.company.no_html], ) short_summary = forms.CharField( label='Summary of your case study or project', help_text=( 'Summarise your case study in 200 characters or fewer. This will' ' appear on your main business profile page.'), max_length=200, validators=[ validators.does_not_contain_email, directory_validators.company.no_html, ], widget=Textarea, ) description = forms.CharField( label='Describe your case study or project', help_text=('Describe your project or case study in greater detail. ' 'You have up to 1,000 characters to use.'), max_length=1000, validators=[ validators.does_not_contain_email, directory_validators.company.no_html, ], widget=Textarea, ) sector = forms.ChoiceField( label='Industry most relevant to your case study or project', choices=INDUSTRY_CHOICES) website = forms.URLField( label='The web address for your case study or project (optional)', help_text='Enter a full URL including http:// or https://', max_length=255, required=False, ) keywords = forms.CharField( label=('Enter up to 10 keywords that describe your case ' 'study or project. Keywords should be separated by ' 'commas.'), help_text=('These keywords will help potential overseas buyers ' 'find your case study.'), max_length=1000, widget=Textarea, validators=[ directory_validators.company.keywords_word_limit, directory_validators.company.keywords_special_characters, directory_validators.company.no_html, ])
class NonCompaniesHouseSearch(forms.Form): MESSAGE_INVALID_ADDRESS = 'Address should be at least two lines.' COMPANY_TYPES = [ ('', 'Please select'), ] + [(value, label) for value, label in choices.COMPANY_TYPES if value != 'COMPANIES_HOUSE'] company_type = forms.ChoiceField(label='Business category', choices=COMPANY_TYPES) company_name = forms.CharField(label='Business name') postal_code = forms.CharField( label='Business postcode', widget=PostcodeInput, required=False, ) address = forms.CharField( help_text='Type your business address', widget=Textarea(attrs={'rows': 4}), required=False, ) sectors = forms.ChoiceField( label='What industry is your business in?', choices=INDUSTRY_CHOICES, ) website = forms.URLField( label='What\'s your business web address (optional)', help_text='The website address must start with http:// or https://', required=False, ) def clean_sectors(self): return [self.cleaned_data['sectors']] def clean_address(self): value = self.cleaned_data['address'].strip().replace(', ', '\n') parts = value.split('\n') postal_code = self.cleaned_data.get('postal_code', '') if value.count('\n') == 0: raise ValidationError(self.MESSAGE_INVALID_ADDRESS) if postal_code not in value: value = f'{value}\n{postal_code}' self.cleaned_data['address_line_1'] = parts[0].strip() self.cleaned_data['address_line_2'] = parts[1].strip() return value
class TextBoxForm(PrefixIdMixin, forms.Form): text_field1 = forms.CharField(label='Q1: Simple text field', help_text='Some help text') url_field = forms.URLField(label='Q2: URL field', help_text='Some help text') email_field = forms.EmailField( label='Q3: Email field', help_text='Some email field help text', ) choice_field = forms.ChoiceField(label='Q4: select field', help_text='Some help text', choices=[ ('red', 'Red'), ('green', 'Green'), ('blue', 'Blue'), ]) text_field2 = forms.CharField( label='Q5: Custom css class on container', help_text='Some help text', container_css_classes='border-purple border-thin padding-30', )
class NonCompaniesHouseBusinessDetailsForm(forms.Form): name = forms.CharField(label='Trading name') address_line_1 = forms.CharField(required=False, ) address_line_2 = forms.CharField(required=False, ) locality = forms.CharField(required=False, ) postal_code = forms.CharField(required=False, ) website_address = forms.URLField( label='Business URL (optional)', help_text='The website address must start with http:// or https://', required=False, ) employees = forms.ChoiceField( choices=EMPLOYEES_CHOICES, label='How many employees are in your business?', ) sectors = forms.ChoiceField( label='Which industry is your business in?', choices=INDUSTRY_CHOICES, ) def clean_sectors(self): return [self.cleaned_data['sectors']]
class NonCompaniesHouseSearch(CleanAddressMixin, forms.Form): MESSAGE_INVALID_ADDRESS = 'Address should be at least two lines.' COMPANY_TYPES = [('', 'Please select'), ] + [ (value, label) for value, label in choices.COMPANY_TYPES if value != 'COMPANIES_HOUSE' ] company_type = forms.ChoiceField( label='Business category', choices=COMPANY_TYPES ) company_name = forms.CharField( label='Business name' ) postal_code = forms.CharField( label='Business postcode', widget=PostcodeInput(attrs={'id': 'id_postal_code'}), # template js relies on this ID required=False, ) address = forms.CharField( help_text='Type your business address', widget=Textarea(attrs={'rows': 6, 'id': 'id_address'}), # template js relies on this ID required=False, ) sectors = forms.ChoiceField( label='Which industry is your business in?', choices=INDUSTRY_CHOICES, ) website = forms.URLField( label='What\'s your business web address (optional)', help_text='The website address must start with http:// or https://', required=False, ) def clean_sectors(self): return [self.cleaned_data['sectors']]
class WebsiteForm(forms.Form): website = forms.URLField( label='Business URL', help_text='Enter a full URL including http:// or https://', max_length=255, )
class CompaniesHouseBusinessDetails(forms.Form): company_name = forms.CharField(label='Registered company name', ) company_number = forms.CharField( disabled=True, required=False, container_css_classes='border-active-blue read-only-input-container') sic = forms.CharField( label='Nature of business', disabled=True, required=False, container_css_classes='border-active-blue read-only-input-container') date_of_creation = forms.DateField( label='Incorporated on', input_formats=['%d %B %Y'], disabled=True, required=False, container_css_classes='border-active-blue read-only-input-container') postal_code = forms.CharField( disabled=True, required=False, container_css_classes='hidden-input-container', ) address = forms.CharField( disabled=True, required=False, container_css_classes='border-active-blue read-only-input-container', widget=Textarea(attrs={'rows': 3}), ) sectors = forms.ChoiceField( label='What industry is your company in?', choices=INDUSTRY_CHOICES, ) website = forms.URLField( label='What\'s your business web address (optional)', help_text='The website address must start with http:// or https://', required=False, ) def __init__(self, initial, company_data=None, is_enrolled=False, *args, **kwargs): super().__init__(initial=initial, *args, **kwargs) if company_data: self.set_form_initial(company_data) if is_enrolled: self.delete_already_enrolled_fields() # force the form to use the initial value rather than the value # the user submitted in previous sessions # on GET the data structure is a MultiValueDict. on POST the data # structure is a QueryDict if self.data and not isinstance(self.data, QueryDict): self.initial_to_data('company_name') if not self.data.get('postal_code'): self.initial_to_data('postal_code') def delete_already_enrolled_fields(self): del self.fields['sectors'] del self.fields['website'] def set_form_initial(self, company_profile): company = helpers.CompanyParser(company_profile) self.initial['company_name'] = company.name self.initial['company_number'] = company.number self.initial['sic'] = company.nature_of_business self.initial['date_of_creation'] = company.date_of_creation self.initial['address'] = company.address self.initial['postal_code'] = company.postcode def initial_to_data(self, field_name): self.data.setlist(self.add_prefix(field_name), [self.initial[field_name]]) def clean_date_of_creation(self): return self.cleaned_data['date_of_creation'].isoformat() def clean_address(self): address_parts = self.cleaned_data['address'].split(',') for i, address_part in enumerate(address_parts, start=1): field_name = f'address_line_{i}' self.cleaned_data[field_name] = address_part.strip() return self.cleaned_data['address'] def clean_sectors(self): return [self.cleaned_data['sectors']]