def show_project(request, project): obj = get_project(request, project) obj.stats.ensure_basic() user = request.user last_changes = obj.change_set.prefetch().order()[:10] last_announcements = (obj.change_set.prefetch().order().filter( action=Change.ACTION_ANNOUNCEMENT)[:10]) all_components = prefetch_stats( obj.child_components.filter_access(user).prefetch().order()) all_components = get_paginator(request, all_components) for component in all_components: component.is_shared = None if component.project == obj else component.project language_stats = obj.stats.get_language_stats() # Show ghost translations for user languages component = None for component in all_components: if component.can_add_new_language(user, fast=True): break if component: add_ghost_translations( component, user, language_stats, GhostProjectLanguageStats, is_shared=component.is_shared, ) language_stats = sort_unicode( language_stats, lambda x: f"{user.profile.get_translation_order(x)}-{x.language}", ) components = prefetch_tasks(all_components) return render( request, "project.html", { "allow_index": True, "object": obj, "project": obj, "last_changes": last_changes, "last_announcements": last_announcements, "reports_form": ReportsForm(), "last_changes_url": urlencode({"project": obj.slug}), "language_stats": [stat.obj or stat for stat in language_stats], "search_form": SearchForm(request.user), "announcement_form": optional_form(AnnouncementForm, user, "project.edit", obj), "delete_form": optional_form( ProjectDeleteForm, user, "project.edit", obj, obj=obj), "rename_form": optional_form( ProjectRenameForm, user, "project.edit", obj, request=request, instance=obj, ), "replace_form": optional_form(ReplaceForm, user, "unit.edit", obj), "bulk_state_form": optional_form( BulkEditForm, user, "translation.auto", obj, user=user, obj=obj, project=obj, auto_id="id_bulk_%s", ), "components": components, "licenses": sorted( (component for component in all_components if component.license), key=lambda component: component.license, ), }, )
def show_project(request, project): obj = get_project(request, project) obj.stats.ensure_basic() user = request.user last_changes = Change.objects.prefetch().order().filter(project=obj)[:10] last_announcements = (Change.objects.prefetch().order().filter( project=obj, action=Change.ACTION_ANNOUNCEMENT)[:10]) language_stats = obj.stats.get_language_stats() # Show ghost translations for user languages component = None for component in obj.component_set.filter_access(user).all(): if component.can_add_new_language(user): break if component: add_ghost_translations(component, user, language_stats, GhostProjectLanguageStats) language_stats = sort_unicode( language_stats, lambda x: "{}-{}".format(user.profile.get_language_order(x.language), x .language), ) all_components = obj.component_set.filter_access(user).prefetch().order() components = prefetch_tasks(prefetch_stats(all_components)) return render( request, "project.html", { "allow_index": True, "object": obj, "project": obj, "last_changes": last_changes, "last_announcements": last_announcements, "reports_form": ReportsForm(), "last_changes_url": urlencode({"project": obj.slug}), "language_stats": [stat.obj or stat for stat in language_stats], "search_form": SearchForm(request.user), "announcement_form": optional_form(AnnouncementForm, user, "project.edit", obj), "delete_form": optional_form( ProjectDeleteForm, user, "project.edit", obj, obj=obj), "rename_form": optional_form( ProjectRenameForm, user, "project.edit", obj, request=request, instance=obj, ), "replace_form": optional_form(ReplaceForm, user, "unit.edit", obj), "bulk_state_form": optional_form( BulkEditForm, user, "translation.auto", obj, user=user, obj=obj, project=obj, auto_id="id_bulk_%s", ), "components": components, "licenses": obj.component_set.exclude(license="").order_by("license"), }, )
def translation_prefetch_tasks(translations): prefetch_tasks([translation.component for translation in translations]) return translations