def save_subtitles(self, parser): video = self.cleaned_data['video'] key = str(uuid4()).replace('-', '') video._make_writelock(self.user, key) video.save() if not video.has_original_language(): self._save_original_language( video, self.cleaned_data['video_language']) language = video.subtitle_language(self.cleaned_data['language']) if not language: language = SubtitleLanguage(video=video, is_original=False, is_forked=True) language.language = self.cleaned_data['language'] language.save() try: old_version = language.subtitleversion_set.all()[:1].get() version_no = old_version.version_no + 1 except ObjectDoesNotExist: old_version = None version_no = 0 if not self.is_version_same(old_version, parser): version = SubtitleVersion( language=language, version_no=version_no, datetime_started=datetime.now(), user=self.user, note=u'Uploaded', is_forked=True, time_change=1, text_change=1) version.save() ids = [] for i, item in enumerate(parser): id = int(random.random()*10e12) while id in ids: id = int(random.random()*10e12) ids.append(id) caption = Subtitle(**item) caption.version = version caption.subtitle_id = str(id) caption.subtitle_order = i+1 caption.save() version.save() version.update_percent_done() language.update_complete_state() language.save() if language.is_original: video.update_complete_state() video.release_writelock() video.save() return language
def save_subtitles(self, parser): video = self.cleaned_data['video'] key = str(uuid4()).replace('-', '') video._make_writelock(self.user, key) video.save() if not video.has_original_language(): self._save_original_language(video, self.cleaned_data['video_language']) language = self._find_appropriate_language( video, self.cleaned_data['language']) try: old_version = language.subtitleversion_set.all()[:1].get() version_no = old_version.version_no + 1 except ObjectDoesNotExist: old_version = None version_no = 0 if not self.is_version_same(old_version, parser): version = SubtitleVersion(language=language, version_no=version_no, datetime_started=datetime.now(), user=self.user, note=u'Uploaded', is_forked=True, time_change=1, text_change=1) version.save() ids = [] for i, item in enumerate(parser): id = int(random.random() * 10e12) while id in ids: id = int(random.random() * 10e12) ids.append(id) caption = Subtitle(**item) caption.version = version caption.subtitle_id = str(id) caption.subtitle_order = i + 1 caption.save() version.save() version.update_percent_done() language.update_complete_state() language.save() if language.is_original: video.update_complete_state() video.release_writelock() video.save() return language
def test_notification_sending(self): from videos.tasks import send_notification, check_alarm, detect_language latest_version = self.language.latest_version() v = SubtitleVersion() v.language = self.language v.datetime_started = datetime.now() v.version_no = latest_version.version_no+1 v.save() for s in latest_version.subtitle_set.all(): s.duplicate_for(v).save() s = Subtitle() s.version = v s.subtitle_id = 'asdasdsadasdasdasd' s.subtitle_order = 5 s.subtitle_text = 'new subtitle' s.start_time = 50 s.end_time = 51 s.save() v.update_percent_done() self.assertEqual(len(mail.outbox), 1) result = send_notification.delay(v.id) if result.failed(): self.fail(result.traceback) result = check_alarm.delay(v.id) if result.failed(): self.fail(result.traceback) result = detect_language.delay(v.id) if result.failed(): self.fail(result.traceback)