diff options
Diffstat (limited to 'examples/pygments_api/forms.py')
| -rw-r--r-- | examples/pygments_api/forms.py | 52 |
1 files changed, 3 insertions, 49 deletions
diff --git a/examples/pygments_api/forms.py b/examples/pygments_api/forms.py index 66446c5b..dc9927e2 100644 --- a/examples/pygments_api/forms.py +++ b/examples/pygments_api/forms.py @@ -15,57 +15,11 @@ class PygmentsForm(forms.Form): The code to be highlighted can be specified either in a text field, or by URL. We do some additional form validation to ensure clients see helpful error responses.""" - code_url = forms.URLField(required=False, label='Code URL', - help_text='eg. https://bitbucket.org/tomchristie/flywheel/raw/cc266285d879/flywheel/resource.py') - code_text = forms.CharField(widget=forms.Textarea, required=False, label='Code Text', - help_text='Either supply a URL for the code to be highlighted or copy and paste the code text here.') - title = forms.CharField(required=False, help_text='(Optional)') + code = forms.CharField(widget=forms.Textarea, label='Code Text', max_length=1000000, + help_text='(Copy and paste the code text here.)') + title = forms.CharField(required=False, help_text='(Optional)', max_length=100) linenos = forms.BooleanField(label='Show Line Numbers', required=False) lexer = forms.ChoiceField(choices=LEXER_CHOICES, initial='python') style = forms.ChoiceField(choices=STYLE_CHOICES, initial='friendly') - - def clean_code_url(self): - """Custom field validation. - Ensure that code URLs really are valid, and return the content they point to in the cleaned_data, - rather than returning the URL itself.""" - cleaned_data = self.cleaned_data - url = cleaned_data.get('code_url') - if not url: - return '' - - try: - http = httplib.Http('.cache') - resp, content = http.request(url) - except: - raise forms.ValidationError('The URL supplied cannot be reached') - - if int(resp.status/100) != 2: - raise forms.ValidationError('The URL supplied does not return successfully') - if not content: - raise forms.ValidationError('The URL supplied returns no content') - - return content - - - def clean(self): - """Custom form validation. - Ensure that only one of code_url and code_text is set, and return the content of whichever is set in 'code'.""" - cleaned_data = self.cleaned_data - code_url = cleaned_data.get('code_url') - code_text = cleaned_data.get('code_text') - - if not code_url and not code_text: - raise forms.ValidationError('Either the URL or the code text must be supplied') - if code_url and code_text: - raise forms.ValidationError('You may not specify both the URL and the code text') - - if code_url: - cleaned_data['code'] = code_url - del cleaned_data['code_url'] - else: - cleaned_data['code'] = code_text - del cleaned_data['code_text'] - - return cleaned_data |
