Example #1
0
def on_video_url_added(sender, video, **kwargs):
    video_url = sender
    account = get_sync_account(video, video_url)
    if credit.should_add_credit_to_video_url(video_url, account):
        tasks.add_amara_credit.delay(video_url.pk)
    if subfetch.should_fetch_subs(video_url):
        tasks.fetch_subs.delay(video_url.pk)
Example #2
0
def sync_history_context(video, subtitle_language):
    context = {}
    sync_history = SyncHistory.objects.get_sync_history_for_subtitle_language(
        subtitle_language)
    context['sync_history'] = sync_history
    context['can_resync'] = (
        len(sync_history) >
        0) and not sync_history[0]['account'].should_skip_syncing()
    context['current_version'] = subtitle_language.get_public_tip()
    synced_versions = []
    for video_url in video.get_video_urls():
        if not can_sync_videourl(video_url):
            continue
        try:
            version = (subtitle_language.syncedsubtitleversion_set.
                       select_related('version').get(
                           video_url=video_url)).version
        except ObjectDoesNotExist:
            version = None
        synced_versions.append({
            'video_url': video_url,
            'version': version,
            'syncable': get_sync_account(video, video_url),
        })
    context['synced_versions'] = synced_versions
    return context
Example #3
0
 def setup_tab_urls(self, request, video, video_url):
     self['create_videourl_form'] = CreateVideoUrlForm(request.user,
                                                       initial={
                                                           'video':
                                                           video.pk,
                                                       })
     self['video_urls'] = [(vurl, get_sync_account(video, vurl))
                           for vurl in video.videourl_set.all()]
Example #4
0
def on_videourl_save(signal, sender, instance, created, **kwargs):
    video_url = instance
    if created:
        account = get_sync_account(instance.video, instance)
        if credit.should_add_credit_to_video_url(video_url, account):
            tasks.add_amara_credit.delay(instance.id)
        if subfetch.should_fetch_subs(video_url):
            tasks.fetch_subs.delay(video_url.pk)
Example #5
0
def add_amara_credit(video_url_id):
    video_url = VideoUrl.objects.get(id=video_url_id)
    account = get_sync_account(video_url.video, video_url)
    if credit.should_add_credit_to_video_url(video_url, account):
        try:
            credit.add_credit_to_video_url(video_url, account)
        except google.OAuthError:
            logger.exception("Error adding youtube credit")
Example #6
0
def _resync_video(video, video_url, language):
    account = get_sync_account(video, video_url)
    if account is None:
        return
    tip = language.get_public_tip()
    if tip is not None:
        account.update_subtitles(video_url, language)
    else:
        account.delete_subtitles(video_url, language)
Example #7
0
def urls_tab_replacement_data(request, video):
    return ('#video_urls', 'future/videos/tabs/urls.html', {
            'video': video,
            'allow_delete': True,
            'allow_make_primary': True,
            'video_urls': [
                (vurl, get_sync_account(video, vurl))
                for vurl in video.get_video_urls()
            ],
            'create_url_form': NewCreateVideoUrlForm(video, request.user),
        })
Example #8
0
def on_video_url_added(sender, video, **kwargs):
    video_url = sender
    account = get_sync_account(video, video_url)
    if credit.should_add_credit_to_video_url(video_url, account):
        tasks.add_amara_credit.delay(video_url.pk)
    if subfetch.should_fetch_subs(video_url):
        team = kwargs.pop('team', None)
        if team is not None:
            team = team.pk
        user = kwargs.pop('user', None)
        if user is not None:
            user = user.pk
        try:
            tasks.fetch_subs.delay(video_url.pk, user, team)
        except Exception, e:
            logger.error("Exception")
            logger.error(e)
Example #9
0
 def setup_tab(self, request, video, language, version):
     self['sync_history'] = (language.synchistory_set
                             .select_related('version')
                             .fetch_with_accounts())
     self['current_version'] = language.get_public_tip()
     synced_versions = []
     for video_url in video.get_video_urls():
         if not can_sync_videourl(video_url):
             continue
         try:
             version = (language.syncedsubtitleversion_set.
                        select_related('version').
                        get(video_url=video_url)).version
         except ObjectDoesNotExist:
             version = None
         synced_versions.append({
             'video_url': video_url,
             'version': version,
             'syncable': get_sync_account(video, video_url),
         })
     self['synced_versions'] = synced_versions
Example #10
0
 def setup_tab(self, request, video, language, version):
     self['sync_history'] = (language.synchistory_set.select_related(
         'version').fetch_with_accounts())
     self['current_version'] = language.get_public_tip()
     synced_versions = []
     for video_url in video.get_video_urls():
         if not can_sync_videourl(video_url):
             continue
         version = None
         sync_account = get_sync_account(video, video_url)
         synced_version_qs = (
             language.syncedsubtitleversion_set.select_related('version'))
         for ssv in synced_version_qs:
             if ssv.is_for_account(sync_account):
                 version = ssv.version
                 break
         synced_versions.append({
             'video_url': video_url,
             'version': version,
             'syncable': sync_account is not None,
         })
     self['synced_versions'] = synced_versions
Example #11
0
def video(request, video_id, video_url=None, title=None):
    if should_use_old_view(request):
        return oldviews.video(request, video_id, video_url, title)
    if request.is_ajax() and 'form' in request.POST:
        return video_ajax_form(request, video_id)
    request.use_cached_user()
    try:
        video = Video.cache.get_instance_by_video_id(video_id, 'video-page')
    except Video.DoesNotExist:
        raise Http404
    if not video.can_user_see(request.user):
        raise PermissionDenied()

    if video_url:
        video_url = get_object_or_404(video.videourl_set, pk=video_url)
    else:
        video_url = video.get_primary_videourl_obj()

    workflow = video.get_workflow()
    if workflow.user_can_create_new_subtitles(request.user):
        form_name = request.GET.get('form', '')
        if form_name == 'create-subtitles':
            return create_subtitles(request, video_id)
        else:
            # this is the old code for creating the CreateSubtitlesForm
            create_subtitles_form = CreateSubtitlesForm(request,video)
    else:
        create_subtitles_form = None
    if request.user.is_authenticated():
        comment_form = CommentForm(video)
    else:
        comment_form = None
    if permissions.can_user_edit_video_urls(video, request.user):
        create_url_form = NewCreateVideoUrlForm(video, request.user)
        allow_delete = allow_make_primary = True
    else:
        create_url_form = None
        allow_delete = allow_make_primary = False

    customization = behaviors.video_page_customize(request, video)
    all_activities = ActivityRecord.objects.for_video(
        video, customization.team)

    if request.is_ajax() and request.GET.get('show-all', None):
        response_renderer = AJAXResponseRenderer(request)
        response_renderer.replace(
            '#video_activity', "future/videos/tabs/activity.html", {
                'activity': all_activities,
            },
        )
        return response_renderer.render()

    activity = all_activities[:ACTIVITY_PER_PAGE]
    show_all = False if len(activity) >= len(all_activities) else True

    sanity_check_video_urls(request, video)

    return render(request, 'future/videos/video.html', {
        'video': video,
        'player_url': video_url.url,
        'team': video.get_team(),
        'team_video': video.get_team_video(),
        'tab': request.GET.get('tab', 'info'),
        'allow_delete': allow_delete,
        'allow_make_primary': allow_make_primary,
        'create_subtitles_form': create_subtitles_form,
        'comment_form': comment_form,
        'create_url_form': create_url_form,
        'comments': Comment.get_for_object(video),
        'activity': activity,
        'activity_count': 1,
        'show_all': show_all,
        'metadata': video.get_metadata().convert_for_display(),
        'custom_sidebar': customization.sidebar,
        'header': customization.header,
        'use_old_messages': True,
        'video_urls': [
            (vurl, get_sync_account(video, vurl))
            for vurl in video.get_video_urls()
        ],
    })
Example #12
0
 def test_get_sync_account(self):
     # the normal case is that we refetch the channel ID in
     # get_sync_account()
     account = get_sync_account(self.video, self.video_url)
     self.assertEquals(account, self.account)
     self.check_username_fixed()
Example #13
0
def add_amara_credit(video_url_id):
    video_url = VideoUrl.objects.get(id=video_url_id)
    account = get_sync_account(video_url.video, video_url)
    if credit.should_add_credit_to_video_url(video_url, account):
        credit.add_credit_to_video_url(video_url, account)