Ejemplo n.º 1
0
def test_scores_user(member, system):
    score_data = scores.get(member.__class__)(member)

    assert isinstance(score_data, UserScores)
    assert score_data.ns == "pootle.score.user"
    assert score_data.sw_version == PootleScoreConfig.version
    assert score_data.context == member
    assert score_data.public_score == member.public_score
    assert (list(score_data.get_scores_by_language(10)) == list(
        score_data.get_scores(10).order_by("tp__language").values(
            "tp__language").annotate(Sum("score"))))
    top_lang = score_data.get_scores_by_language(20).order_by(
        "score__sum").first()
    top_lang = Language.objects.get(id=top_lang["tp__language"])
    assert (score_data.get_top_language_within(20) == top_lang)
    assert (score_data.get_language_top_scores(top_lang) == scores.get(
        Language)(top_lang).top_scorers)
    top_lang = score_data.get_top_language_within(100)
    language_scores = score_data.get_language_top_scores(top_lang)
    for index, user_score in enumerate(language_scores):
        if user_score['user__username'] == member.username:
            assert (score_data.get_top_language(100) == (index + 1, top_lang))
            break
    assert (score_data.top_language == score_data.get_top_language(30))
    project_directory = Directory.objects.get(pootle_path="/projects/")
    assert (
        score_data.revision == revision.get(Directory)(project_directory).get(
            key="stats"))
    assert (score_data.cache_key == (
        "%s.%s.%s" % (member.id, timezone.now().date(), score_data.revision)))
    # system gets no rank
    sys_score_data = scores.get(system.__class__)(system)
    assert (sys_score_data.top_language == (-1, None))
Ejemplo n.º 2
0
def test_scores_user(member, system):
    score_data = scores.get(member.__class__)(member)

    assert isinstance(score_data, UserScores)
    assert score_data.ns == "pootle.score.user"
    assert score_data.sw_version == PootleScoreConfig.version
    assert score_data.context == member
    assert score_data.public_score == member.public_score
    assert(
        list(score_data.get_scores_by_language(10))
        == list(
            score_data.get_scores(10).order_by(
                "tp__language").values("tp__language").annotate(Sum("score"))))
    top_lang = score_data.get_scores_by_language(20).order_by("score__sum").first()
    top_lang = Language.objects.get(id=top_lang["tp__language"])
    assert (
        score_data.get_top_language_within(20)
        == top_lang)
    assert (
        score_data.get_language_top_scores(top_lang)
        == scores.get(Language)(top_lang).top_scorers)
    top_lang = score_data.get_top_language_within(100)
    language_scores = score_data.get_language_top_scores(top_lang)
    for index, user_score in enumerate(language_scores):
        if user_score['user__username'] == member.username:
            assert (
                score_data.get_top_language(100)
                == (index + 1, top_lang))
            break
    assert (
        score_data.top_language
        == score_data.get_top_language(30))
    project_directory = Directory.objects.get(pootle_path="/projects/")
    assert (
        score_data.revision
        == revision.get(Directory)(
            project_directory).get(key="stats"))
    assert (
        score_data.cache_key
        == ("%s.%s.%s"
            % (member.id,
               timezone.now().date(),
               score_data.revision)))
    # system gets no rank
    sys_score_data = scores.get(system.__class__)(system)
    assert (
        sys_score_data.top_language
        == (-1, None))
Ejemplo n.º 3
0
def test_view_user_detail(client, member, system):
    response = client.get(
        reverse('pootle-user-profile', kwargs=dict(username=member.username)))
    assert isinstance(response.context["view"], UserDetailView)
    user_scores = scores.get(member.__class__)(member)
    assert response.context["user_score"] == user_scores.public_score
    assert response.context["user_top_language"] == user_scores.top_language
Ejemplo n.º 4
0
 def get_context_data(self, **kwargs):
     context = super(UserDetailView, self).get_context_data(**kwargs)
     context['user_is_manager'] = self.request.user.has_manager_permissions()
     user_scores = scores.get(User)(self.object)
     context['user_score'] = user_scores.public_score
     context["user_top_language"] = user_scores.top_language
     return context
Ejemplo n.º 5
0
def test_scores_project_set(project_set):
    score_data = scores.get(project_set.__class__)(project_set)
    assert isinstance(score_data, ProjectSetScores)
    _test_scores("projects", project_set, score_data)
    assert (score_data.cache_key == (
        "%s.%s" % (timezone.now().date(), score_data.revision)))
    qs = score_data.scores_within_days(30)
    assert score_data.filter_scores(qs) is qs
Ejemplo n.º 6
0
def test_inclusion_tag_top_scorers(project_set, member):
    score_data = scores.get(project_set.__class__)(project_set)
    rendered = _render_str(
        "{% load common_tags %}{% top_scorers user score_data %}",
        context=dict(user=member, score_data=score_data.display()))
    top_scorer = list(score_data.display())[0]
    assert top_scorer["public_total_score"] in rendered
    assert top_scorer["user"].email_hash in rendered
Ejemplo n.º 7
0
def test_scores_project(project0):
    score_data = scores.get(project0.__class__)(project0)
    assert isinstance(score_data, ProjectScores)
    _test_scores("project", project0, score_data)
    assert (score_data.cache_key == (
        "%s.%s.%s" % (project0.code, localdate(), score_data.revision)))
    qs = score_data.scores_within_days(30)
    assert (list(score_data.filter_scores(qs)) == list(
        qs.filter(tp__project_id=project0.id)))
Ejemplo n.º 8
0
def test_scores_language(language0):
    score_data = scores.get(language0.__class__)(language0)
    assert isinstance(score_data, LanguageScores)
    _test_scores("language", language0, score_data)
    assert (score_data.cache_key == (
        "%s.%s.%s" % (language0.code, localdate(), score_data.revision)))
    qs = score_data.scores_within_days(30)
    assert (list(score_data.filter_scores(qs)) == list(
        qs.filter(tp__language_id=language0.id)))
Ejemplo n.º 9
0
 def get_context_data(self, **kwargs):
     context = super(UserDetailView, self).get_context_data(**kwargs)
     context['user_is_manager'] = self.request.user.has_manager_permissions()
     user_scores = scores.get(User)(self.object)
     context['user_score'] = user_scores.public_score
     context["user_top_language"] = user_scores.top_language
     context["user_last_event"] = self.request.user.last_event(
         locale=self.request_lang)
     return context
Ejemplo n.º 10
0
def test_view_user_detail(client, member, system):
    response = client.get(
        reverse(
            'pootle-user-profile',
            kwargs=dict(username=member.username)))
    assert isinstance(response.context["view"], UserDetailView)
    user_scores = scores.get(member.__class__)(member)
    assert response.context["user_score"] == user_scores.public_score
    assert response.context["user_top_language"] == user_scores.top_language
Ejemplo n.º 11
0
def test_view_projects_browse(client, request_users):
    user = request_users["user"]
    client.login(
        username=user.username,
        password=request_users["password"])
    response = client.get(reverse("pootle-projects-browse"))
    assert response.cookies["pootle-language"].value == "projects"
    ctx = response.context
    request = response.wsgi_request
    user_projects = Project.accessible_by_user(request.user)
    user_projects = (
        Project.objects.for_user(request.user)
                       .filter(code__in=user_projects))
    obj = ProjectSet(user_projects)
    stats = obj.data_tool.get_stats(user=request.user)

    if request.user.is_superuser:
        url_action_continue = obj.get_translate_url(state='incomplete')
        url_action_fixcritical = obj.get_critical_url()
        url_action_review = obj.get_translate_url(state='suggestions')
        url_action_view_all = obj.get_translate_url(state='all')
    else:
        (url_action_continue,
         url_action_fixcritical,
         url_action_review,
         url_action_view_all) = [None] * 4
    checks = ChecksDisplay(obj).checks_by_category
    stats = StatsDisplay(obj, stats=stats).stats
    del stats["children"]
    chunk_size = TOP_CONTRIBUTORS_CHUNK_SIZE
    score_data = scores.get(ProjectSet)(obj)

    def scores_to_json(score):
        score["user"] = score["user"].to_dict()
        return score
    top_scorers = score_data.display(
        limit=chunk_size,
        formatter=scores_to_json)
    top_scorer_data = dict(
        items=list(top_scorers),
        has_more_items=len(score_data.top_scorers) > chunk_size)
    assertions = dict(
        page="browse",
        pootle_path="/projects/",
        resource_path="",
        resource_path_parts=[],
        object=obj,
        browser_extends="projects/all/base.html",
        top_scorers=top_scorer_data,
        translation_states=get_translation_states(obj),
        url_action_continue=url_action_continue,
        url_action_fixcritical=url_action_fixcritical,
        url_action_review=url_action_review,
        url_action_view_all=url_action_view_all,
        checks=checks,
        stats=stats)
    view_context_test(ctx, **assertions)
Ejemplo n.º 12
0
def test_inclusion_tag_top_scorers(project_set, member):
    score_data = scores.get(project_set.__class__)(project_set)
    rendered = _render_str(
        "{% load common_tags %}{% top_scorers user score_data %}",
        context=dict(
            user=member,
            score_data=score_data.display()))
    top_scorer = list(score_data.display())[0]
    assert top_scorer["public_total_score"] in rendered
    assert top_scorer["user"].email_hash in rendered
Ejemplo n.º 13
0
def test_scores_tp(tp0):
    score_data = scores.get(tp0.__class__)(tp0)
    assert isinstance(score_data, TPScores)
    _test_scores("tp", tp0, score_data)
    assert (score_data.cache_key == (
        "%s/%s.%s.%s" % (tp0.language.code, tp0.project.code,
                         timezone.now().date(), score_data.revision)))
    qs = score_data.scores_within_days(30)
    assert (list(score_data.filter_scores(qs)) == list(
        qs.filter(tp_id=tp0.id)))
Ejemplo n.º 14
0
def test_scores_project_set(project_set):
    score_data = scores.get(project_set.__class__)(project_set)
    assert isinstance(score_data, ProjectSetScores)
    _test_scores("projects", project_set, score_data)
    assert (
        score_data.cache_key
        == ("%s.%s"
            % (timezone.now().date(),
               score_data.revision)))
    qs = score_data.scores_within_days(30)
    assert score_data.filter_scores(qs) is qs
Ejemplo n.º 15
0
def test_view_projects_browse(client, request_users):
    user = request_users["user"]
    client.login(username=user.username, password=request_users["password"])
    response = client.get(reverse("pootle-projects-browse"))
    assert response.cookies["pootle-language"].value == "projects"
    ctx = response.context
    request = response.wsgi_request
    user_projects = Project.accessible_by_user(request.user)
    user_projects = (Project.objects.for_user(
        request.user).filter(code__in=user_projects))
    obj = ProjectSet(user_projects)
    stats = obj.data_tool.get_stats(user=request.user)

    if request.user.is_superuser:
        url_action_continue = obj.get_translate_url(state='incomplete')
        url_action_fixcritical = obj.get_critical_url()
        url_action_review = obj.get_translate_url(state='suggestions')
        url_action_view_all = obj.get_translate_url(state='all')
    else:
        (url_action_continue, url_action_fixcritical, url_action_review,
         url_action_view_all) = [None] * 4
    checks = ChecksDisplay(obj).checks_by_category
    stats = StatsDisplay(obj, stats=stats).stats
    del stats["children"]
    chunk_size = TOP_CONTRIBUTORS_CHUNK_SIZE
    score_data = scores.get(ProjectSet)(obj)

    def scores_to_json(score):
        score["user"] = score["user"].to_dict()
        return score

    top_scorers = score_data.display(limit=chunk_size,
                                     formatter=scores_to_json)
    top_scorer_data = dict(
        items=list(top_scorers),
        has_more_items=len(score_data.top_scorers) > chunk_size)
    assertions = dict(page="browse",
                      pootle_path="/projects/",
                      resource_path="",
                      resource_path_parts=[],
                      object=obj,
                      browser_extends="projects/all/base.html",
                      top_scorers=top_scorer_data,
                      translation_states=get_translation_states(obj),
                      url_action_continue=url_action_continue,
                      url_action_fixcritical=url_action_fixcritical,
                      url_action_review=url_action_review,
                      url_action_view_all=url_action_view_all,
                      checks=checks,
                      stats=stats)
    view_context_test(ctx, **assertions)
Ejemplo n.º 16
0
def test_scores_language(language0):
    score_data = scores.get(language0.__class__)(language0)
    assert isinstance(score_data, LanguageScores)
    _test_scores("language", language0, score_data)
    assert (
        score_data.cache_key
        == ("%s.%s.%s"
            % (language0.code,
               timezone.now().date(),
               score_data.revision)))
    qs = score_data.scores_within_days(30)
    assert (
        list(score_data.filter_scores(qs))
        == list(qs.filter(tp__language_id=language0.id)))
Ejemplo n.º 17
0
def test_scores_project(project0):
    score_data = scores.get(project0.__class__)(project0)
    assert isinstance(score_data, ProjectScores)
    _test_scores("project", project0, score_data)
    assert (
        score_data.cache_key
        == ("%s.%s.%s"
            % (project0.code,
               timezone.now().date(),
               score_data.revision)))
    qs = score_data.scores_within_days(30)
    assert (
        list(score_data.filter_scores(qs))
        == list(qs.filter(tp__project_id=project0.id)))
Ejemplo n.º 18
0
def get_top_scorers_test_data(obj, offset=0):
    score_data = scores.get(obj.__class__)(obj)
    chunk_size = TOP_CONTRIBUTORS_CHUNK_SIZE

    def scores_to_json(score):
        score["user"] = score["user"].to_dict()
        return score
    top_scorers = score_data.display(
        offset=offset,
        limit=chunk_size,
        formatter=scores_to_json)
    return dict(
        items=list(top_scorers),
        has_more_items=len(score_data.top_scorers) > (offset + chunk_size))
Ejemplo n.º 19
0
def _test_browse_view(language, request, response, kwargs):
    assert response.cookies["pootle-language"].value == language.code
    assert (request.user.is_anonymous
            or "announcements/%s" % language.code in request.session)
    ctx = response.context
    user_tps = language.get_children_for_user(request.user)
    stats = language.data_tool.get_stats(user=request.user)
    items = [make_project_item(tp) for tp in user_tps]
    for item in items:
        if item["code"] in stats["children"]:
            item["stats"] = stats["children"][item["code"]]
    checks = ChecksDisplay(language).checks_by_category
    stats = StatsDisplay(language, stats=stats).stats
    del stats["children"]
    score_data = scores.get(language.__class__)(language)
    chunk_size = TOP_CONTRIBUTORS_CHUNK_SIZE

    def scores_to_json(score):
        score["user"] = score["user"].to_dict()
        return score

    top_scorers = score_data.display(limit=chunk_size,
                                     formatter=scores_to_json)
    top_scorer_data = dict(
        items=list(top_scorers),
        has_more_items=len(score_data.top_scorers) > chunk_size)
    assertions = dict(
        page="browse",
        object=language,
        language={
            'code': language.code,
            'name': language.name
        },
        browser_extends="languages/base.html",
        pootle_path="/%s/" % language.code,
        resource_path="",
        resource_path_parts=[],
        url_action_continue=language.get_translate_url(state='incomplete'),
        url_action_fixcritical=language.get_critical_url(),
        url_action_review=language.get_translate_url(state='suggestions'),
        url_action_view_all=language.get_translate_url(state='all'),
        # check_categories=get_qualitycheck_schema(language),
        translation_states=get_translation_states(language),
        top_scorers=top_scorer_data,
        checks=checks,
        stats=stats)
    sidebar = get_sidebar_announcements_context(request, (language, ))
    for k in ["has_sidebar", "is_sidebar_open", "announcements"]:
        assertions[k] = sidebar[k]
    view_context_test(ctx, **assertions)
Ejemplo n.º 20
0
def _test_browse_view(language, request, response, kwargs):
    assert response.cookies["pootle-language"].value == language.code
    assert (request.user.is_anonymous
            or "announcements/%s" % language.code in request.session)
    ctx = response.context
    user_tps = language.get_children_for_user(request.user)
    stats = language.data_tool.get_stats(user=request.user)
    items = [make_project_item(tp) for tp in user_tps]
    for item in items:
        if item["code"] in stats["children"]:
            item["stats"] = stats["children"][item["code"]]
    checks = ChecksDisplay(language).checks_by_category
    stats = StatsDisplay(language, stats=stats).stats
    del stats["children"]
    score_data = scores.get(language.__class__)(language)
    chunk_size = TOP_CONTRIBUTORS_CHUNK_SIZE

    def scores_to_json(score):
        score["user"] = score["user"].to_dict()
        return score
    top_scorers = score_data.display(
        limit=chunk_size,
        formatter=scores_to_json)
    top_scorer_data = dict(
        items=list(top_scorers),
        has_more_items=len(score_data.top_scorers) > chunk_size)
    assertions = dict(
        page="browse",
        object=language,
        language={
            'code': language.code,
            'name': language.name},
        browser_extends="languages/base.html",
        pootle_path="/%s/" % language.code,
        resource_path="",
        resource_path_parts=[],
        url_action_continue=language.get_translate_url(state='incomplete'),
        url_action_fixcritical=language.get_critical_url(),
        url_action_review=language.get_translate_url(state='suggestions'),
        url_action_view_all=language.get_translate_url(state='all'),
        # check_categories=get_qualitycheck_schema(language),
        translation_states=get_translation_states(language),
        top_scorers=top_scorer_data,
        checks=checks,
        stats=stats)
    sidebar = get_sidebar_announcements_context(request, (language, ))
    for k in ["has_sidebar", "is_sidebar_open", "announcements"]:
        assertions[k] = sidebar[k]
    view_context_test(ctx, **assertions)
Ejemplo n.º 21
0
def test_scores_tp(tp0):
    score_data = scores.get(tp0.__class__)(tp0)
    assert isinstance(score_data, TPScores)
    _test_scores("tp", tp0, score_data)
    assert (
        score_data.cache_key
        == ("%s/%s.%s.%s"
            % (tp0.language.code,
               tp0.project.code,
               timezone.now().date(),
               score_data.revision)))
    qs = score_data.scores_within_days(30)
    assert (
        list(score_data.filter_scores(qs))
        == list(qs.filter(tp_id=tp0.id)))
Ejemplo n.º 22
0
 def get_language_top_scores(self, language):
     return scores.get(language.__class__)(language).top_scorers
Ejemplo n.º 23
0
Archivo: utils.py Proyecto: arky/pootle
 def scores(self):
     return scores.get(self.user.__class__)(self.user)
Ejemplo n.º 24
0
Archivo: tp.py Proyecto: arky/pootle
def _test_browse_view(tp, request, response, kwargs):
    assert (request.user.is_anonymous
            or "announcements/projects/%s" % tp.project.code in request.session)
    assert (request.user.is_anonymous
            or "announcements/%s" % tp.language.code in request.session)
    assert (request.user.is_anonymous
            or "announcements/%s/%s" % (tp.language.code, tp.project.code)
            in request.session)
    ctx = response.context
    kwargs["project_code"] = tp.project.code
    kwargs["language_code"] = tp.language.code
    resource_path = "%(dir_path)s%(filename)s" % kwargs
    pootle_path = "%s%s" % (tp.pootle_path, resource_path)

    if not (kwargs["dir_path"] or kwargs.get("filename")):
        obj = tp.directory
    elif not kwargs.get("filename"):
        obj = Directory.objects.get(
            pootle_path=pootle_path)
    else:
        obj = Store.objects.get(
            pootle_path=pootle_path)
    if obj.tp_path == "/":
        data_obj = obj.tp
    else:
        data_obj = obj
    stats = StatsDisplay(
        data_obj,
        stats=data_obj.data_tool.get_stats(user=request.user)).stats
    if not kwargs.get("filename"):
        vfolders = True
    else:
        vfolders = None
    filters = {}
    if vfolders:
        filters['sort'] = 'priority'
    checks = ChecksDisplay(obj).checks_by_category
    del stats["children"]

    score_data = scores.get(tp.__class__)(tp)
    chunk_size = TOP_CONTRIBUTORS_CHUNK_SIZE
    top_scorers = score_data.top_scorers

    def scores_to_json(score):
        score["user"] = score["user"].to_dict()
        return score
    top_scorers = score_data.display(
        limit=chunk_size,
        formatter=scores_to_json)
    top_scorer_data = dict(
        items=list(top_scorers),
        has_more_items=len(score_data.top_scorers) > chunk_size)
    assertions = dict(
        page="browse",
        object=obj,
        translation_project=tp,
        language=tp.language,
        project=tp.project,
        has_admin_access=check_permission('administrate', request),
        is_store=(kwargs.get("filename") and True or False),
        browser_extends="translation_projects/base.html",
        pootle_path=pootle_path,
        resource_path=resource_path,
        resource_path_parts=get_path_parts(resource_path),
        translation_states=get_translation_states(obj),
        checks=checks,
        top_scorers=top_scorer_data,
        url_action_continue=obj.get_translate_url(
            state='incomplete', **filters),
        url_action_fixcritical=obj.get_critical_url(**filters),
        url_action_review=obj.get_translate_url(
            state='suggestions', **filters),
        url_action_view_all=obj.get_translate_url(state='all'),
        stats=stats,
        parent=get_parent(obj))
    sidebar = get_sidebar_announcements_context(
        request, (tp.project, tp.language, tp))
    for k in ["has_sidebar", "is_sidebar_open", "announcements"]:
        assertions[k] = sidebar[k]
    view_context_test(ctx, **assertions)
    assert (('display_download' in ctx and ctx['display_download']) ==
            (request.user.is_authenticated
             and check_permission('translate', request)))
Ejemplo n.º 25
0
 def scores(self):
     return scores.get(self.score_context.__class__)(self.score_context)
Ejemplo n.º 26
0
 def scores(self):
     return scores.get(self.user.__class__)(self.user)
Ejemplo n.º 27
0
Archivo: index.py Proyecto: ii0/pootle
 def score_data(self):
     return scores.get(ProjectSet)(
         self.project_set).display(language=self.request_lang)
Ejemplo n.º 28
0
 def scores(self):
     return scores.get(
         self.score_context.__class__)(
             self.score_context)
Ejemplo n.º 29
0
def _test_browse_view(tp, request, response, kwargs):
    assert (request.user.is_anonymous or
            "announcements/projects/%s" % tp.project.code in request.session)
    assert (request.user.is_anonymous
            or "announcements/%s" % tp.language.code in request.session)
    assert (request.user.is_anonymous or "announcements/%s/%s" %
            (tp.language.code, tp.project.code) in request.session)
    ctx = response.context
    kwargs["project_code"] = tp.project.code
    kwargs["language_code"] = tp.language.code
    resource_path = "%(dir_path)s%(filename)s" % kwargs
    pootle_path = "%s%s" % (tp.pootle_path, resource_path)

    if not (kwargs["dir_path"] or kwargs.get("filename")):
        obj = tp.directory
    elif not kwargs.get("filename"):
        obj = Directory.objects.get(pootle_path=pootle_path)
    else:
        obj = Store.objects.get(pootle_path=pootle_path)
    if obj.tp_path == "/":
        data_obj = obj.tp
    else:
        data_obj = obj
    stats = StatsDisplay(
        data_obj, stats=data_obj.data_tool.get_stats(user=request.user)).stats
    if not kwargs.get("filename"):
        vfolders = True
    else:
        vfolders = None
    filters = {}
    if vfolders:
        filters['sort'] = 'priority'
    checks = ChecksDisplay(obj).checks_by_category
    del stats["children"]

    score_data = scores.get(tp.__class__)(tp)
    chunk_size = TOP_CONTRIBUTORS_CHUNK_SIZE
    top_scorers = score_data.top_scorers

    def scores_to_json(score):
        score["user"] = score["user"].to_dict()
        return score

    top_scorers = score_data.display(limit=chunk_size,
                                     formatter=scores_to_json)
    top_scorer_data = dict(
        items=list(top_scorers),
        has_more_items=len(score_data.top_scorers) > chunk_size)
    assertions = dict(
        page="browse",
        object=obj,
        translation_project=tp,
        language=tp.language,
        project=tp.project,
        has_admin_access=check_permission('administrate', request),
        is_store=(kwargs.get("filename") and True or False),
        browser_extends="translation_projects/base.html",
        pootle_path=pootle_path,
        resource_path=resource_path,
        resource_path_parts=get_path_parts(resource_path),
        translation_states=get_translation_states(obj),
        checks=checks,
        top_scorers=top_scorer_data,
        url_action_continue=obj.get_translate_url(state='incomplete',
                                                  **filters),
        url_action_fixcritical=obj.get_critical_url(**filters),
        url_action_review=obj.get_translate_url(state='suggestions',
                                                **filters),
        url_action_view_all=obj.get_translate_url(state='all'),
        stats=stats,
        parent=get_parent(obj))
    sidebar = get_sidebar_announcements_context(request,
                                                (tp.project, tp.language, tp))
    for k in ["has_sidebar", "is_sidebar_open", "announcements"]:
        assertions[k] = sidebar[k]
    view_context_test(ctx, **assertions)
    assert (('display_download' in ctx
             and ctx['display_download']) == (request.user.is_authenticated
                                              and check_permission(
                                                  'translate', request)))
Ejemplo n.º 30
0
def _test_browse_view(project, request, response, kwargs):
    assert (request.user.is_anonymous
            or "announcements/projects/%s" % project.code in request.session)
    ctx = response.context
    kwargs["project_code"] = project.code
    resource_path = (
        "%(dir_path)s%(filename)s" % kwargs)
    project_path = (
        "%s/%s"
        % (kwargs["project_code"], resource_path))
    if not (kwargs["dir_path"] or kwargs["filename"]):
        obj = project
    elif not kwargs["filename"]:
        obj = ProjectResource(
            Directory.objects.live().filter(
                pootle_path__regex="^/.*/%s$" % project_path),
            pootle_path="/projects/%s" % project_path)
    else:
        obj = ProjectResource(
            Store.objects.live().filter(
                pootle_path__regex="^/.*/%s$" % project_path),
            pootle_path="/projects/%s" % project_path)

    stats = obj.data_tool.get_stats(user=request.user)

    if request.user.is_superuser or kwargs.get("language_code"):
        url_action_continue = obj.get_translate_url(state='incomplete')
        url_action_fixcritical = obj.get_critical_url()
        url_action_review = obj.get_translate_url(state='suggestions')
        url_action_view_all = obj.get_translate_url(state='all')
    else:
        (url_action_continue,
         url_action_fixcritical,
         url_action_review,
         url_action_view_all) = [None] * 4
    checks = ChecksDisplay(obj).checks_by_category
    stats = StatsDisplay(obj, stats=stats).stats
    del stats["children"]

    chunk_size = TOP_CONTRIBUTORS_CHUNK_SIZE
    score_data = scores.get(Project)(project)

    def scores_to_json(score):
        score["user"] = score["user"].to_dict()
        return score
    top_scorers = score_data.display(
        limit=chunk_size,
        formatter=scores_to_json)
    top_scorer_data = dict(
        items=list(top_scorers),
        has_more_items=len(score_data.top_scorers) > chunk_size)
    assertions = dict(
        page="browse",
        project=project,
        browser_extends="projects/base.html",
        pootle_path="/projects/%s" % project_path,
        resource_path=resource_path,
        resource_path_parts=get_path_parts(resource_path),
        url_action_continue=url_action_continue,
        url_action_fixcritical=url_action_fixcritical,
        url_action_review=url_action_review,
        url_action_view_all=url_action_view_all,
        translation_states=get_translation_states(obj),
        top_scorers=top_scorer_data,
        checks=checks,
        stats=stats)
    sidebar = get_sidebar_announcements_context(
        request, (project, ))
    for k in ["has_sidebar", "is_sidebar_open", "announcements"]:
        assertions[k] = sidebar[k]
    view_context_test(ctx, **assertions)
Ejemplo n.º 31
0
 def score_data(self):
     return scores.get(ProjectSet)(
         self.project_set).display(language=self.request_lang)
Ejemplo n.º 32
0
 def get_language_top_scores(self, language):
     return scores.get(language.__class__)(language).top_scorers
Ejemplo n.º 33
0
def _test_browse_view(project, request, response, kwargs):
    assert (request.user.is_anonymous
            or "announcements/projects/%s" % project.code in request.session)
    ctx = response.context
    kwargs["project_code"] = project.code
    resource_path = ("%(dir_path)s%(filename)s" % kwargs)
    project_path = ("%s/%s" % (kwargs["project_code"], resource_path))
    if not (kwargs["dir_path"] or kwargs["filename"]):
        obj = project
    elif not kwargs["filename"]:
        obj = ProjectResource(Directory.objects.live().filter(
            pootle_path__regex="^/.*/%s$" % project_path),
                              pootle_path="/projects/%s" % project_path)
    else:
        obj = ProjectResource(Store.objects.live().filter(
            pootle_path__regex="^/.*/%s$" % project_path),
                              pootle_path="/projects/%s" % project_path)

    stats = obj.data_tool.get_stats(user=request.user)

    if request.user.is_superuser or kwargs.get("language_code"):
        url_action_continue = obj.get_translate_url(state='incomplete')
        url_action_fixcritical = obj.get_critical_url()
        url_action_review = obj.get_translate_url(state='suggestions')
        url_action_view_all = obj.get_translate_url(state='all')
    else:
        (url_action_continue, url_action_fixcritical, url_action_review,
         url_action_view_all) = [None] * 4
    checks = ChecksDisplay(obj).checks_by_category
    stats = StatsDisplay(obj, stats=stats).stats
    del stats["children"]

    chunk_size = TOP_CONTRIBUTORS_CHUNK_SIZE
    score_data = scores.get(Project)(project)

    def scores_to_json(score):
        score["user"] = score["user"].to_dict()
        return score

    top_scorers = score_data.display(limit=chunk_size,
                                     formatter=scores_to_json)
    top_scorer_data = dict(
        items=list(top_scorers),
        has_more_items=len(score_data.top_scorers) > chunk_size)
    assertions = dict(page="browse",
                      project=project,
                      browser_extends="projects/base.html",
                      pootle_path="/projects/%s" % project_path,
                      resource_path=resource_path,
                      resource_path_parts=get_path_parts(resource_path),
                      url_action_continue=url_action_continue,
                      url_action_fixcritical=url_action_fixcritical,
                      url_action_review=url_action_review,
                      url_action_view_all=url_action_view_all,
                      translation_states=get_translation_states(obj),
                      top_scorers=top_scorer_data,
                      checks=checks,
                      stats=stats)
    sidebar = get_sidebar_announcements_context(request, (project, ))
    for k in ["has_sidebar", "is_sidebar_open", "announcements"]:
        assertions[k] = sidebar[k]
    view_context_test(ctx, **assertions)