def test_unicode_in_and_out(self): # load the srt file fixtures_dir = os.path.join(settings.PROJECT_ROOT, 'apps/subtitles/fixtures') rst_data = open(os.path.join(fixtures_dir, 'unicode.srt'), 'r') # upload it form = SubtitlesUploadForm(self.user, self.video, True, data={ 'language_code': 'en', }, files={ 'draft': SimpleUploadedFile( rst_data.name, rst_data.read()) }) self.assertTrue(form.is_valid()) version = form.save() # get what's stored to make sure we didn't screw up unicode chars storage = version.get_subtitles() subs = [x for x in storage.subtitle_items()] expected_text = u"Ciò che voglio fare oggi" # it's there represented on the dfxp self.assertEqual(subs[0].text, expected_text) generated = unicode(SRTGenerator(storage)) # when outputting it, we're getting the same thing back self.assertIn(expected_text, generated)
def upload_subtitles(request): if not check_upload_subtitles_permissions(request): path = request.get_full_path() return redirect_to_login(path) output = {'success': False} video = Video.objects.get(id=request.POST['video']) form = SubtitlesUploadForm(request.user, video, True, request.POST, request.FILES, initial={ 'primary_audio_language_code': video.primary_audio_language_code }, allow_all_languages=True) try: if form.is_valid(): version = form.save() output['success'] = True output['next'] = version.subtitle_language.get_absolute_url() output['msg'] = ugettext( u'Thank you for uploading. ' u'It may take a minute or so for your subtitles to appear.') else: output['errors'] = form.get_errors() except AlreadyEditingException, e: output['errors'] = {'__all__': [force_unicode(e.msg)]}