コード例 #1
0
ファイル: forms.py プロジェクト: rhemmanur/mirosubs
    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
コード例 #2
0
    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
コード例 #3
0
ファイル: tests.py プロジェクト: axitkhurana/mirosubs
    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)