From d473db926f3e17f74b41160b53ce6a1188117fec Mon Sep 17 00:00:00 2001 From: Jailson Dias Date: Thu, 9 Mar 2017 13:59:16 -0300 Subject: [PATCH] Resolvendo os bugs do tipo list index out of range em videos do youtube --- youtube_video/forms.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/youtube_video/forms.py b/youtube_video/forms.py index 9747126..a66941c 100644 --- a/youtube_video/forms.py +++ b/youtube_video/forms.py @@ -3,6 +3,10 @@ from django import forms from django.utils.translation import ugettext_lazy as _ from django.forms.models import inlineformset_factory + +import requests +import re + from subjects.models import Tag from pendencies.forms import PendenciesForm @@ -10,19 +14,20 @@ from pendencies.models import Pendencies from .models import YTVideo + class YTVideoForm(forms.ModelForm): subject = None control_subject = forms.CharField(widget = forms.HiddenInput()) - + def __init__(self, *args, **kwargs): super(YTVideoForm, 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.initial['control_subject'] = self.subject.id self.fields['students'].queryset = self.subject.students.all() @@ -44,7 +49,7 @@ class YTVideoForm(forms.ModelForm): def clean_name(self): name = self.cleaned_data.get('name', '') - + topics = self.subject.topic_subject.all() for topic in topics: @@ -52,7 +57,7 @@ class YTVideoForm(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'] = [_('This subject already has a youtube video with this name')] @@ -62,8 +67,7 @@ class YTVideoForm(forms.ModelForm): def clean_url(self): url = self.cleaned_data.get('url', '') - - if not 'youtube' in url: + if not 'youtube' in url or re.compile('[htps:/]*w*\.youtube\.com/?').fullmatch(url) or requests.get(url).status_code == 404: self._errors['url'] = [_('Invalid URL. It should be an YouTube link.')] return ValueError @@ -83,7 +87,7 @@ class YTVideoForm(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() @@ -99,4 +103,4 @@ class YTVideoForm(forms.ModelForm): return self.instance -InlinePendenciesFormset = inlineformset_factory(YTVideo, Pendencies, form = PendenciesForm, extra = 1, max_num = 3, validate_max = True, can_delete = True) \ No newline at end of file +InlinePendenciesFormset = inlineformset_factory(YTVideo, Pendencies, form = PendenciesForm, extra = 1, max_num = 3, validate_max = True, can_delete = True) -- libgit2 0.21.2