from urlparse import urlparse from django import forms from django.core import validators from crispy_forms.helper import FormHelper from crispy_forms.layout import Layout from lmgtfy.helpers import CleanSubmitButton class MainForm(forms.Form): def __init__(self, *args, **kwargs): super(MainForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_class = 'form-inline' self.helper.field_template = 'bootstrap3/layout/inline_field.html' self.helper.form_show_labels = False self.helper.layout = Layout( 'domain', CleanSubmitButton('submit', 'Search Data') ) domain = forms.CharField(label='example.gov', required=True) def clean(self): cleaned_data = super(MainForm, self).clean() domain_string = cleaned_data.get('domain', '') if not (domain_string.startswith('http://') or domain_string.startswith('https://')): domain_string = 'http://%s' % domain_string validator = validators.URLValidator() try: validator(domain_string) except: raise forms.ValidationError('Please enter a valid URL.') cleaned_data['domain_base'] = urlparse(domain_string).netloc return cleaned_data