Пример #1
0
    def test_top_contributors_l10n(self):
        d = DocumentFactory(locale="es")
        es1 = RevisionFactory(document=d)
        RevisionFactory(document=d, creator=es1.creator)
        RevisionFactory(document=d)
        es4 = RevisionFactory(document=d,
                              created=date.today() - timedelta(days=91))

        d = DocumentFactory(locale="de")
        de1 = RevisionFactory(document=d)
        RevisionFactory(document=d, creator=de1.creator)

        d = DocumentFactory(locale="en-US")
        RevisionFactory(document=d)
        RevisionFactory(document=d)

        self.refresh()

        # By default, we should only get 2 top contributors back for 'es'.
        top, _ = top_contributors_l10n(locale="es")
        eq_(2, len(top))
        assert es4.creator_id not in [u["term"] for u in top]
        eq_(es1.creator_id, top[0]["term"])

        # By default, we should only get 1 top contributors back for 'de'.
        top, _ = top_contributors_l10n(locale="de")
        eq_(1, len(top))
        eq_(de1.creator_id, top[0]["term"])

        # If no locale is passed, it includes all locales except en-US.
        top, _ = top_contributors_l10n()
        eq_(3, len(top))
Пример #2
0
    def test_top_contributors_l10n(self):
        d = DocumentFactory(locale="es")
        es1 = RevisionFactory(document=d)
        RevisionFactory(document=d, creator=es1.creator)
        RevisionFactory(document=d)
        es4 = RevisionFactory(document=d, created=date.today() - timedelta(days=91))

        d = DocumentFactory(locale="de")
        de1 = RevisionFactory(document=d)
        RevisionFactory(document=d, creator=de1.creator)

        d = DocumentFactory(locale="en-US")
        RevisionFactory(document=d)
        RevisionFactory(document=d)

        self.refresh()

        # By default, we should only get 2 top contributors back for 'es'.
        top, _ = top_contributors_l10n(locale="es")
        eq_(2, len(top))
        assert es4.creator_id not in [u["term"] for u in top]
        eq_(es1.creator_id, top[0]["term"])

        # By default, we should only get 1 top contributors back for 'de'.
        top, _ = top_contributors_l10n(locale="de")
        eq_(1, len(top))
        eq_(de1.creator_id, top[0]["term"])

        # If no locale is passed, it includes all locales except en-US.
        top, _ = top_contributors_l10n()
        eq_(3, len(top))
Пример #3
0
    def test_top_contributors_l10n(self):
        d = document(locale='es', save=True)
        es1 = revision(document=d, save=True)
        es1 = revision(document=d, creator=es1.creator, save=True)
        es3 = revision(document=d, save=True)
        es4 = revision(document=d, created=date.today()-timedelta(days=91),
                      save=True)

        d = document(locale='de', save=True)
        de1 = revision(document=d, save=True)
        de2 = revision(document=d, creator=de1.creator, save=True)

        d = document(locale='en-US', save=True)
        revision(document=d, save=True)
        revision(document=d, save=True)

        self.refresh()

        # By default, we should only get 2 top contributors back for 'es'.
        top = top_contributors_l10n(locale='es')
        eq_(2, len(top))
        assert es4.creator_id not in [u['term'] for u in top]
        eq_(es1.creator_id, top[0]['term'])

         # By default, we should only get 1 top contributors back for 'de'.
        top = top_contributors_l10n(locale='de')
        eq_(1, len(top))
        eq_(de1.creator_id, top[0]['term'])

        # If no locale is passed, it includes all locales except en-US.
        top = top_contributors_l10n()
        eq_(3, len(top))
Пример #4
0
def home(request):
    """Community hub landing page."""

    community_news = get_object_fallback(
        Document, COMMUNITY_NEWS_DOC, request.LANGUAGE_CODE)
    locale = _validate_locale(request.GET.get('locale'))
    product = request.GET.get('product')
    if product:
        product = get_object_or_404(Product, slug=product)

    # Get the 5 most recent Community Discussion threads.
    recent_threads = Thread.objects.filter(forum__slug='contributors')[:5]

    data = {
        'community_news': community_news,
        'locale': locale,
        'product': product,
        'products': Product.objects.filter(visible=True),
        'threads': recent_threads,
    }

    if locale:
        data['top_contributors_aoa'], _ = top_contributors_aoa(locale=locale)

        # If the locale is en-US we should top KB contributors, else we show
        # top l10n contributors for that locale
        if locale == settings.WIKI_DEFAULT_LANGUAGE:
            data['top_contributors_kb'], _ = top_contributors_kb(
                product=product)
        else:
            data['top_contributors_l10n'], _ = top_contributors_l10n(
                locale=locale, product=product)

        # If the locale is enabled for the Support Forum, show the top
        # contributors for that locale
        if locale in QuestionLocale.objects.locales_list():
            data['top_contributors_questions'], _ = top_contributors_questions(
                locale=locale, product=product)
    else:
        # If no locale is specified, we show overall top contributors
        # across locales.
        data['top_contributors_aoa'], _ = top_contributors_aoa()
        data['top_contributors_kb'], _ = top_contributors_kb(product=product)
        data['top_contributors_l10n'], _ = top_contributors_l10n(
            product=product)
        data['top_contributors_questions'], _ = top_contributors_questions(
            product=product)

    return render(request, 'community/index.html', data)
Пример #5
0
def home(request):
    """Community hub landing page."""

    community_news = get_object_fallback(Document, COMMUNITY_NEWS_DOC,
                                         request.LANGUAGE_CODE)
    locale = _validate_locale(request.GET.get("locale"))
    product = request.GET.get("product")
    if product:
        product = get_object_or_404(Product, slug=product)

    # Get the 5 most recent Community Discussion threads.
    recent_threads = Thread.objects.filter(forum__slug="contributors")[:5]

    data = {
        "community_news": community_news,
        "locale": locale,
        "product": product,
        "products": Product.objects.filter(visible=True),
        "threads": recent_threads,
    }

    if locale:
        data["top_contributors_aoa"], _ = top_contributors_aoa(locale=locale)

        # If the locale is en-US we should top KB contributors, else we show
        # top l10n contributors for that locale
        if locale == settings.WIKI_DEFAULT_LANGUAGE:
            data["top_contributors_kb"], _ = top_contributors_kb(
                product=product)
        else:
            data["top_contributors_l10n"], _ = top_contributors_l10n(
                locale=locale, product=product)

        # If the locale is enabled for the Support Forum, show the top
        # contributors for that locale
        if locale in QuestionLocale.objects.locales_list():
            data["top_contributors_questions"], _ = top_contributors_questions(
                locale=locale, product=product)
    else:
        # If no locale is specified, we show overall top contributors
        # across locales.
        data["top_contributors_aoa"], _ = top_contributors_aoa()
        data["top_contributors_kb"], _ = top_contributors_kb(product=product)
        data["top_contributors_l10n"], _ = top_contributors_l10n(
            product=product)
        data["top_contributors_questions"], _ = top_contributors_questions(
            product=product)

    return render(request, "community/index.html", data)
Пример #6
0
def top_contributors(request, area):
    """Top contributors list view."""

    locale = _validate_locale(request.GET.get('locale'))
    product = request.GET.get('product')
    if product:
        product = get_object_or_404(Product, slug=product)

    if area == 'army-of-awesome':
        results = top_contributors_aoa(locale=locale, count=50)
        locales = settings.SUMO_LANGUAGES
    elif area == 'questions':
        results = top_contributors_questions(
            locale=locale, product=product, count=50)
        locales = settings.AAQ_LANGUAGES
    elif area == 'kb':
        results = top_contributors_kb(product=product, count=50)
        locales = None
    elif area == 'l10n':
        results = top_contributors_l10n(
            locale=locale, product=product, count=50)
        locales = settings.SUMO_LANGUAGES
    else:
        raise Http404

    return render(request, 'community/top_contributors.html', {
        'results': results,
        'area': area,
        'locale': locale,
        'locales': locales,
        'product': product,
        'products': Product.objects.filter(visible=True),
    })
Пример #7
0
def home(request):
    """Community hub landing page."""

    community_news = get_object_fallback(Document, COMMUNITY_NEWS_DOC,
                                         request.LANGUAGE_CODE)
    locale = _validate_locale(request.GET.get('locale'))
    product = request.GET.get('product')
    if product:
        product = get_object_or_404(Product, slug=product)

    # Get the 5 most recent Community Discussion threads.
    recent_threads = Thread.objects.filter(forum__slug='contributors')[:5]

    data = {
        'community_news': community_news,
        'locale': locale,
        'product': product,
        'products': Product.objects.filter(visible=True),
        'threads': recent_threads,
    }

    if locale:
        data['top_contributors_aoa'] = top_contributors_aoa(locale=locale)

        # If the locale is en-US we should top KB contributors, else we show
        # top l10n contributors for that locale
        if locale == settings.WIKI_DEFAULT_LANGUAGE:
            data['top_contributors_kb'] = top_contributors_kb(product=product)
        else:
            data['top_contributors_l10n'] = top_contributors_l10n(
                locale=locale, product=product)

        # If the locale is enabled for the Support Forum, show the top
        # contributors for that locale
        if locale in settings.AAQ_LANGUAGES:
            data['top_contributors_questions'] = top_contributors_questions(
                locale=locale, product=product)
    else:
        # If no locale is specified, we show overall top contributors
        # across locales.
        data['top_contributors_aoa'] = top_contributors_aoa()
        data['top_contributors_kb'] = top_contributors_kb(product=product)
        data['top_contributors_l10n'] = top_contributors_l10n(product=product)
        data['top_contributors_questions'] = top_contributors_questions(
            product=product)

    return render(request, 'community/index.html', data)
Пример #8
0
def top_contributors(request, area):
    """Top contributors list view."""

    try:
        page = int(request.GET.get("page", 1))
    except ValueError:
        page = 1
    page_size = 100
    exceeds_page_size = False

    locale = _validate_locale(request.GET.get("locale"))
    product = request.GET.get("product")
    if product:
        product = get_object_or_404(Product, slug=product)

    if area == "army-of-awesome":
        results, total = top_contributors_aoa(locale=locale,
                                              count=page_size,
                                              page=page)
        locales = settings.SUMO_LANGUAGES
    elif area == "questions":
        results, total = top_contributors_questions(locale=locale,
                                                    product=product,
                                                    count=page_size)
        if total == page_size + 1:
            total -= 1
            exceeds_page_size = True
        locales = QuestionLocale.objects.locales_list()
    elif area == "kb":
        results, total = top_contributors_kb(product=product,
                                             count=page_size,
                                             page=page)
        locales = None
    elif area == "l10n":
        results, total = top_contributors_l10n(locale=locale,
                                               product=product,
                                               count=page_size,
                                               page=page)
        locales = settings.SUMO_LANGUAGES
    else:
        raise Http404

    return render(
        request,
        "community/top_contributors.html",
        {
            "results": results,
            "total": total,
            "area": area,
            "locale": locale,
            "locales": locales,
            "product": product,
            "products": Product.objects.filter(visible=True),
            "page": page,
            "page_size": page_size,
            "exceeds_page_size": exceeds_page_size,
        },
    )
Пример #9
0
def home(request):
    """Community hub landing page."""

    return render(request, 'community/index.html', {
        'top_contributors_aoa': top_contributors_aoa(),
        'top_contributors_kb': top_contributors_kb(),
        'top_contributors_l10n': top_contributors_l10n(),
        'top_contributors_questions': top_contributors_questions(),
    })
Пример #10
0
def home(request):
    """Community hub landing page."""

    community_news = get_object_fallback(
        Document, COMMUNITY_NEWS_DOC, request.LANGUAGE_CODE)

    return render(request, 'community/index.html', {
        'community_news': community_news,
        'top_contributors_aoa': top_contributors_aoa(),
        'top_contributors_kb': top_contributors_kb(),
        'top_contributors_l10n': top_contributors_l10n(),
        'top_contributors_questions': top_contributors_questions(),
    })
Пример #11
0
def top_contributors(request, area):
    """Top contributors list view."""

    try:
        page = int(request.GET.get('page', 1))
    except ValueError:
        page = 1
    page_size = 100

    locale = _validate_locale(request.GET.get('locale'))
    product = request.GET.get('product')
    if product:
        product = get_object_or_404(Product, slug=product)

    if area == 'army-of-awesome':
        results, total = top_contributors_aoa(locale=locale,
                                              count=page_size,
                                              page=page)
        locales = settings.SUMO_LANGUAGES
    elif area == 'questions':
        results, total = top_contributors_questions(locale=locale,
                                                    product=product,
                                                    count=page_size,
                                                    page=page)
        locales = QuestionLocale.objects.locales_list()
    elif area == 'kb':
        results, total = top_contributors_kb(product=product,
                                             count=page_size,
                                             page=page)
        locales = None
    elif area == 'l10n':
        results, total = top_contributors_l10n(locale=locale,
                                               product=product,
                                               count=page_size,
                                               page=page)
        locales = settings.SUMO_LANGUAGES
    else:
        raise Http404

    return render(
        request, 'community/top_contributors.html', {
            'results': results,
            'total': total,
            'area': area,
            'locale': locale,
            'locales': locales,
            'product': product,
            'products': Product.objects.filter(visible=True),
            'page': page,
            'page_size': page_size,
        })
Пример #12
0
    def test_top_contributors_l10n(self):
        d = document(locale='es', save=True)
        es1 = revision(document=d, save=True)
        es1 = revision(document=d, creator=es1.creator, save=True)
        es3 = revision(document=d, save=True)
        es4 = revision(document=d,
                       created=date.today() - timedelta(days=91),
                       save=True)

        d = document(locale='de', save=True)
        de1 = revision(document=d, save=True)
        de2 = revision(document=d, creator=de1.creator, save=True)

        d = document(locale='en-US', save=True)
        revision(document=d, save=True)
        revision(document=d, save=True)

        for u in User.objects.all():
            profile(user=u)

        self.refresh()

        # By default, we should only get 2 top contributors back for 'es'.
        top, _ = top_contributors_l10n(locale='es')
        eq_(2, len(top))
        assert es4.creator_id not in [u['term'] for u in top]
        eq_(es1.creator_id, top[0]['term'])

        # By default, we should only get 1 top contributors back for 'de'.
        top, _ = top_contributors_l10n(locale='de')
        eq_(1, len(top))
        eq_(de1.creator_id, top[0]['term'])

        # If no locale is passed, it includes all locales except en-US.
        top, _ = top_contributors_l10n()
        eq_(3, len(top))
Пример #13
0
def top_contributors(request, area):
    """Top contributors list view."""

    try:
        page = int(request.GET.get('page', 1))
    except ValueError:
        page = 1
    page_size = 100

    locale = _validate_locale(request.GET.get('locale'))
    product = request.GET.get('product')
    if product:
        product = get_object_or_404(Product, slug=product)

    if area == 'army-of-awesome':
        results, total = top_contributors_aoa(
            locale=locale, count=page_size, page=page)
        locales = settings.SUMO_LANGUAGES
    elif area == 'questions':
        results, total = top_contributors_questions(
            locale=locale, product=product, count=page_size, page=page)
        locales = QuestionLocale.objects.locales_list()
    elif area == 'kb':
        results, total = top_contributors_kb(
            product=product, count=page_size, page=page)
        locales = None
    elif area == 'l10n':
        results, total = top_contributors_l10n(
            locale=locale, product=product, count=page_size, page=page)
        locales = settings.SUMO_LANGUAGES
    else:
        raise Http404

    return render(request, 'community/top_contributors.html', {
        'results': results,
        'total': total,
        'area': area,
        'locale': locale,
        'locales': locales,
        'product': product,
        'products': Product.objects.filter(visible=True),
        'page': page,
        'page_size': page_size,
    })
Пример #14
0
def top_contributors(request, area):
    """Top contributors list view."""

    locale = request.GET.get('locale')

    if area == 'army-of-awesome':
        results = top_contributors_aoa(count=50)
    elif area == 'questions':
        results = top_contributors_questions(locale=locale, count=50)
    elif area == 'kb':
        results = top_contributors_kb(count=50)
    elif area == 'l10n':
        results = top_contributors_l10n(locale=locale, count=50)
    else:
        raise Http404

    return render(request, 'community/top_contributors.html', {
        'results': results,
        'area': area,
    })
Пример #15
0
def top_contributors(request, area):
    """Top contributors list view."""

    locale = _validate_locale(request.GET.get('locale'))
    product = request.GET.get('product')
    if product:
        product = get_object_or_404(Product, slug=product)

    if area == 'army-of-awesome':
        results = top_contributors_aoa(locale=locale, count=50)
        locales = settings.SUMO_LANGUAGES
    elif area == 'questions':
        results = top_contributors_questions(locale=locale,
                                             product=product,
                                             count=50)
        locales = settings.AAQ_LANGUAGES
    elif area == 'kb':
        results = top_contributors_kb(product=product, count=50)
        locales = None
    elif area == 'l10n':
        results = top_contributors_l10n(locale=locale,
                                        product=product,
                                        count=50)
        locales = settings.SUMO_LANGUAGES
    else:
        raise Http404

    return render(
        request, 'community/top_contributors.html', {
            'results': results,
            'area': area,
            'locale': locale,
            'locales': locales,
            'product': product,
            'products': Product.objects.filter(visible=True),
        })