def _test_export_view(tp, request, response, kwargs): ctx = response.context 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")): ob = tp.directory elif not kwargs.get("filename"): ob = Directory.objects.get( pootle_path=pootle_path) else: ob = Store.objects.get( pootle_path=pootle_path) filter_name, filter_extra = get_filter_name(request.GET) units_qs = Unit.objects.get_for_path( ob.pootle_path, request.profile) units_qs = get_step_query(request, units_qs) units_qs = units_qs.select_related('store') unit_groups = [ (path, list(units)) for path, units in groupby( units_qs, lambda x: x.store.pootle_path)] view_context_test( ctx, **dict( project=tp.project, language=tp.language, source_language=tp.project.source_language, filter_name=filter_name, filter_extra=filter_extra, unit_groups=unit_groups))
def _test_translate_view(project, request, response, kwargs, settings): ctx = response.context user = request.profile kwargs["project_code"] = project.code ctx_path = "/projects/%(project_code)s/" % kwargs resource_path = "%(dir_path)s%(filename)s" % kwargs pootle_path = "%s%s" % (ctx_path, resource_path) view_context_test( ctx, **dict( page="translate", is_admin=False, language=None, project=project, profile=user, pootle_path="%s%s" % (ctx_path, resource_path), ctx_path=ctx_path, resource_path=resource_path, resource_path_parts=get_path_parts(resource_path), editor_extends="projects/base.html", check_categories=get_qualitycheck_schema(), previous_url=get_previous_url(request), display_priority=(VirtualFolderTreeItem.objects.filter(pootle_path__startswith=pootle_path).exists()), cantranslate=check_permission("translate", request), cansuggest=check_permission("suggest", request), canreview=check_permission("review", request), search_form=make_search_form(request=request), current_vfolder_pk="", POOTLE_MT_BACKENDS=settings.POOTLE_MT_BACKENDS, AMAGAMA_URL=settings.AMAGAMA_URL, ) )
def test_view_projects_translate(site_permissions, site_matrix_with_vfolders, client, nobody, default, settings): response = client.get(reverse("pootle-projects-translate")) ctx = response.context request = response.wsgi_request assertions = dict( page="translate", is_admin=False, language=None, project=None, profile=request.profile, pootle_path="/projects/", ctx_path="/projects/", resource_path="", resource_path_parts=[], editor_extends="projects/all/base.html", check_categories=get_qualitycheck_schema(), previous_url=get_previous_url(request), display_priority=False, cantranslate=check_permission("translate", request), cansuggest=check_permission("suggest", request), canreview=check_permission("review", request), search_form=make_search_form(request=request), current_vfolder_pk="", POOTLE_MT_BACKENDS=settings.POOTLE_MT_BACKENDS, AMAGAMA_URL=settings.AMAGAMA_URL, ) view_context_test(ctx, **assertions)
def _test_export_view(project, request, response, kwargs): 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"]): ob = project elif not kwargs["filename"]: ob = ProjectResource( Directory.objects.live().filter(pootle_path__regex="^/.*/%s$" % project_path), pootle_path="/projects/%s" % project_path, ) else: ob = ProjectResource( Store.objects.live().filter(pootle_path__regex="^/.*/%s$" % project_path), pootle_path="/projects/%s" % project_path, ) filter_name, filter_extra = get_filter_name(request.GET) units_qs = Unit.objects.get_for_path(ob.pootle_path, request.profile) units_qs = get_step_query(request, units_qs) units_qs = units_qs.select_related("store") unit_groups = [(path, list(units)) for path, units in groupby(units_qs, lambda x: x.store.pootle_path)] assertions = dict( project=project, language=None, source_language="en", filter_name=filter_name, filter_extra=filter_extra, unit_groups=unit_groups, ) view_context_test(ctx, **assertions)
def _test_translate_view(language, request, response, kwargs, settings): ctx = response.context view_context_test( ctx, **dict( project=None, language=language, page="translate", ctx_path=language.directory.pootle_path, pootle_path=language.directory.pootle_path, resource_path="", resource_path_parts=[], profile=request.profile, editor_extends="languages/base.html", check_categories=get_qualitycheck_schema(), previous_url=get_previous_url(request), display_priority=False, is_admin=check_permission('administrate', request), cantranslate=check_permission("translate", request), cansuggest=check_permission("suggest", request), canreview=check_permission("review", request), search_form=make_search_form(request=request), current_vfolder_pk="", POOTLE_MT_BACKENDS=settings.POOTLE_MT_BACKENDS, AMAGAMA_URL=settings.AMAGAMA_URL))
def _test_browse_view(project, request, response, kwargs): cookie_data = json.loads(unquote(response.cookies[SIDEBAR_COOKIE_NAME].value)) assert cookie_data["foo"] == "bar" assert "announcements_projects_%s" % project.code in cookie_data 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"]): ob = project elif not kwargs["filename"]: ob = ProjectResource( Directory.objects.live().filter(pootle_path__regex="^/.*/%s$" % project_path), pootle_path="/projects/%s" % project_path, ) else: ob = ProjectResource( Store.objects.live().filter(pootle_path__regex="^/.*/%s$" % project_path), pootle_path="/projects/%s" % project_path, ) item_func = make_xlanguage_item if (kwargs["dir_path"] or kwargs["filename"]) else make_language_item items = [item_func(item) for item in ob.get_children_for_user(request.profile)] items.sort(lambda x, y: locale.strcoll(x["title"], y["title"])) table_fields = [ "name", "progress", "total", "need-translation", "suggestions", "critical", "last-updated", "activity", ] table = {"id": "project", "fields": table_fields, "headings": get_table_headings(table_fields), "items": items} assertions = dict( page="browse", project=project, resource_obj=ob, 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=ob.get_translate_url(state="incomplete"), url_action_fixcritical=ob.get_critical_url(), url_action_review=ob.get_translate_url(state="suggestions"), url_action_view_all=ob.get_translate_url(state="all"), translation_states=get_translation_states(ob), check_categories=get_qualitycheck_schema(ob), table=table, stats=jsonify(ob.get_stats()), ) sidebar = get_sidebar_announcements_context(request, (project,)) for k in ["has_sidebar", "is_sidebar_open", "announcements"]: assertions[k] = sidebar[0][k] view_context_test(ctx, **assertions)
def test_view_projects_export(site_permissions, site_matrix_with_vfolders, client, nobody, default): response = client.get(reverse("pootle-projects-export")) ctx = response.context request = response.wsgi_request filter_name, filter_extra = get_filter_name(request.GET) units_qs = Unit.objects.get_for_path("/projects/", request.profile) units_qs = get_step_query(request, units_qs) units_qs = units_qs.select_related("store") unit_groups = [(path, list(units)) for path, units in groupby(units_qs, lambda x: x.store.pootle_path)] assertions = dict( project=None, language=None, source_language="en", filter_name=filter_name, filter_extra=filter_extra, unit_groups=unit_groups, ) view_context_test(ctx, **assertions)
def _test_browse_view(language, request, response, kwargs): assert ( response.cookies["pootle-language"].value == language.code) cookie_data = json.loads( unquote(response.cookies[SIDEBAR_COOKIE_NAME].value)) assert cookie_data["foo"] == "bar" assert "announcements_%s" % language.code in cookie_data ctx = response.context table_fields = [ 'name', 'progress', 'total', 'need-translation', 'suggestions', 'critical', 'last-updated', 'activity'] user_tps = language.get_children_for_user(request.user) items = [make_project_item(tp) for tp in user_tps] table = { 'id': 'language', 'fields': table_fields, 'headings': get_table_headings(table_fields), 'items': items} assertions = dict( page="browse", resource_obj=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), table=table, translation_states=get_translation_states(language), stats=jsonify(language.get_stats_for_user(request.user))) sidebar = get_sidebar_announcements_context( request, (language, )) for k in ["has_sidebar", "is_sidebar_open", "announcements"]: assertions[k] = sidebar[0][k] view_context_test(ctx, **assertions)
def test_view_projects_browse( site_permissions, site_matrix_with_vfolders, site_matrix_with_announcements, client, nobody, default ): 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) ob = ProjectSet(user_projects) items = [make_project_list_item(project) for project in ob.children] items.sort(lambda x, y: locale.strcoll(x["title"], y["title"])) table_fields = [ "name", "progress", "total", "need-translation", "suggestions", "critical", "last-updated", "activity", ] table = {"id": "projects", "fields": table_fields, "headings": get_table_headings(table_fields), "items": items} assertions = dict( page="browse", pootle_path="/projects/", resource_path="", resource_path_parts=[], resource_obj=ob, table=table, browser_extends="projects/all/base.html", stats=jsonify(ob.get_stats()), check_categories=get_qualitycheck_schema(ob), translation_states=get_translation_states(ob), url_action_continue=ob.get_translate_url(state="incomplete"), url_action_fixcritical=ob.get_critical_url(), url_action_review=ob.get_translate_url(state="suggestions"), url_action_view_all=ob.get_translate_url(state="all"), ) view_context_test(ctx, **assertions)
def _test_translate_view(tp, request, response, kwargs, settings): ctx = response.context kwargs["project_code"] = tp.project.code kwargs["language_code"] = tp.language.code resource_path = "%(dir_path)s%(filename)s" % kwargs request_path = "%s%s" % (tp.pootle_path, resource_path) vfolder, pootle_path = extract_vfolder_from_path(request_path) current_vfolder_pk = ( vfolder.pk if vfolder else "") display_priority = ( not current_vfolder_pk and ( VirtualFolderTreeItem.objects.filter( pootle_path__startswith=pootle_path).exists())) assertions = dict( page="translate", translation_project=tp, language=tp.language, project=tp.project, is_admin=False, profile=request.profile, ctx_path=tp.pootle_path, pootle_path=request_path, resource_path=resource_path, resource_path_parts=get_path_parts(resource_path), editor_extends="translation_projects/base.html", check_categories=get_qualitycheck_schema(), previous_url=get_previous_url(request), current_vfolder_pk=current_vfolder_pk, display_priority=display_priority, cantranslate=check_permission("translate", request), cansuggest=check_permission("suggest", request), canreview=check_permission("review", request), search_form=make_search_form(request=request), POOTLE_MT_BACKENDS=settings.POOTLE_MT_BACKENDS, AMAGAMA_URL=settings.AMAGAMA_URL) view_context_test(ctx, **assertions)
def _test_export_view(language, request, response, kwargs): # TODO: export views should be parsed in a form ctx = response.context filter_name, filter_extra = get_filter_name(request.GET) units_qs = Unit.objects.get_for_path( language.pootle_path, request.profile) units_qs = get_step_query(request, units_qs) units_qs = units_qs.select_related('store') unit_groups = [ (path, list(units)) for path, units in groupby( units_qs, lambda x: x.store.pootle_path)] view_context_test( ctx, **dict( project=None, language=language, source_language="en", filter_name=filter_name, filter_extra=filter_extra, unit_groups=unit_groups))
def _test_browse_view(tp, request, response, kwargs): cookie_data = json.loads( unquote(response.cookies[SIDEBAR_COOKIE_NAME].value)) assert cookie_data["foo"] == "bar" assert "announcements_projects_%s" % tp.project.code in cookie_data assert "announcements_%s" % tp.language.code in cookie_data assert ( "announcements_%s_%s" % (tp.language.code, tp.project.code) in cookie_data) 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")): ob = tp.directory elif not kwargs.get("filename"): ob = Directory.objects.get( pootle_path=pootle_path) else: ob = Store.objects.get( pootle_path=pootle_path) if not kwargs.get("filename"): vftis = ob.vf_treeitems.select_related("vfolder") if not ctx["is_admin"]: vftis = vftis.filter(vfolder__is_public=True) vfolders = [ make_vfolder_treeitem_dict(vfolder_treeitem) for vfolder_treeitem in vftis.order_by('-vfolder__priority') if (ctx["is_admin"] or vfolder_treeitem.is_visible)] stats = {"vfolders": {}} for vfolder_treeitem in vfolders or []: stats['vfolders'][ vfolder_treeitem['code']] = vfolder_treeitem["stats"] del vfolder_treeitem["stats"] if stats["vfolders"]: stats.update(ob.get_stats()) else: stats = ob.get_stats() stats = jsonify(stats) else: stats = jsonify(ob.get_stats()) vfolders = None filters = {} if vfolders: filters['sort'] = 'priority' if resource_path: resource_obj = ob else: resource_obj = tp if not kwargs.get("filename"): table_fields = [ 'name', 'progress', 'total', 'need-translation', 'suggestions', 'critical', 'last-updated', 'activity'] table = {'id': 'tp', 'fields': table_fields, 'headings': get_table_headings(table_fields), 'items': get_children(ob)} else: table = None assertions = dict( page="browse", translation_project=tp, language=tp.language, project=tp.project, resource_obj=resource_obj, is_admin=False, 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(ob), check_categories=get_qualitycheck_schema(ob), url_action_continue=ob.get_translate_url( state='incomplete', **filters), url_action_fixcritical=ob.get_critical_url(**filters), url_action_review=ob.get_translate_url( state='suggestions', **filters), url_action_view_all=ob.get_translate_url(state='all'), stats=stats, parent=get_parent(ob)) if table: assertions["table"] = table sidebar = get_sidebar_announcements_context( request, (tp.project, tp.language, tp)) for k in ["has_sidebar", "is_sidebar_open", "announcements"]: assertions[k] = sidebar[0][k] view_context_test(ctx, **assertions) if vfolders: for vfolder in ctx["vfolders"]["items"]: assert vfolder["is_grayed"] is False assert ( ctx["vfolders"]["items"] == vfolders)