Browse Source

Simplify the PinForm.clean method

I have a gut feeling that we could refactor some code out of this method, but for now I'll just clean it up a bit.
tags/v1.0.0
Krzysztof Klimonda 11 years ago
parent
commit
4b2fc75286
1 changed files with 17 additions and 26 deletions
  1. +17
    -26
      pinry/pins/forms.py

+ 17
- 26
pinry/pins/forms.py View File

@@ -4,20 +4,12 @@ from .models import Pin


class PinForm(forms.ModelForm):
url = forms.CharField(label='url', required=False)
url = forms.CharField(required=False)
image = forms.ImageField(label='or Upload', required=False)

class Meta:
model = Pin
fields = ['url', 'description', 'tags']

def check_if_image(self, data):
# Test file type
image_file_types = ['png', 'gif', 'jpeg', 'jpg']
file_type = data.split('.')[-1]
if file_type.lower() not in image_file_types:
raise forms.ValidationError("Requested URL is not an image file. "
"Only images are currently supported.")
fields = ['url', 'image', 'description', 'tags']

def clean(self):
cleaned_data = super(PinForm, self).clean()
@@ -26,26 +18,25 @@ class PinForm(forms.ModelForm):
image = cleaned_data.get('image')

if url:
self.check_if_image(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
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.")
try:
Pin.objects.get(url=url)
raise forms.ValidationError("URL has already been pinned!")
except Pin.DoesNotExist:
protocol = url.split(':')[0]
if protocol == 'http':
opp_url = url.replace('http://', 'https://')
elif protocol == 'https':
opp_url = url.replace('https://', 'http://')
else:
raise forms.ValidationError("Currently only support HTTP and "
"HTTPS protocols, please be sure "
"you include this in the URL.")

try:
Pin.objects.get(url=opp_url)
raise forms.ValidationError("URL has already been pinned!")
except Pin.DoesNotExist:
pass
pass
elif image:
pass
else:


Loading…
Cancel
Save