Commit 3acf26d5d3d60a5c2ed212a3578fbf3dd14d4fa7
1 parent
18ecd386
Exists in
master
and in
5 other branches
URL validation updated and finished [Issue:#120]
Showing
1 changed file
with
10 additions
and
4 deletions
Show diff stats
links/forms.py
| 1 | from django import forms | 1 | from django import forms |
| 2 | from .models import Link | 2 | from .models import Link |
| 3 | -import validators | 3 | +from django.utils.translation import ugettext_lazy as _ |
| 4 | +from django.core.exceptions import ValidationError, FieldError | ||
| 5 | +import requests | ||
| 4 | 6 | ||
| 5 | class CreateLinkForm(forms.ModelForm): | 7 | class CreateLinkForm(forms.ModelForm): |
| 6 | 8 | ||
| 7 | - def clean_link(self): | 9 | + def clean_link_url(self): |
| 8 | link_url = self.cleaned_data['link_url'] | 10 | link_url = self.cleaned_data['link_url'] |
| 9 | - if not validators.url(link_url): | ||
| 10 | - raise forms.ValidationError(_('Please enter a valid URL')) | 11 | + try: |
| 12 | + response = requests.head(link_url) | ||
| 13 | + if response.status_code >= 400: | ||
| 14 | + raise forms.ValidationError(_('Invalid url!')) | ||
| 15 | + except requests.ConnectionError: | ||
| 16 | + raise forms.ValidationError(_('Invalid url!')) | ||
| 11 | return link_url | 17 | return link_url |
| 12 | 18 | ||
| 13 | class Meta: | 19 | class Meta: |