diff --git a/links/forms.py b/links/forms.py index 67913f2..ae8f7c0 100644 --- a/links/forms.py +++ b/links/forms.py @@ -4,6 +4,8 @@ from django.utils.translation import ugettext_lazy as _ from django.utils.html import strip_tags from django.core.exceptions import ValidationError +import validators + from subjects.models import Tag from subjects.forms import ParticipantsMultipleChoiceField @@ -15,22 +17,22 @@ class LinkForm(forms.ModelForm): MAX_UPLOAD_SIZE = 10*1024*1024 students = ParticipantsMultipleChoiceField(queryset = None, required = False) - + def __init__(self, *args, **kwargs): super(LinkForm, self).__init__(*args, **kwargs) self.subject = kwargs['initial'].get('subject', None) - + if self.instance.id: self.subject = self.instance.topic.subject self.initial['tags'] = ", ".join(self.instance.tags.all().values_list("name", flat = True)) - + self.fields['students'].queryset = self.subject.students.all() self.fields['groups'].queryset = self.subject.group_subject.all() tags = forms.CharField(label = _('Tags'), required = False) - link_url = forms.URLField(label = _('Website URL'),required=True) - + link_url = forms.CharField(label = _('Website URL'),required=True) + class Meta: model = Link fields = ['name','link_url', 'brief_description', 'all_students', 'students', 'groups', 'visible'] @@ -49,13 +51,13 @@ class LinkForm(forms.ModelForm): cleaned_data = self.cleaned_data - + return cleaned_data - + def clean_name(self): name = self.cleaned_data.get('name', '') - + topics = self.subject.topic_subject.all() for topic in topics: @@ -63,7 +65,7 @@ class LinkForm(forms.ModelForm): same_name = topic.resource_topic.filter(name__unaccent__iexact = name).exclude(id = self.instance.id).count() else: same_name = topic.resource_topic.filter(name__unaccent__iexact = name).count() - + if same_name > 0: self._errors['name'] = [_('There is already a link with this name on this subject')] @@ -72,7 +74,15 @@ class LinkForm(forms.ModelForm): return name - + + def clean_link_url(self): + link_url = self.cleaned_data.get('link_url','') + if link_url[0].lower() != "h": link_url = "https://" + link_url + if validators.url(link_url) != True: + self._errors['link_url'] = [_('Invalid URL. It should be an valid link.')] + return ValueError + + return link_url def save(self, commit = True): super(LinkForm, self).save(commit = True) @@ -87,7 +97,7 @@ class LinkForm(forms.ModelForm): for prev in previous_tags: if not prev.name in tags: self.instance.tags.remove(prev) - + for tag in tags: tag = tag.strip() @@ -101,4 +111,4 @@ class LinkForm(forms.ModelForm): if not new_tag in self.instance.tags.all(): self.instance.tags.add(new_tag) - return self.instance \ No newline at end of file + return self.instance diff --git a/links/models.py b/links/models.py index 659d5ea..08230cf 100644 --- a/links/models.py +++ b/links/models.py @@ -10,9 +10,9 @@ from django.core.urlresolvers import reverse_lazy # Create your models here. class Link(Resource): - link_url = models.URLField(verbose_name = _("Link_URL")) - - + link_url = models.CharField( _("Link_URL"),max_length=250 ) + + class Meta: verbose_name = "Link" verbose_name_plural = "Links" @@ -28,6 +28,6 @@ class Link(Resource): def delete_link(self): return 'links:delete' - + def delete_message(self): - return _('Are you sure you want delete the Website link') \ No newline at end of file + return _('Are you sure you want delete the Website link') -- libgit2 0.21.2