def setUp(self): self.video = make_video() self.u1 = UserFactory() self.u2 = UserFactory() self.anon = User.get_anonymous() v = self.video self.en1 = pipeline.add_subtitles(v, 'en', title="title 1", description="desc 1", subtitles=[(100, 200, "sub 1")], author=self.u1) self.en2 = pipeline.add_subtitles(v, 'en', title="title 2", description="desc 2", subtitles=[(100, 200, "sub 2")], author=self.u2) self.en3 = pipeline.add_subtitles(v, 'en', title="title 3", description="desc 3", subtitles=[(100, 200, "sub 3")], author=self.u1)
def test_author(self): def _get_tip_author(): sl = SubtitleLanguage.objects.get(video=self.video, language_code='en') return sl.get_tip(full=True).author def _add(*args, **kwargs): pipeline.add_subtitles(self.video, 'en', None, *args, **kwargs) # Not passing at all. _add() self.assertEqual(_get_tip_author(), self.anon) # Passing nil. _add(author=None) self.assertEqual(_get_tip_author(), self.anon) # Passing anonymous. _add(author=User.get_anonymous()) self.assertEqual(_get_tip_author(), self.anon) # Passing u1. _add(author=self.u1) self.assertEqual(_get_tip_author().id, self.u1.id) # Passing u2. _add(author=self.u2) self.assertEqual(_get_tip_author().id, self.u2.id) # Passing nonsense self.assertRaises(ValueError, lambda: _add(author='dogs')) self.assertRaises(ValueError, lambda: _add(author=-1234)) self.assertRaises(ValueError, lambda: _add(author=[self.u1]))
def user_videos_activity(context, user=None): user = user or context['user'] if user.is_authenticated(): context['users_actions'] = Action.objects.select_related('video', 'language', 'language__video', 'user') \ .filter(video__customuser=user) \ .exclude(user=user) \ .exclude(user=User.get_anonymous())[:ACTIONS_ON_PAGE] else: context['users_actions'] = Action.objects.none() return context
def user_videos_activity(context, user=None): user = user or context['user'] if user.is_authenticated(): context['users_actions'] = Action.objects.select_related('video', 'language', 'language__video', 'user') \ .filter(video__customuser=user) \ .exclude(user=user) \ .exclude(user=User.get_anonymous())[:ACTIONS_ON_PAGE] else: context['users_actions'] = Action.objects.none() return context
def _import_srt(self, video, videosrt_url): h = httplib2.Http() resp, content = h.request(videosrt_url, "GET") if resp.status == 200: data = {'video': video.id, 'language': 'en', 'video_language': 'en', 'is_complete': True } file_data = {'subtitles': SimpleUploadedFile('subs.srt', content)} form = SubtitlesUploadForm( CustomUser.get_anonymous(), data, file_data) if form.is_valid(): form.save() else: print('url {0} did not return valid srt data'.format(videosrt_url))
def _import_srt(self, video, videosrt_url): h = httplib2.Http() resp, content = h.request(videosrt_url, "GET") if resp.status == 200: data = { 'video': video.id, 'language': 'en', 'video_language': 'en', 'is_complete': True } file_data = {'subtitles': SimpleUploadedFile('subs.srt', content)} form = SubtitlesUploadForm(CustomUser.get_anonymous(), data, file_data) if form.is_valid(): form.save() else: print('url {0} did not return valid srt data'.format( videosrt_url))
def save_subtitles_for_lang(lang, video_pk, youtube_id): from videos.models import Video lc = lang.get('lang_code') if not lc in SUPPORTED_LANGUAGES_DICT: return try: video = Video.objects.get(pk=video_pk) except Video.DoesNotExist: return from videos.models import SubtitleLanguage, SubtitleVersion, Subtitle url = u'http://www.youtube.com/api/timedtext?v=%s&lang=%s&name=%s' url = url % (youtube_id, lc, urlquote(lang.get('name', u''))) xml = YoutubeVideoType._get_response_from_youtube(url) if xml is None: return parser = YoutubeXMLParser(xml) if not parser: return language, create = SubtitleLanguage.objects.get_or_create(video=video, language=lc) language.is_original = False language.is_forked = True language.save() try: version_no = language.subtitleversion_set.order_by('-version_no')[:1] \ .get().version_no + 1 except SubtitleVersion.DoesNotExist: version_no = 0 version = SubtitleVersion(language=language) version.version_no = version_no version.datetime_started = datetime.now() version.user = User.get_anonymous() version.note = u'From youtube' version.is_forked = True version.save() for i, item in enumerate(parser): subtitle = Subtitle() subtitle.subtitle_text = item['subtitle_text'] subtitle.start_time = item['start_time'] subtitle.end_time = item['end_time'] subtitle.version = version subtitle.subtitle_id = int(random.random()*10e12) subtitle.subtitle_order = i+1 subtitle.save() assert subtitle.start_time or subtitle.end_time, item['subtitle_text'] version.finished = True version.save() language.has_version = True language.had_version = True language.is_complete = True language.save() from videos.tasks import video_changed_tasks video_changed_tasks.delay(video.pk)
def save_subtitles_for_lang(lang, video_pk, youtube_id): from videos.models import Video yt_lc = lang.get('lang_code') lc = LanguageCode(yt_lc, "youtube").encode("unisubs") if not lc in SUPPORTED_LANGUAGE_CODES: logger.warn( "Youtube import did not find language code", extra={"data": { "language_code": lc, "youtube_id": youtube_id, }}) return try: video = Video.objects.get(pk=video_pk) except Video.DoesNotExist: return from videos.models import SubtitleLanguage, SubtitleVersion, Subtitle url = u'http://www.youtube.com/api/timedtext?v=%s&lang=%s&name=%s' url = url % (youtube_id, yt_lc, urlquote(lang.get('name', u''))) xml = YoutubeVideoType._get_response_from_youtube(url) if xml is None: return parser = YoutubeXMLParser(xml) if not parser: return language, create = SubtitleLanguage.objects.get_or_create( video=video, language=lc, defaults={ 'created': datetime.now(), }) language.is_original = False language.is_forked = True language.save() try: version_no = language.subtitleversion_set.order_by('-version_no')[:1] \ .get().version_no + 1 except SubtitleVersion.DoesNotExist: version_no = 0 version = SubtitleVersion(language=language) version.title = video.title version.description = video.description version.version_no = version_no version.datetime_started = datetime.now() version.user = User.get_anonymous() version.note = u'From youtube' version.is_forked = True version.save() for i, item in enumerate(parser): subtitle = Subtitle() subtitle.subtitle_text = item['subtitle_text'] subtitle.start_time = item['start_time'] subtitle.end_time = item['end_time'] subtitle.version = version subtitle.subtitle_id = int(random.random() * 10e12) subtitle.subtitle_order = i + 1 subtitle.save() assert subtitle.start_time or subtitle.end_time, item['subtitle_text'] version.finished = True version.save() language.has_version = True language.had_version = True language.is_complete = True language.save() from videos.tasks import video_changed_tasks video_changed_tasks.delay(video.pk)
def setUp(self): self.video = make_video() self.u1 = UserFactory() self.u2 = UserFactory() self.anon = User.get_anonymous()