Ejemplo n.º 1
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')
Ejemplo n.º 2
0
def detail_members(request, slug):
    #just other tab of detail view
    q = request.REQUEST.get('q')
    
    team = Team.get(slug, request.user)
    
    qs = team.members.all()
    if q:
        qs = qs.filter(Q(user__first_name__icontains=q)|Q(user__last_name__icontains=q) \
                       |Q(user__username__icontains=q)|Q(user__biography__icontains=q))

    extra_context = widget.add_onsite_js_files({})  

    extra_context.update({
        'team': team,
        'query': q
    })
    
    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=qs, 
                       paginate_by=MEMBERS_ON_PAGE, 
                       template_name='teams/detail_members.html', 
                       extra_context=extra_context, 
                       template_object_name='team_member')
Ejemplo n.º 3
0
def edit(request, slug):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404
    
    if not team.is_manager(request.user):
        return {
            'team': team
        }
    
    if request.method == 'POST':
        if request.user.is_staff:
            form = EditTeamFormAdmin(request.POST, request.FILES, instance=team)
        else:
            form = EditTeamForm(request.POST, request.FILES, instance=team)
        if form.is_valid():
            form.save()
            messages.success(request, _(u'Your changes have been saved'))
            return redirect(team.get_edit_url())
    else:
        if request.user.is_staff:
            form = EditTeamFormAdmin(instance=team)
        else:
            form = EditTeamForm(instance=team)
    return {
        'form': form,
        'team': team
    }
Ejemplo n.º 4
0
def edit(request, slug):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404

    if not team.is_manager(request.user):
        return {'team': team}

    if request.method == 'POST':
        if request.user.is_staff:
            form = EditTeamFormAdmin(request.POST,
                                     request.FILES,
                                     instance=team)
        else:
            form = EditTeamForm(request.POST, request.FILES, instance=team)
        if form.is_valid():
            form.save()
            messages.success(request, _(u'Your changes have been saved'))
            return redirect(team.get_edit_url())
    else:
        if request.user.is_staff:
            form = EditTeamFormAdmin(instance=team)
        else:
            form = EditTeamForm(instance=team)
    return {'form': form, 'team': team}
Ejemplo n.º 5
0
def add_video(request, slug):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404

    if not team.can_add_video(request.user):
        messages.error(request, _(u'You can\'t add video.'))
        return {'team': team}

    initial = {
        'video_url': request.GET.get('url', ''),
        'title': request.GET.get('title', '')
    }

    form = AddTeamVideoForm(team,
                            request.POST or None,
                            request.FILES or None,
                            initial=initial)

    if form.is_valid():
        obj = form.save(False)
        obj.added_by = request.user
        obj.save()
        return redirect(obj)

    return {'form': form, 'team': team}
Ejemplo n.º 6
0
def edit_members(request, slug):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404

    qs = team.members.select_related()

    ordering = request.GET.get('o')
    order_type = request.GET.get('ot')

    if ordering == 'username' and order_type in ['asc', 'desc']:
        pr = '-' if order_type == 'desc' else ''
        qs = qs.order_by(pr + 'user__first_name', pr + 'user__last_name',
                         pr + 'user__username')
    elif ordering == 'role' and order_type in ['asc', 'desc']:
        qs = qs.order_by(('-' if order_type == 'desc' else '') + 'is_manager')
    extra_context = {
        'team': team,
        'ordering': ordering,
        'order_type': order_type
    }

    return object_list(request,
                       queryset=qs,
                       paginate_by=MEMBERS_ON_PAGE,
                       template_name='teams/edit_members.html',
                       template_object_name='members',
                       extra_context=extra_context)
Ejemplo n.º 7
0
def add_video(request, slug):
    team = Team.get(slug, request.user)
    
    if not team.is_member(request.user):
        raise Http404
    
    if not team.can_add_video(request.user):
        messages.error(request, _(u'You can\'t add video.'))
        return {
            'team': team
        }
    
    initial = {
        'video_url': request.GET.get('url', ''),
        'title': request.GET.get('title', '')
    }
    
    form = AddTeamVideoForm(team, request.POST or None, request.FILES or None, initial=initial)
    
    if form.is_valid():
        obj =  form.save(False)
        obj.added_by = request.user
        obj.save()
        return redirect(obj)
        
    return {
        'form': form,
        'team': team
    }
Ejemplo n.º 8
0
def edit_members(request, slug):
    team = Team.get(slug, request.user)
    
    if not team.is_member(request.user):
        raise Http404
        
    qs = team.members.select_related()
    
    ordering = request.GET.get('o')
    order_type = request.GET.get('ot')
    
    if ordering == 'username' and order_type in ['asc', 'desc']:
        pr = '-' if order_type == 'desc' else ''
        qs = qs.order_by(pr+'user__first_name', pr+'user__last_name', pr+'user__username')
    elif ordering == 'role' and order_type in ['asc', 'desc']:
        qs = qs.order_by(('-' if order_type == 'desc' else '')+'is_manager')
    extra_context = {
        'team': team,
        'ordering': ordering,
        'order_type': order_type
    }

    return object_list(request, queryset=qs,
                       paginate_by=MEMBERS_ON_PAGE,
                       template_name='teams/edit_members.html',
                       template_object_name='members',
                       extra_context=extra_context)    
Ejemplo n.º 9
0
def detail_members(request, slug):
    #just other tab of detail view
    q = request.REQUEST.get('q')

    team = Team.get(slug, request.user)

    qs = team.members.all()
    if q:
        qs = qs.filter(Q(user__first_name__icontains=q)|Q(user__last_name__icontains=q) \
                       |Q(user__username__icontains=q)|Q(user__biography__icontains=q))

    extra_context = widget.add_onsite_js_files({})

    extra_context.update({'team': team, 'query': q})

    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=qs,
                       paginate_by=MEMBERS_ON_PAGE,
                       template_name='teams/detail_members.html',
                       extra_context=extra_context,
                       template_object_name='team_member')
Ejemplo n.º 10
0
def videos_actions(request, slug):
    team = Team.get(slug, request.user)
    videos_ids = team.teamvideo_set.values_list('video__id', flat=True)
    qs = Action.objects.filter(video__pk__in=videos_ids)
    extra_context = {'team': team}
    return object_list(request,
                       queryset=qs,
                       paginate_by=ACTIONS_ON_PAGE,
                       template_name='teams/videos_actions.html',
                       extra_context=extra_context,
                       template_object_name='videos_action')
Ejemplo n.º 11
0
def videos_actions(request, slug):
    team = Team.get(slug, request.user)  
    videos_ids = team.teamvideo_set.values_list('video__id', flat=True)
    qs = Action.objects.filter(video__pk__in=videos_ids)
    extra_context = {
        'team': team
    }   
    return object_list(request, queryset=qs, 
                       paginate_by=ACTIONS_ON_PAGE, 
                       template_name='teams/videos_actions.html', 
                       extra_context=extra_context, 
                       template_object_name='videos_action')
Ejemplo n.º 12
0
def promote_member(request, slug, user_pk):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404

    if team.is_manager(request.user):
        user = get_object_or_404(User, pk=user_pk)
        if not user == request.user:
            TeamMember.objects.filter(team=team, user=user).update(is_manager=True)
    else:
        messages.error(request, _('You can\'t promote to manager'))
    return redirect('teams:edit_members', team.slug)
Ejemplo n.º 13
0
def promote_member(request, slug, user_pk):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404

    if team.is_manager(request.user):
        user = get_object_or_404(User, pk=user_pk)
        if not user == request.user:
            TeamMember.objects.filter(team=team, user=user).update(is_manager=True)
    else:
        messages.error(request, _('You can\'t promote to manager'))
    return redirect('teams:edit_members', team.slug)
Ejemplo n.º 14
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')
Ejemplo n.º 15
0
def deny_application(request, slug, user_pk):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404

    if team.can_approve_application(request.user):
        try:
            Application.objects.get(team=team, user=user_pk).deny()
            messages.success(request, _(u'Application denied.'))
        except Application.DoesNotExist:
            messages.error(request, _(u'Application does not exist.'))
    else:
        messages.error(request, _(u'You can\'t deny application.'))
    return redirect('teams:applications', team.pk)
Ejemplo n.º 16
0
def applications(request, slug):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404

    qs = team.applications.all()

    extra_context = {'team': team}
    return object_list(request,
                       queryset=qs,
                       paginate_by=APLICATIONS_ON_PAGE,
                       template_name='teams/applications.html',
                       template_object_name='applications',
                       extra_context=extra_context)
Ejemplo n.º 17
0
def members_actions(request, slug):
    team = Team.get(slug, request.user)   
    
    user_ids = team.members.values_list('user__id', flat=True)
    
    qs = Action.objects.filter(user__pk__in=user_ids)
    
    extra_context = {
        'team': team
    }   
    return object_list(request, queryset=qs, 
                       paginate_by=ACTIONS_ON_PAGE, 
                       template_name='teams/members_actions.html', 
                       extra_context=extra_context, 
                       template_object_name='action')
Ejemplo n.º 18
0
def deny_application(request, slug, user_pk):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404
    
    if team.can_approve_application(request.user):
        try:
            Application.objects.get(team=team, user=user_pk).deny()
            messages.success(request, _(u'Application denied.'))
        except Application.DoesNotExist:
            messages.error(request, _(u'Application does not exist.'))
    else:
        messages.error(request, _(u'You can\'t deny application.'))
    return redirect('teams:applications', team.pk)
Ejemplo n.º 19
0
def add_videos(request, slug):
    team = Team.get(slug, request.user)

    resp = _check_add_video_permission(request, team)
    if resp:
        return resp

    form = AddTeamVideosFromFeedForm(team, request.user, request.POST or None)

    if form.is_valid():
        team_videos = form.save()
        messages.success(request, form.success_message() % {'count': len(team_videos)})
        return redirect(team)

    return { 'form': form, 'team': team, }
Ejemplo n.º 20
0
def applications(request, slug):
    team = Team.get(slug, request.user)
    
    if not team.is_member(request.user):
        raise Http404
    
    qs = team.applications.all()
        
    extra_context = {
        'team': team
    }
    return object_list(request, queryset=qs,
                       paginate_by=APLICATIONS_ON_PAGE,
                       template_name='teams/applications.html',
                       template_object_name='applications',
                       extra_context=extra_context) 
Ejemplo n.º 21
0
def edit_videos(request, slug):
    team = Team.get(slug, request.user)
    
    if not team.is_member(request.user):
        raise Http404
    
    qs = team.teamvideo_set.all()
    
    extra_context = {
        'team': team,
    }
    return object_list(request, queryset=qs,
                       paginate_by=VIDEOS_ON_PAGE,
                       template_name='teams/edit_videos.html',
                       template_object_name='videos',
                       extra_context=extra_context)
Ejemplo n.º 22
0
def edit_videos(request, slug):
    team = Team.get(slug, request.user)
    
    if not team.is_member(request.user):
        raise Http404
    
    qs = team.teamvideo_set.all()
    
    extra_context = {
        'team': team,
    }
    return object_list(request, queryset=qs,
                       paginate_by=VIDEOS_ON_PAGE,
                       template_name='teams/edit_videos.html',
                       template_object_name='videos',
                       extra_context=extra_context)
Ejemplo n.º 23
0
def edit_logo(request, slug):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404
    
    output = {}
    form = EditLogoForm(request.POST, instance=team, files=request.FILES)
    if form.is_valid():
        try:
            form.save()
            output['url'] =  str(team.logo_thumbnail())
        except S3StorageError:
            output['error'] = {'logo': ugettext(u'File server unavailable. Try later. You can edit some other information without any problem.')}
    else:
        output['error'] = form.get_errors()
    return HttpResponse('<textarea>%s</textarea>'  % json.dumps(output))
Ejemplo n.º 24
0
def edit_logo(request, slug):
    team = Team.get(slug, request.user)
    
    if not team.is_member(request.user):
        raise Http404
    
    output = {}
    form = EditLogoForm(request.POST, instance=team, files=request.FILES)
    if form.is_valid():
        try:
            form.save()
            output['url'] =  str(team.logo_thumbnail())
        except S3StorageError:
            output['error'] = {'logo': ugettext(u'File server unavailable. Try later. You can edit some other information without any problem.')}
    else:
        output['error'] = form.get_errors()
    return HttpResponse('<textarea>%s</textarea>'  % json.dumps(output))
Ejemplo n.º 25
0
def remove_member(request, slug, user_pk):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404

    if team.is_manager(request.user):
        user = get_object_or_404(User, pk=user_pk)
        if not user == request.user:
            TeamMember.objects.filter(team=team, user=user).delete()
            return {'success': True}
        else:
            return {
                'success': False,
                'error': ugettext('You can\'t remove youself')
            }
    else:
        return {'success': False, 'error': ugettext('You can\'t remove user')}
Ejemplo n.º 26
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')
Ejemplo n.º 27
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')
Ejemplo n.º 28
0
def promote_member(request, slug, user_pk):
    team = Team.get(slug, request.user)
    if not team.is_member(request.user):
        raise Http404
    error = None
    msg = _("Team member role changed.")
    if team.is_manager(request.user):
        user = get_object_or_404(User, pk=user_pk)
        if not user == request.user:
            new_role = request.POST.get("role", TeamMember.ROLE_MANAGER)
            if new_role not in [x[0] for x in TeamMember.ROLES]:
                error =  _('Not a valid role')
            else:
                TeamMember.objects.filter(team=team, user=user).update(role=new_role)
    else:
        error =  _('You can\'t promote to manager')
    if request.is_ajax():
        return _json_response({"success":not error, "msg": error or msg})
    elif error:
        messages.error(request, error)
    return redirect('teams:edit_members', team.slug)
Ejemplo n.º 29
0
def completed_videos(request, slug):
    team = Team.get(slug, request.user)
    
    qs = SearchQuerySet().models(TeamVideo).filter(team_id=team.id) \
        .filter(is_complete=True).order_by('-video_complete_date')

    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=qs, 
                       paginate_by=VIDEOS_ON_PAGE, 
                       template_name='teams/completed_videos.html', 
                       extra_context=extra_context, 
                       template_object_name='team_video')    
Ejemplo n.º 30
0
def completed_videos(request, slug):
    team = Team.get(slug, request.user)
    
    qs = SearchQuerySet().models(TeamVideo).filter(team_id=team.id) \
        .filter(is_complete=True).order_by('-video_complete_date')

    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=qs, 
                       paginate_by=VIDEOS_ON_PAGE, 
                       template_name='teams/completed_videos.html', 
                       extra_context=extra_context, 
                       template_object_name='team_video')    
Ejemplo n.º 31
0
def remove_member(request, slug, user_pk):
    team = Team.get(slug, request.user)

    if not team.is_member(request.user):
        raise Http404

    if team.is_manager(request.user):
        user = get_object_or_404(User, pk=user_pk)
        if not user == request.user:
            TeamMember.objects.filter(team=team, user=user).delete()
            return {
                'success': True
            }
        else:
            return {
                'success': False,
                'error': ugettext('You can\'t remove youself')
            }          
    else:
        return {
            'success': False,
            'error': ugettext('You can\'t remove user')
        }        
Ejemplo n.º 32
0
def completed_videos(request, slug):
    team = Team.get(slug, request.user)
    
    qs = team.teamvideo_set.exclude(video__complete_date__isnull=True) \
        .select_related('video').order_by('-video__complete_date')
        
    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': {}
        })

    qs = qs._clone(CompletedVideosQS)

    return object_list(request, queryset=qs, 
                       paginate_by=VIDEOS_ON_PAGE, 
                       template_name='teams/completed_videos.html', 
                       extra_context=extra_context, 
                       template_object_name='team_video')    
Ejemplo n.º 33
0
def add_video(request, slug):
    team = Team.get(slug, request.user)

    resp = _check_add_video_permission(request, team)
    if resp:
        return resp
    
    initial = {
        'video_url': request.GET.get('url', ''),
        'title': request.GET.get('title', '')
    }
    
    form = AddTeamVideoForm(team, request.user, request.POST or None, request.FILES or None, initial=initial)
    
    if form.is_valid():
        obj =  form.save(False)
        obj.added_by = request.user
        obj.save()
        return redirect(obj)
        
    return {
        'form': form,
        'team': team
    }
Ejemplo n.º 34
0
def completed_videos(request, slug):
    team = Team.get(slug, request.user)

    qs = team.teamvideo_set.exclude(video__complete_date__isnull=True) \
        .select_related('video').order_by('-video__complete_date')

    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': {}
            })

    qs = qs._clone(CompletedVideosQS)

    return object_list(request,
                       queryset=qs,
                       paginate_by=VIDEOS_ON_PAGE,
                       template_name='teams/completed_videos.html',
                       extra_context=extra_context,
                       template_object_name='team_video')
Ejemplo n.º 35
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')
Ejemplo n.º 36
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')