Browse Source

Move ValidationError messages to a dictionary that can be accessed from PinForm.clean

tags/v1.0.0
Krzysztof Klimonda 11 years ago
parent
commit
4ad6f599cd
1 changed files with 11 additions and 12 deletions
  1. +11
    -12
      pinry/pins/forms.py

+ 11
- 12
pinry/pins/forms.py View File

@@ -7,6 +7,13 @@ class PinForm(forms.ModelForm):
url = forms.CharField(required=False)
image = forms.ImageField(label='or Upload', required=False)

_errors = {
'not_image': 'Requested URL is not an image file. Only images are currently supported.',
'pinned': 'URL has already been pinned!',
'protocol': 'Currently only support HTTP and HTTPS protocols, please be sure you include this in the URL.',
'nothing': 'Need either a URL or Upload',
}

class Meta:
model = Pin
fields = ['url', 'image', 'description', 'tags']
@@ -20,26 +27,18 @@ class PinForm(forms.ModelForm):
if url:
image_file_types = ['png', 'gif', 'jpeg', 'jpg']
if not url.split('.')[-1].lower() in image_file_types:
raise forms.ValidationError("Requested URL is not an image file. "
"Only images are currently supported.")
try:
Pin.objects.get(url=url)
raise forms.ValidationError("URL has already been pinned!")
except Pin.DoesNotExist:
pass
raise forms.ValidationError(self._errors['not_image'])
protocol = url.split(':')[0]
if protocol not in ['http', 'https']:
raise forms.ValidationError("Currently only support HTTP and "
"HTTPS protocols, please be sure "
"you include this in the URL.")
raise forms.ValidationError(self._errors['protocol'])
try:
Pin.objects.get(url=url)
raise forms.ValidationError("URL has already been pinned!")
raise forms.ValidationError(self._errors['pinned'])
except Pin.DoesNotExist:
pass
elif image:
pass
else:
raise forms.ValidationError("Need either a URL or Upload.")
raise forms.ValidationError(self._errors['nothing'])

return cleaned_data

Loading…
Cancel
Save