def gentopstats_project(project):
    """Generate the top contributor stats to be displayed
    for an entire Pootle installation, a language or a project.
    The output of this function looks something like this:
      {'data':        [],
       'headerlabel': u'Suggestions'},
      {'data':        [],
       'headerlabel': u'Reviews'},
      {'data':        [],
       'headerlabel': u'Submissions'}]
    """
    key = "%s:gentopstats" % project.pootle_path
    result = cache.get(key)
    if result is None:
        top_sugg = group_by_sort(
            User.objects.filter(
                pootleprofile__suggester__translation_project__project=project
            ), 'pootleprofile__suggester',
            ['username'])[:settings.TOPSTAT_SIZE]
        top_review = group_by_sort(
            User.objects.filter(
                pootleprofile__reviewer__translation_project__project=project),
            'pootleprofile__reviewer', ['username'])[:settings.TOPSTAT_SIZE]
        top_sub = group_by_sort(
            User.objects.filter(
                pootleprofile__submission__translation_project__project=project
            ), 'pootleprofile__submission',
            ['username'])[:settings.TOPSTAT_SIZE]

        result = map(None, top_sugg, top_review, top_sub)
        cache.set(key, result, settings.CACHE_MIDDLEWARE_SECONDS * 2)
    return result
Beispiel #2
0
def gentopstats_project(project):
    """Generate the top contributor stats to be displayed
    for an entire Pootle installation, a language or a project.
    The output of this function looks something like this:
      {'data':        [],
       'headerlabel': u'Suggestions'},
      {'data':        [],
       'headerlabel': u'Reviews'},
      {'data':        [],
       'headerlabel': u'Submissions'}]
    """
    key = iri_to_uri("%s:gentopstats" % project.pootle_path)
    result = cache.get(key)
    if result is None:
        top_sugg   = group_by_sort(
            User.objects.filter(
                pootleprofile__suggester__translation_project__project=
                project),
            'pootleprofile__suggester', ['username'])[:settings.TOPSTAT_SIZE]
        top_review = group_by_sort(
            User.objects.filter(
                pootleprofile__reviewer__translation_project__project=
                project),
            'pootleprofile__reviewer', ['username'])[:settings.TOPSTAT_SIZE]
        top_sub    = group_by_sort(
            User.objects.filter(
                pootleprofile__submission__translation_project__project=
                project),
            'pootleprofile__submission', ['username'])[:settings.TOPSTAT_SIZE]

        result = map(None, top_sugg, top_review, top_sub)
        cache.set(key, result, settings.CACHE_MIDDLEWARE_SECONDS * 2)
    return result
Beispiel #3
0
def gentopstats_project(project):
    """Generate the top contributor stats to be displayed
    for an entire Pootle installation, a language or a project.
    The output of this function looks something like this:
      {'data':        [],
       'headerlabel': u'Suggestions'},
      {'data':        [],
       'headerlabel': u'Reviews'},
      {'data':        [],
       'headerlabel': u'Submissions'}]
    """
    key = iri_to_uri("%s:gentopstats" % project.pootle_path)
    result = cache.get(key)
    if result is None:
        top_sugg = group_by_sort(
            User.objects.filter(
                suggestions__translation_project__project=project),
            "suggestions", ["username"])[:settings.TOPSTAT_SIZE]
        top_review = group_by_sort(
            User.objects.filter(
                reviewer__translation_project__project=project), "reviewer",
            ["username"])[:settings.TOPSTAT_SIZE]
        top_sub = group_by_sort(
            User.objects.filter(
                submission__translation_project__project=project),
            "submission", ["username"])[:settings.TOPSTAT_SIZE]

        result = map(None, top_sugg, top_review, top_sub)
        cache.set(key, result, settings.POOTLE_TOP_STATS_CACHE_TIMEOUT)
    return result
Beispiel #4
0
def gentopstats_root():
    """
    Generate the top contributor stats to be displayed for an entire
    Pootle installation.
    """
    top_sugg   = group_by_sort(User.objects.filter(pootleprofile__suggester__isnull=False),
                               'pootleprofile__suggester', ['username'])[:settings.TOPSTAT_SIZE]
    top_review = group_by_sort(User.objects.filter(pootleprofile__reviewer__isnull=False),
                               'pootleprofile__reviewer', ['username'])[:settings.TOPSTAT_SIZE]
    top_sub    = group_by_sort(User.objects.filter(pootleprofile__submission__isnull=False),
                               'pootleprofile__submission', ['username'])[:settings.TOPSTAT_SIZE]

    return [
        {'data': top_sugg, 'headerlabel': _('Suggestions')},
        {'data': top_review, 'headerlabel': _('Reviews')},
        {'data': top_sub, 'headerlabel': _('Submissions')} ]
Beispiel #5
0
def gentopstats_root():
    """
    Generate the top contributor stats to be displayed for an entire
    Pootle installation.
    """
    key = "/:gentopstats"
    result = cache.get(key)
    if result is None:
        top_sugg   = group_by_sort(User.objects.exclude(pootleprofile__suggester=None),
                                   'pootleprofile__suggester', ['username'])[:settings.TOPSTAT_SIZE]
        top_review = group_by_sort(User.objects.exclude(pootleprofile__reviewer=None),
                                   'pootleprofile__reviewer', ['username'])[:settings.TOPSTAT_SIZE]
        top_sub    = group_by_sort(User.objects.exclude(pootleprofile__submission=None),
                                   'pootleprofile__submission', ['username'])[:settings.TOPSTAT_SIZE]
        result = map(None, top_sugg, top_review, top_sub)
        cache.set(key, result, settings.POOTLE_TOP_STATS_CACHE_TIMEOUT)
    return result
Beispiel #6
0
def gentopstats_translation_project(translation_project):
    """Generate the top contributor stats to be displayed
    for an entire Pootle installation, a language or a project.
    The output of this function looks something like this:
      {'data':        [],
       'headerlabel': u'Suggestions'},
      {'data':        [],
       'headerlabel': u'Reviews'},
      {'data':        [],
       'headerlabel': u'Submissions'}]
    """
    top_sugg   = group_by_sort(User.objects.filter(pootleprofile__suggester__translation_project=translation_project),
                               'pootleprofile__suggester', ['username'])[:settings.TOPSTAT_SIZE]
    top_review = group_by_sort(User.objects.filter(pootleprofile__reviewer__translation_project=translation_project),
                               'pootleprofile__reviewer', ['username'])[:settings.TOPSTAT_SIZE]
    top_sub    = group_by_sort(User.objects.filter(pootleprofile__submission__translation_project=translation_project),
                               'pootleprofile__submission', ['username'])[:settings.TOPSTAT_SIZE]

    return [
        {'data': top_sugg, 'headerlabel': _('Suggestions')},
        {'data': top_review, 'headerlabel': _('Reviews')},
        {'data': top_sub, 'headerlabel': _('Submissions')} ]
Beispiel #7
0
def gentopstats_language(language):
    """Generate the top contributor stats to be displayed
    for an entire Pootle installation, a language or a project.
    The output of this function looks something like this:
      {'data':        [],
       'headerlabel': u'Suggestions'},
      {'data':        [],
       'headerlabel': u'Reviews'},
      {'data':        [],
       'headerlabel': u'Submissions'}]
    """
    key = iri_to_uri("%s:gentopstats" % language.pootle_path)
    result = cache.get(key)
    if result is None:
        top_sugg   = group_by_sort(User.objects.filter(suggestions__translation_project__language=language),
                                   'suggestions', ['username'])[:settings.TOPSTAT_SIZE]
        top_review = group_by_sort(User.objects.filter(reviewer__translation_project__language=language),
                                   'reviewer', ['username'])[:settings.TOPSTAT_SIZE]
        top_sub    = group_by_sort(User.objects.filter(submission__translation_project__language=language),
                                   'submission', ['username'])[:settings.TOPSTAT_SIZE]

        result = map(None, top_sugg, top_review, top_sub)
        cache.set(key, result, settings.POOTLE_TOP_STATS_CACHE_TIMEOUT)
    return result