Beispiel #1
0
    def _get_volunteer_sqs(self, request, user):
        '''
        Return the search query set for videos which would be relevant to
        volunteer for writing subtitles.
        '''

        user_langs = get_user_languages_from_request(request)
        rest_langs = dict(settings.ALL_LANGUAGES).keys()
        for lang in user_langs:
            rest_langs.remove(lang)

        relevant = SearchQuerySet().result_class(VideoSearchResult) \
            .models(Video).filter(video_language_exact__in=user_langs) \
            .filter_or(languages_exact__in=user_langs) \
            .order_by('-requests_count')


        # Rest of the videos, which most probably would not be much useful
        # for the volunteer
        rest = SearchQuerySet().result_class(VideoSearchResult) \
            .exclude(languages_exact__in=user_langs) \
            .exclude(video_language_exact__in=user_langs) \
            .order_by('-requests_count')

        return relevant, rest
Beispiel #2
0
def volunteer_page(request):
    # Get the user comfort languages list 
    user_langs = get_user_languages_from_request(request)

    relevant = SearchQuerySet().result_class(VideoSearchResult) \
        .models(Video).filter(video_language_exact__in=user_langs) \
        .filter_or(languages_exact__in=user_langs) \
        .order_by('-requests_count')

    featured_videos =  relevant.filter(
        featured__gt=datetime.datetime(datetime.MINYEAR, 1, 1)) \
        .order_by('-featured')[:5]

    popular_videos = relevant.order_by('-week_views')[:5]

    latest_videos = relevant.order_by('-edited')[:15]

    requested_videos = relevant.filter(requests_exact__in=user_langs)[:5]

    context = {
        'featured_videos': featured_videos,
        'popular_videos': popular_videos,
        'latest_videos': latest_videos,
        'requested_videos': requested_videos,
        'user_langs':user_langs,
    }

    return render_to_response('videos/volunteer.html', context,
                              context_instance=RequestContext(request))
Beispiel #3
0
def index(request):
    accept = request.META.get('HTTP_ACCEPT_LANGUAGE', '')
    user_langs = get_user_languages_from_request(request)
    
    if 'q' in request.REQUEST:
        form = SearchForm(request.user, user_langs, request.REQUEST)
    else:
        form = SearchForm(request.user, user_langs)
    
    qs = SearchQuerySet().none()
    
    display_mode = 'all'
    
    if form.is_valid():
        qs = form.search_qs(SearchQuerySet().models(Video))
        display_mode = form.cleaned_data.get('display', 'all')
        
    if settings.HAYSTACK_SEARCH_ENGINE == 'dummy' and settings.DEBUG:
        q = request.REQUEST.get('q', '')
        qs = Video.objects.filter(title__icontains=q)
    
    context = {
        'query': request.REQUEST.get('q', ''),
        'form': form,
        'display_mode': display_mode
    }
        
    return object_list(request, queryset=qs,
                       paginate_by=30,
                       template_name='search/index.html',
                       template_object_name='result',
                       extra_context=context)   
Beispiel #4
0
def detail(request, slug):
    team = Team.get(slug, request.user)
    
    languages = get_user_languages_from_request(request)
    languages.append('')
    video_ids = team.teamvideo_set.values_list('video_id', flat=True)
    
    qs = SubtitleLanguage.objects.filter(video__in=video_ids).filter(language__in=languages) \
        .exclude(Q(writelock_time__gte=datetime.datetime.now()-datetime.timedelta(seconds=WRITELOCK_EXPIRATION))) \
        .extra(where=['NOT ((SELECT COUNT(vs.id) FROM videos_subtitleversion AS vs INNER JOIN videos_subtitlelanguage AS vsl ON (vsl.id = vs.language_id) WHERE vsl.is_original = %s AND vsl.video_id = videos_subtitlelanguage.video_id) <= 0 AND videos_subtitlelanguage.is_original=%s)'], params=(True, False,)) \
        .distinct()

    qs1 = qs.filter(is_forked=False, is_original=False).filter(percent_done__lt=100, percent_done__gt=0)
    qs2 = qs.filter(is_forked=False, is_original=False).filter(percent_done=0)
    qs3 = qs.filter(is_original=True).filter(subtitleversion__isnull=True)
    qs4 = qs.filter(is_forked=False, is_original=False).filter(percent_done=100)
    qs5 = qs.filter(Q(is_forked=True)|Q(is_original=True)).filter(subtitleversion__isnull=False)
       
    extra_context = widget.add_onsite_js_files({})    
    extra_context.update({
        'team': team
    })

    if team.video:
        extra_context['widget_params'] = base_widget_params(request, {
            'video_url': team.video.get_video_url(), 
            'base_state': {}
        })
    return object_list(request, queryset=MultyQuerySet(qs1, qs2, qs3, qs4, qs5), 
                       paginate_by=VIDEOS_ON_PAGE, 
                       template_name='teams/detail.html', 
                       extra_context=extra_context, 
                       template_object_name='team_video_lang')
Beispiel #5
0
    def fetch_start_dialog_contents(self, request, video_id):
        my_languages = get_user_languages_from_request(request)
        my_languages.extend([l[:l.find('-')] for l in my_languages if l.find('-') > -1])
        video_languages = NullRpc.STUB_VIDEO_LANG
        original_language = "en"

        video_languages =  []

        return {
            'my_languages': my_languages,
            'video_languages': video_languages,
            'original_language': original_language }
Beispiel #6
0
 def fetch_start_dialog_contents(self, request, video_id):
     my_languages = get_user_languages_from_request(request)
     my_languages.extend([l[:l.find('-')] for l in my_languages if l.find('-') > -1])
     video = models.Video.objects.get(video_id=video_id)
     video_languages = [self._language_summary(l) for l 
                        in video.subtitlelanguage_set.all()]
     original_language = None
     if video.subtitle_language():
         original_language = video.subtitle_language().language
     return {
         'my_languages': my_languages,
         'video_languages': video_languages,
         'original_language': original_language }
Beispiel #7
0
    def load_requested_page_volunteer(self, page, request, user):
        user_langs = get_user_languages_from_request(request)

        rel, rest = self._get_volunteer_sqs(request, user)

        rel = rel.filter(requests_exact__in=user_langs)
        rest = rest.filter(requests_exact__in=user_langs)

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        return render_page(page, mqs, request=request)
Beispiel #8
0
    def fetch_start_dialog_contents(self, request, video_id):
        my_languages = get_user_languages_from_request(request)
        my_languages.extend(
            [l[:l.find('-')] for l in my_languages if l.find('-') > -1])
        video_languages = NullRpc.STUB_VIDEO_LANG
        original_language = "en"

        video_languages = []

        return {
            'my_languages': my_languages,
            'video_languages': video_languages,
            'original_language': original_language
        }
Beispiel #9
0
def select_language_dialog(context, option=None):
    user_langs = get_user_languages_from_request(context['request'])

    initial_data = {}

    for i, l in enumerate(user_langs):
        initial_data['language%s' % (i + 1)] = l

    form = SelectLanguageForm(initial=initial_data)

    return {
        'form': form,
        'force_ask': (option == 'force') and _user_needs_languages(context)
    }
Beispiel #10
0
    def load_requested_page_volunteer(self, page, request, user):
        user_langs = get_user_languages_from_request(request)

        rel, rest = self._get_volunteer_sqs(request, user)

        rel = rel.filter(requests_exact__in=user_langs)
        rest = rest.filter(requests_exact__in=user_langs)

        count = rel.count() + rest.count()

        mqs = MultiQuerySet(rel, rest)
        mqs.set_count(count)

        return render_page(page, mqs, request=request)
Beispiel #11
0
def select_language_dialog(context, option=None):
    user_langs = get_user_languages_from_request(context['request'])

    initial_data = {}
    
    for i, l in enumerate(user_langs):
        initial_data['language%s' % (i+1)] = l
        
    form = SelectLanguageForm(initial=initial_data)

    return {
        'form': form,
        'force_ask': (option == 'force') and _user_needs_languages(context)
    }
Beispiel #12
0
def detail(request, slug):
    team = Team.get(slug, request.user)
    
    languages = get_user_languages_from_request(request)
    languages.extend([l[:l.find('-')] for l in languages if l.find('-') > -1])
    
    langs_pairs = []
    
    for l1 in languages:
        for l0 in languages:
            if not l1 == l0:
                langs_pairs.append('%s_%s' % (l1, l0))
    
    qs = TeamVideoLanguagePair.objects.filter(language_pair__in=langs_pairs, team=team) \
        .select_related('team_video', 'team_video__video')
    lqs = TeamVideoLanguage.objects.filter(team=team).select_related('team_video', 'team_video__video')
    
    qs1 = qs.filter(percent_complete__gt=0,percent_complete__lt=100)
    qs2 = qs.filter(percent_complete=0)
    qs3 = lqs.filter(is_original=True, is_complete=False)
    qs4 = lqs.filter(is_original=False, forked=True, is_complete=True)
    
    mqs = TeamMultyQuerySet(qs1, qs2, qs3, qs4)

    extra_context = widget.add_onsite_js_files({})    
    extra_context.update({
        'team': team,
        'can_edit_video': team.can_edit_video(request.user)
    })

    if len(mqs) == 0:
        mqs = TeamMultyQuerySet(TeamVideoLanguagePair.objects.filter(team=team) \
                                .select_related('team_video', 'team_video__video'))

    general_settings = {}
    add_general_settings(request, general_settings)
    extra_context['general_settings'] = json.dumps(general_settings)

    if team.video:
        extra_context['widget_params'] = base_widget_params(request, {
            'video_url': team.video.get_video_url(), 
            'base_state': {}
        })
        
    return object_list(request, queryset=mqs, 
                       paginate_by=VIDEOS_ON_PAGE, 
                       template_name='teams/detail.html', 
                       extra_context=extra_context, 
                       template_object_name='team_video_md')
Beispiel #13
0
    def fetch_request_dialog_contents(self, request, video_id):
        """
        Fetch the contents for creating a dialog to create request subtitles
        form.
        """
        my_languages = get_user_languages_from_request(request)
        my_languages.extend([l[: l.find("-")] for l in my_languages if l.find("-") > -1])

        # List of language-code tuples
        all_languages = sorted(LANGUAGES_MAP.items())

        ##TODO: Filter all_languages according to already submitted requests
        # after creation of SubtitleRequest Model

        return {"my_languages": my_languages, "all_languages": all_languages}
Beispiel #14
0
 def setup_subtitle_language_code(self):
     if self.user.is_authenticated():
         user_langs = [l.language for l in self.user.get_languages()]
     else:
         user_langs = get_user_languages_from_request(self.request)
     if not user_langs:
         user_langs = ['en']
     def sort_key(choice):
         code, label = choice
         if code in user_langs:
             return user_langs.index(code)
         else:
             return len(user_langs)
     field = self.fields['subtitle_language_code']
     field.choices = sorted(get_language_choices(), key=sort_key)
Beispiel #15
0
    def guess_best_lang(self, request=None):

        if self.preferred_language:
            return self.preferred_language

        user_languages = self.get_languages()
        if user_languages:
            return user_languages[0]

        if request:
            languages = translation.get_user_languages_from_request(request)
            if languages:
                return languages[0]

        return 'en'
Beispiel #16
0
    def guess_best_lang(self, request=None):

        if self.preferred_language:
            return self.preferred_language

        user_languages = list(self.userlanguage_set.all())
        if user_languages:
            return user_languages[0].language

        if request:
            languages = translation.get_user_languages_from_request(request)
            if languages:
                return languages[0]

        return 'en'
Beispiel #17
0
    def show_widget(self,
                    request,
                    video_url,
                    is_remote,
                    base_state=None,
                    additional_video_urls=None):
        try:
            video_id = video_cache.get_video_id(video_url)
        except Exception as e:
            # for example, private youtube video or private widgets
            return {"error_msg": unicode(e)}

        if video_id is None:
            return None

        error = self._check_visibility_policy_for_widget(request, video_id)

        if error:
            return error

        video_urls, video_id, error = self._get_video_urls_for_widget(
            video_url, video_id)

        if error:
            return error

        resp = {
            'video_id': video_id,
            'subtitles': None,
            'video_urls': video_urls,
            'is_moderated': video_cache.get_is_moderated(video_id),
            'filename': video_cache.get_download_filename(video_id),
        }

        if additional_video_urls is not None:
            for url in additional_video_urls:
                video_cache.associate_extra_url(url, video_id)

        add_general_settings(request, resp)

        if request.user.is_authenticated():
            resp['username'] = request.user.username

        resp['drop_down_contents'] = video_cache.get_video_languages(video_id)
        resp['my_languages'] = get_user_languages_from_request(request)
        resp['subtitles'] = self._get_subtitles_for_widget(
            request, base_state, video_id, is_remote)
        return resp
Beispiel #18
0
    def fetch_request_dialog_contents(self, request, video_id):
        '''
        Fetch the contents for creating a dialog to create request subtitles
        form.
        '''
        my_languages = get_user_languages_from_request(request)
        my_languages.extend(
            [l[:l.find('-')] for l in my_languages if l.find('-') > -1])

        # List of language-code tuples
        all_languages = sorted(LANGUAGES_MAP.items())

        ##TODO: Filter all_languages according to already submitted requests
        # after creation of SubtitleRequest Model

        return {'my_languages': my_languages, 'all_languages': all_languages}
Beispiel #19
0
 def fetch_start_dialog_contents(self, request, video_id):
     my_languages = get_user_languages_from_request(request)
     my_languages.extend(
         [l[:l.find('-')] for l in my_languages if l.find('-') > -1])
     video = models.Video.objects.get(video_id=video_id)
     video_languages = [
         language_summary(l) for l in video.subtitlelanguage_set.all()
     ]
     original_language = None
     if video.subtitle_language():
         original_language = video.subtitle_language().language
     return {
         'my_languages': my_languages,
         'video_languages': video_languages,
         'original_language': original_language
     }
Beispiel #20
0
def select_language_dialog(context, option=None, hide_link=False, redirect=None, display_only=False, show_current=False):

    user_langs = get_user_languages_from_request(context['request'], readable=True, guess=False)
    current = {}

    for i, l in enumerate(user_langs):
        current['language%s' % (i+1)] = l

    return {
        'current': current,
        'force_ask': (option == 'force') and _user_needs_languages(context),
        'hide_link': hide_link,
        'redirect': redirect,
        'show_current': show_current,
        'request':context['request']
    }
Beispiel #21
0
    def _get_volunteer_sqs(self, request, user):
        '''
        Return the search query set for videos which would be relevent to
        volunteer for writing subtitles.
        '''
        user_langs = get_user_languages_from_request(request)

        relevent = SearchQuerySet().result_class(VideoSearchResult) \
            .models(Video).filter(video_language__in=user_langs) \
            .filter_or(languages__in=user_langs)

        ## The rest of videos which are NOT relevent
        #rest = SearchQuerySet().result_class(VideoSearchResult) \
            #.models(Video).filter(video_language__in=user_langs) \
            #.filter_or(languages__in=user_langs)

        return relevent
Beispiel #22
0
    def show_widget(self, request, video_url, is_remote, base_state=None, additional_video_urls=None):
        video_id = video_cache.get_video_id(video_url)

        if video_id is None:  # for example, private youtube video.
            return None

        try:
            video_urls = video_cache.get_video_urls(video_id)
        except models.Video.DoesNotExist:
            video_cache.invalidate_video_id(video_url)
            video_id = video_cache.get_video_id(video_url)
            video_urls = video_cache.get_video_urls(video_id)

        return_value = {"video_id": video_id, "subtitles": None}
        return_value["video_urls"] = video_urls
        return_value["is_moderated"] = video_cache.get_is_moderated(video_id)
        if additional_video_urls is not None:
            for url in additional_video_urls:
                video_cache.associate_extra_url(url, video_id)

        add_general_settings(request, return_value)
        if request.user.is_authenticated():
            return_value["username"] = request.user.username

        return_value["drop_down_contents"] = video_cache.get_video_languages(video_id)

        return_value["my_languages"] = get_user_languages_from_request(request)

        # keeping both forms valid as backwards compatibility layer
        lang_code = base_state and base_state.get("language_code", base_state.get("language", None))
        if base_state is not None and lang_code is not None:
            lang_pk = base_state.get("language_pk", None)
            if lang_pk is None:
                lang_pk = video_cache.pk_for_default_language(video_id, lang_code)
            subtitles = self._autoplay_subtitles(request.user, video_id, lang_pk, base_state.get("revision", None))
            return_value["subtitles"] = subtitles
        else:
            if is_remote:
                autoplay_language = self._find_remote_autoplay_language(request)
                language_pk = video_cache.pk_for_default_language(video_id, autoplay_language)
                if autoplay_language is not None:
                    subtitles = self._autoplay_subtitles(request.user, video_id, language_pk, None)
                    return_value["subtitles"] = subtitles
        return return_value
Beispiel #23
0
def detail(request, slug, is_debugging=False, languages=None):
    team = Team.get(slug, request.user)

    if languages is None:
        languages = get_user_languages_from_request(request)
    if bool(is_debugging):
        languages = request.GET.get("langs", "").split(",")

    data = team.get_videos_for_languages(languages, CUTTOFF_DUPLICATES_NUM_VIDEOS_ON_TEAMS)
    mqs = data['videos']
    
    extra_context = widget.add_onsite_js_files({})    
    extra_context.update({
        'team': team,
        'can_edit_video': team.can_edit_video(request.user)
    })

    


    general_settings = {}
    add_general_settings(request, general_settings)
    extra_context['general_settings'] = json.dumps(general_settings)


    if team.video:
        extra_context['widget_params'] = base_widget_params(request, {
            'video_url': team.video.get_video_url(), 
            'base_state': {}
        })

    if bool(is_debugging) and request.user.is_staff:
        extra_context.update(data)
        extra_context.update({
            'languages': languages,
            })
        return render_to_response("teams/detail-debug.html", extra_context, RequestContext(request))
    
    return object_list(request, queryset=mqs, 
                       paginate_by=VIDEOS_ON_PAGE, 
                       template_name='teams/detail.html', 
                       extra_context=extra_context, 
                       template_object_name='team_video_md')
Beispiel #24
0
def detail_old(request, slug, is_debugging=False, languages=None):
    team = Team.get(slug, request.user)

    if languages is None:
        languages = get_user_languages_from_request(request)
    if bool(is_debugging):
        languages = request.GET.get("langs", "").split(",")

    data = team.get_videos_for_languages(
        languages, CUTTOFF_DUPLICATES_NUM_VIDEOS_ON_TEAMS)
    mqs = data['videos']

    extra_context = widget.add_onsite_js_files({})
    extra_context.update({
        'team': team,
        'can_edit_video': team.can_edit_video(request.user)
    })

    general_settings = {}
    add_general_settings(request, general_settings)
    extra_context['general_settings'] = json.dumps(general_settings)

    if team.video:
        extra_context['widget_params'] = base_widget_params(
            request, {
                'video_url': team.video.get_video_url(),
                'base_state': {}
            })

    if bool(is_debugging) and request.user.is_staff:
        extra_context.update(data)
        extra_context.update({
            'languages': languages,
        })
        return render_to_response("teams/detail-debug.html", extra_context,
                                  RequestContext(request))

    return object_list(request,
                       queryset=mqs,
                       paginate_by=VIDEOS_ON_PAGE,
                       template_name='teams/detail.html',
                       extra_context=extra_context,
                       template_object_name='team_video_md')
Beispiel #25
0
def volunteer_page(request):
    user = request.user
    # Get the user comfort languages list 
    user_langs = get_user_languages_from_request(request)

    relevevent = SearchQuerySet().result_class(VideoSearchResult) \
        .models(Video).filter(video_language__in=user_langs) \
        .filter_or(languages__in=user_langs)

    featured_videos =  relevevent.order_by('-featured')[:5]

    popular_videos = relevevent.order_by('-week_views')[:5]

    latest_videos = relevevent.order_by('-edited')[:15]

    context = {
        'featured_videos': featured_videos,
        'popular_videos': popular_videos,
        'latest_videos': latest_videos,
        'user_langs':user_langs,
    }

    return render_to_response('videos/volunteer.html', context,
                              context_instance=RequestContext(request))
Beispiel #26
0
    def _get_volunteer_sqs(self, request, user):
        '''
        Return the search query set for videos which would be relevant to
        volunteer for writing subtitles.
        '''

        user_langs = get_user_languages_from_request(request)
        rest_langs = dict(settings.ALL_LANGUAGES).keys()
        for lang in user_langs:
            rest_langs.remove(lang)

        relevant = SearchQuerySet().result_class(VideoSearchResult) \
            .models(Video).filter(video_language_exact__in=user_langs) \
            .filter_or(languages_exact__in=user_langs) \
            .order_by('-requests_count')

        # Rest of the videos, which most probably would not be much useful
        # for the volunteer
        rest = SearchQuerySet().result_class(VideoSearchResult) \
            .exclude(languages_exact__in=user_langs) \
            .exclude(video_language_exact__in=user_langs) \
            .order_by('-requests_count')

        return relevant, rest
Beispiel #27
0
def user_languages(request):
    return {
        'USER_LANGUAGES': get_user_languages_from_request(request)
    }
Beispiel #28
0
    def show_widget(self,
                    request,
                    video_url,
                    is_remote,
                    base_state=None,
                    additional_video_urls=None):
        video_id = video_cache.get_video_id(video_url)

        if video_id is None:  # for example, private youtube video.
            return None

        try:
            video_urls = video_cache.get_video_urls(video_id)
        except models.Video.DoesNotExist:
            video_cache.invalidate_video_id(video_url)
            video_id = video_cache.get_video_id(video_url)
            video_urls = video_cache.get_video_urls(video_id)

        return_value = {
            'video_id': video_id,
            'subtitles': None,
        }
        return_value['video_urls'] = video_urls
        return_value['is_moderated'] = video_cache.get_is_moderated(video_id)
        if additional_video_urls is not None:
            for url in additional_video_urls:
                video_cache.associate_extra_url(url, video_id)

        add_general_settings(request, return_value)
        if request.user.is_authenticated():
            return_value['username'] = request.user.username

        return_value['drop_down_contents'] = \
            video_cache.get_video_languages(video_id)

        return_value['my_languages'] = \
            get_user_languages_from_request(request)

        # keeping both forms valid as backwards compatibility layer
        lang_code = base_state and base_state.get(
            "language_code", base_state.get("language", None))
        if base_state is not None and lang_code is not None:
            lang_pk = base_state.get('language_pk', None)
            if lang_pk is None:
                lang_pk = video_cache.pk_for_default_language(
                    video_id, lang_code)
            subtitles = self._autoplay_subtitles(
                request.user, video_id, lang_pk,
                base_state.get('revision', None))
            return_value['subtitles'] = subtitles
        else:
            if is_remote:
                autoplay_language = self._find_remote_autoplay_language(
                    request)
                language_pk = video_cache.pk_for_default_language(
                    video_id, autoplay_language)
                if autoplay_language is not None:
                    subtitles = self._autoplay_subtitles(
                        request.user, video_id, language_pk, None)
                    return_value['subtitles'] = subtitles
        return return_value
Beispiel #29
0
def detail(request, slug, is_debugging=False):
    team = Team.get(slug, request.user)
    
    languages = get_user_languages_from_request(request)
    if bool(is_debugging):
        languages = request.GET.get("langs", "").split(",")
    languages.extend([l[:l.find('-')] for l in languages if l.find('-') > -1])
    
    langs_pairs = []
    
    for l1 in languages:
        for l0 in languages:
            if not l1 == l0:
                langs_pairs.append('%s_%s' % (l1, l0))
    
    qs = TeamVideoLanguagePair.objects.filter(language_pair__in=langs_pairs, team=team) \
        .select_related('team_video', 'team_video__video')
    lqs = TeamVideoLanguage.objects.filter(team=team).select_related('team_video', 'team_video__video')
    
    qs1 = qs.filter(percent_complete__gt=0,percent_complete__lt=100)
    qs2 = qs.filter(percent_complete=0)
    qs3 = lqs.filter(is_original=True, is_complete=False, language__in=languages)
    qs4 = lqs.filter(is_original=False, forked=True, is_complete=False, language__in=languages)
    mqs = TeamMultyQuerySet(qs1, qs2, qs3, qs4)

    extra_context = widget.add_onsite_js_files({})    
    extra_context.update({
        'team': team,
        'can_edit_video': team.can_edit_video(request.user)
    })
    total_count = TeamVideo.objects.filter(team=team).count()

    additional = TeamVideoLanguagePair.objects.none()
    all_videos = TeamVideo.objects.filter(team=team).select_related('video')

    if total_count == 0:
        mqs = all_videos
    else:
        if  total_count < CUTTOFF_DUPLICATES_NUM_VIDEOS_ON_TEAMS:
            additional = all_videos.exclude(pk__in=[x.id for x in mqs ])
        else:
            additional = all_videos
        mqs = TeamMultyQuerySet(qs1, qs2, qs3, qs4 , additional)    


    general_settings = {}
    add_general_settings(request, general_settings)
    extra_context['general_settings'] = json.dumps(general_settings)


    if team.video:
        extra_context['widget_params'] = base_widget_params(request, {
            'video_url': team.video.get_video_url(), 
            'base_state': {}
        })

    if bool(is_debugging) and request.user.is_staff:
        extra_context.update({
            'languages': languages,
            'qs': qs,
            'lqs': lqs,
            'qs1': qs1,
            'qs2': qs2,
            'qs3': qs3,
            'qs4': qs4,
            'mqs':mqs,
            'mqs_count': len(mqs),
            'additional_count': additional.count(),
            'additional': additional[:50]
            })
        return render_to_response("teams/detail-debug.html", extra_context, RequestContext(request))
    
    return object_list(request, queryset=mqs, 
                       paginate_by=VIDEOS_ON_PAGE, 
                       template_name='teams/detail.html', 
                       extra_context=extra_context, 
                       template_object_name='team_video_md')
Beispiel #30
0
 def get_user_languages(self, user, request):
     return languages_with_labels(get_user_languages_from_request(request))
Beispiel #31
0
 def __init__(self, request, *args, **kwargs):
     super(ModerationListSearchForm, self).__init__(request.GET, *args,
                                                    **kwargs)
     self.user_langs = get_user_languages_from_request(request)
Beispiel #32
0
 def __init__(self,request,  *args, **kwargs):
     super(ModerationListSearchForm, self).__init__(request.GET, *args, **kwargs)
     self.user_langs = get_user_languages_from_request(request)
Beispiel #33
0
    def load_video_languages(self, video_id, user, request):
        """
        Load langs for search pages. Will take into consideration
        the languages the user speaks.
        Ordering is user language, then completness , then percentage
        then name of the language.
        We're sorting all in memory since those sets should be pretty small
        """
        LANGS_COUNT = 7
        
        try:
            video = Video.objects.get(pk=video_id)
        except Video.DoesNotExist:
            video = None
        
        user_langs = get_user_languages_from_request(request)

        langs = list(video.subtitlelanguage_set.filter(subtitle_count__gt=0).order_by('-subtitle_count'))
        
        first_languages = [] #user languages and original
        other_languages = [] #other languages already ordered by subtitle_count
        
        for l in langs:
            if l.language in user_langs or l.is_original:
                first_languages.append(l)
            else:
                other_languages.append(l)

        def _cmp_first_langs(lang1, lang2):
            """
            languages should original in user_langs
            """
            in_user_language_cmp = cmp(lang1.language in user_langs, lang2.language in user_langs)

            #one is not in user language
            if in_user_language_cmp != 0:
                return in_user_language_cmp
            
            if lang1.language in user_langs:
                #both in user's language, sort alphabetically 
                return cmp(lang2.get_language_display(), lang1.get_language_display())
            
            #one should be original
            return cmp(lang1.is_original, lang2.is_original)
        
        first_languages.sort(cmp=_cmp_first_langs, reverse=True)
        
        #fill first languages to LANGS_COUNT
        if len(first_languages) < LANGS_COUNT:
            other_languages = other_languages[:(LANGS_COUNT-len(first_languages))]
            other_languages.sort(lambda l1, l2: cmp(l1.get_language_display(), l2.get_language_display()))
            langs = first_languages + other_languages
        else:
            langs = first_languages[:LANGS_COUNT]
            
        context = {
            'video': video,
            'languages': langs
        }
        return {
            'content': render_to_string('videos/_video_languages.html', context)
        }
Beispiel #34
0
 def get_user_languages(self, user, request):
     return get_user_languages_from_request(request, with_names=True)
def user_languages(request):
    return {
        'USER_LANGUAGES': get_user_languages_from_request(request)
    }
Beispiel #36
0
    def load_video_languages(self, video_id, user, request):
        """
        Load langs for search pages. Will take into consideration
        the languages the user speaks.
        Ordering is user language, then completness , then percentage
        then name of the language.
        We're sorting all in memory since those sets should be pretty small
        """
        LANGS_COUNT = 7

        try:
            video = Video.objects.get(pk=video_id)
        except Video.DoesNotExist:
            video = None

        user_langs = get_user_languages_from_request(request)

        langs = list(video.newsubtitlelanguage_set.having_nonempty_tip())

        first_languages = []  #user languages and original
        other_languages = [
        ]  #other languages already ordered by subtitle_count

        for language in langs:
            if language.language_code in user_langs or language.is_primary_audio_language(
            ):
                first_languages.append(language)
            else:
                other_languages.append(language)

        def _cmp_first_langs(lang1, lang2):
            """
            languages should original in user_langs
            """
            in_user_language_cmp = cmp(lang1.language_code in user_langs,
                                       lang2.language_code in user_langs)

            #one is not in user language
            if in_user_language_cmp != 0:
                return in_user_language_cmp

            if lang1.language_code in user_langs:
                #both in user's language, sort alphabetically
                return cmp(lang2.get_language_code_display(),
                           lang1.get_language_code_display())

            #one should be original
            return cmp(lang1.is_original, lang2.is_original)

        first_languages.sort(cmp=_cmp_first_langs, reverse=True)

        #fill first languages to LANGS_COUNT
        if len(first_languages) < LANGS_COUNT:
            other_languages = other_languages[:(LANGS_COUNT -
                                                len(first_languages))]
            other_languages.sort(
                lambda l1, l2: cmp(l1.get_language_code_display(),
                                   l2.get_language_code_display()))
            langs = first_languages + other_languages
        else:
            langs = first_languages[:LANGS_COUNT]

        context = {'video': video, 'languages': langs}

        return {
            'content': render_to_string('videos/_video_languages.html',
                                        context)
        }
Beispiel #37
0
def detail(request, slug, is_debugging=False):
    team = Team.get(slug, request.user)

    languages = get_user_languages_from_request(request)
    if bool(is_debugging):
        languages = request.GET.get("langs", "").split(",")
    languages.extend([l[:l.find('-')] for l in languages if l.find('-') > -1])

    langs_pairs = []

    for l1 in languages:
        for l0 in languages:
            if not l1 == l0:
                langs_pairs.append('%s_%s' % (l1, l0))

    qs = TeamVideoLanguagePair.objects.filter(language_pair__in=langs_pairs, team=team) \
        .select_related('team_video', 'team_video__video')
    lqs = TeamVideoLanguage.objects.filter(team=team).select_related(
        'team_video', 'team_video__video')

    qs1 = qs.filter(percent_complete__gt=0, percent_complete__lt=100)
    qs2 = qs.filter(percent_complete=0)
    qs3 = lqs.filter(is_original=True,
                     is_complete=False,
                     language__in=languages)
    qs4 = lqs.filter(is_original=False,
                     forked=True,
                     is_complete=False,
                     language__in=languages)
    mqs = TeamMultyQuerySet(qs1, qs2, qs3, qs4)

    extra_context = widget.add_onsite_js_files({})
    extra_context.update({
        'team': team,
        'can_edit_video': team.can_edit_video(request.user)
    })
    total_count = TeamVideo.objects.filter(team=team).count()

    additional = TeamVideoLanguagePair.objects.none()
    all_videos = TeamVideo.objects.filter(team=team).select_related('video')

    if total_count == 0:
        mqs = all_videos
    else:
        if total_count < CUTTOFF_DUPLICATES_NUM_VIDEOS_ON_TEAMS:
            additional = all_videos.exclude(pk__in=[x.id for x in mqs])
        else:
            additional = all_videos
        mqs = TeamMultyQuerySet(qs1, qs2, qs3, qs4, additional)

    general_settings = {}
    add_general_settings(request, general_settings)
    extra_context['general_settings'] = json.dumps(general_settings)

    if team.video:
        extra_context['widget_params'] = base_widget_params(
            request, {
                'video_url': team.video.get_video_url(),
                'base_state': {}
            })

    if bool(is_debugging) and request.user.is_staff:
        extra_context.update({
            'languages': languages,
            'qs': qs,
            'lqs': lqs,
            'qs1': qs1,
            'qs2': qs2,
            'qs3': qs3,
            'qs4': qs4,
            'mqs': mqs,
            'mqs_count': len(mqs),
            'additional_count': additional.count(),
            'additional': additional[:50]
        })
        return render_to_response("teams/detail-debug.html", extra_context,
                                  RequestContext(request))

    return object_list(request,
                       queryset=mqs,
                       paginate_by=VIDEOS_ON_PAGE,
                       template_name='teams/detail.html',
                       extra_context=extra_context,
                       template_object_name='team_video_md')
Beispiel #38
0
 def get_user_languages(self, user, request):
     return get_user_languages_from_request(request, with_names=True)