Commit 20f4243581c259005c56af818e5a0147812801eb
1 parent
fcc17379
Exists in
master
and in
2 other branches
bug fix for site link creation
Showing
2 changed files
with
27 additions
and
17 deletions
Show diff stats
links/forms.py
... | ... | @@ -4,6 +4,8 @@ from django.utils.translation import ugettext_lazy as _ |
4 | 4 | from django.utils.html import strip_tags |
5 | 5 | from django.core.exceptions import ValidationError |
6 | 6 | |
7 | +import validators | |
8 | + | |
7 | 9 | from subjects.models import Tag |
8 | 10 | from subjects.forms import ParticipantsMultipleChoiceField |
9 | 11 | |
... | ... | @@ -15,22 +17,22 @@ class LinkForm(forms.ModelForm): |
15 | 17 | MAX_UPLOAD_SIZE = 10*1024*1024 |
16 | 18 | |
17 | 19 | students = ParticipantsMultipleChoiceField(queryset = None, required = False) |
18 | - | |
20 | + | |
19 | 21 | def __init__(self, *args, **kwargs): |
20 | 22 | super(LinkForm, self).__init__(*args, **kwargs) |
21 | 23 | |
22 | 24 | self.subject = kwargs['initial'].get('subject', None) |
23 | - | |
25 | + | |
24 | 26 | if self.instance.id: |
25 | 27 | self.subject = self.instance.topic.subject |
26 | 28 | self.initial['tags'] = ", ".join(self.instance.tags.all().values_list("name", flat = True)) |
27 | - | |
29 | + | |
28 | 30 | self.fields['students'].queryset = self.subject.students.all() |
29 | 31 | self.fields['groups'].queryset = self.subject.group_subject.all() |
30 | 32 | |
31 | 33 | tags = forms.CharField(label = _('Tags'), required = False) |
32 | - link_url = forms.URLField(label = _('Website URL'),required=True) | |
33 | - | |
34 | + link_url = forms.CharField(label = _('Website URL'),required=True) | |
35 | + | |
34 | 36 | class Meta: |
35 | 37 | model = Link |
36 | 38 | fields = ['name','link_url', 'brief_description', 'all_students', 'students', 'groups', 'visible'] |
... | ... | @@ -49,13 +51,13 @@ class LinkForm(forms.ModelForm): |
49 | 51 | |
50 | 52 | cleaned_data = self.cleaned_data |
51 | 53 | |
52 | - | |
54 | + | |
53 | 55 | return cleaned_data |
54 | - | |
56 | + | |
55 | 57 | |
56 | 58 | def clean_name(self): |
57 | 59 | name = self.cleaned_data.get('name', '') |
58 | - | |
60 | + | |
59 | 61 | topics = self.subject.topic_subject.all() |
60 | 62 | |
61 | 63 | for topic in topics: |
... | ... | @@ -63,7 +65,7 @@ class LinkForm(forms.ModelForm): |
63 | 65 | same_name = topic.resource_topic.filter(name__unaccent__iexact = name).exclude(id = self.instance.id).count() |
64 | 66 | else: |
65 | 67 | same_name = topic.resource_topic.filter(name__unaccent__iexact = name).count() |
66 | - | |
68 | + | |
67 | 69 | if same_name > 0: |
68 | 70 | self._errors['name'] = [_('There is already a link with this name on this subject')] |
69 | 71 | |
... | ... | @@ -72,7 +74,15 @@ class LinkForm(forms.ModelForm): |
72 | 74 | return name |
73 | 75 | |
74 | 76 | |
75 | - | |
77 | + | |
78 | + def clean_link_url(self): | |
79 | + link_url = self.cleaned_data.get('link_url','') | |
80 | + if link_url[0].lower() != "h": link_url = "https://" + link_url | |
81 | + if validators.url(link_url) != True: | |
82 | + self._errors['link_url'] = [_('Invalid URL. It should be an valid link.')] | |
83 | + return ValueError | |
84 | + | |
85 | + return link_url | |
76 | 86 | |
77 | 87 | def save(self, commit = True): |
78 | 88 | super(LinkForm, self).save(commit = True) |
... | ... | @@ -87,7 +97,7 @@ class LinkForm(forms.ModelForm): |
87 | 97 | for prev in previous_tags: |
88 | 98 | if not prev.name in tags: |
89 | 99 | self.instance.tags.remove(prev) |
90 | - | |
100 | + | |
91 | 101 | for tag in tags: |
92 | 102 | tag = tag.strip() |
93 | 103 | |
... | ... | @@ -101,4 +111,4 @@ class LinkForm(forms.ModelForm): |
101 | 111 | if not new_tag in self.instance.tags.all(): |
102 | 112 | self.instance.tags.add(new_tag) |
103 | 113 | |
104 | - return self.instance | |
105 | 114 | \ No newline at end of file |
115 | + return self.instance | ... | ... |
links/models.py
... | ... | @@ -10,9 +10,9 @@ from django.core.urlresolvers import reverse_lazy |
10 | 10 | |
11 | 11 | # Create your models here. |
12 | 12 | class Link(Resource): |
13 | - link_url = models.URLField(verbose_name = _("Link_URL")) | |
14 | - | |
15 | - | |
13 | + link_url = models.CharField( _("Link_URL"),max_length=250 ) | |
14 | + | |
15 | + | |
16 | 16 | class Meta: |
17 | 17 | verbose_name = "Link" |
18 | 18 | verbose_name_plural = "Links" |
... | ... | @@ -28,6 +28,6 @@ class Link(Resource): |
28 | 28 | |
29 | 29 | def delete_link(self): |
30 | 30 | return 'links:delete' |
31 | - | |
31 | + | |
32 | 32 | def delete_message(self): |
33 | - return _('Are you sure you want delete the Website link') | |
34 | 33 | \ No newline at end of file |
34 | + return _('Are you sure you want delete the Website link') | ... | ... |