Ejemplo n.º 1
0
def project_language_index(request, project_code):
    """page listing all languages added to project"""
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(get_profile(request.user), project.directory)
    if not check_permission('view', request):
        raise PermissionDenied

    translation_projects = project.translationproject_set.all()
    items = [make_language_item(request, translation_project) for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))
    languagecount = len(translation_projects)
    totals = add_percentages(project.getquickstats())
    average = totals['translatedpercentage']

    topstats = gentopstats_project(project)

    templatevars = {
        'project': {
          'code': project.code,
          'name': project.fullname,
          'stats': ungettext('%(languages)d language, %(average)d%% translated',
                             '%(languages)d languages, %(average)d%% translated',
                             languagecount, {"languages": languagecount, "average": average}),
        },
        'description': project.description,
        'adminlink': _('Admin'),
        'languages': items,
        'instancetitle': pagelayout.get_title(),
        'topstats': topstats,
        'statsheadings': get_stats_headings(),
        'translationlegend': {'translated': _('Translations are complete'),
                              'fuzzy': _('Translations need to be checked (they are marked fuzzy)'),
                              'untranslated': _('Untranslated')},
    }
    return render_to_response('project/project.html', templatevars, context_instance=RequestContext(request))
Ejemplo n.º 2
0
def get_project_base_template_vars(request, project, can_edit):
    """Get the base template vars for project overview view."""
    translation_projects = project.translationproject_set.all()

    filters, tags_filter_form = handle_tags_filter_form(
        request, translation_projects)

    if filters is not None:
        for tag in filters:
            # This looks pretty scary, but couldn't manage to get it working
            # using Q objects in a single filter.
            translation_projects = translation_projects.filter(tags__in=[tag])
        translation_projects = translation_projects.distinct()

    items = [make_language_item(request, translation_project) \
            for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))

    languagecount = len(translation_projects)
    project_stats = get_raw_stats(project)

    summary_dict = {
        "languages": languagecount,
        "average": project_stats['translated']['percentage'],
    }

    summary = ungettext('%(languages)d language, %(average)d%% translated',
                        '%(languages)d languages, %(average)d%% translated',
                        languagecount, summary_dict)

    table_fields = [
        'name', 'progress', 'total', 'need-translation', 'activity', 'tags'
    ]

    template_vars = {
        'project': {
            'code': project.code,
            'name': project.fullname,
            'description': project.description,
            'summary': summary,
        },
        'topstats': gentopstats_project(project),
        'can_edit': can_edit,
        'table': {
            'id': 'project',
            'proportional': False,
            'fields': table_fields,
            'headings': get_table_headings(table_fields),
            'items': items,
        },
        'tags_filter_form': tags_filter_form,
    }

    return template_vars
Ejemplo n.º 3
0
def project_language_index(request, project_code):
    """page listing all languages added to project"""
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(
            get_profile(request.user), project.directory
    )

    if not check_permission('view', request):
        raise PermissionDenied

    can_edit = check_permission('administrate', request)

    translation_projects = project.translationproject_set.all()

    items = [make_language_item(request, translation_project) \
            for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))

    languagecount = len(translation_projects)
    project_stats = get_raw_stats(project)
    average = project_stats['translated']['percentage']

    topstats = gentopstats_project(project)

    table_fields = ['name', 'progress', 'total', 'need-translation', 'activity']
    table = {
        'id': 'project',
        'proportional': False,
        'fields': table_fields,
        'headings': get_table_headings(table_fields),
        'items': items,
    }

    templatevars = {
        'project': {
          'code': project.code,
          'name': project.fullname,
          'description': project.description,
          'summary': ungettext('%(languages)d language, %(average)d%% translated',
                               '%(languages)d languages, %(average)d%% translated',
                               languagecount, {"languages": languagecount,
                                               "average": average}),
        },
        'topstats': topstats,
        'can_edit': can_edit,
        'table': table,
    }

    if can_edit:
        from pootle_project.forms import DescriptionForm
        templatevars['form'] = DescriptionForm(instance=project)

    return render_to_response('project/project.html', templatevars,
                              context_instance=RequestContext(request))
Ejemplo n.º 4
0
def get_project_base_template_vars(request, project, can_edit):
    """Get the base template vars for project overview view."""
    translation_projects = project.translationproject_set.all()

    filters, tags_filter_form = handle_tags_filter_form(request,
                                                        translation_projects)

    if filters is not None:
        for tag in filters:
            # This looks pretty scary, but couldn't manage to get it working
            # using Q objects in a single filter.
            translation_projects = translation_projects.filter(tags__in=[tag])
        translation_projects = translation_projects.distinct()

    items = [make_language_item(translation_project) \
            for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))

    languagecount = len(translation_projects)
    project_stats = get_raw_stats(project)

    summary_dict = {
        "languages": languagecount,
        "average": project_stats['translated']['percentage'],
    }

    summary = ungettext('%(languages)d language, %(average)d%% translated',
                        '%(languages)d languages, %(average)d%% translated',
                        languagecount, summary_dict)

    table_fields = ['name', 'progress', 'total', 'need-translation',
                    'activity', 'tags']

    template_vars = {
        'project': {
            'code': project.code,
            'name': project.fullname,
            'description': project.description,
            'summary': summary,
        },
        'topstats': gentopstats_project(project),
        'can_edit': can_edit,
        'table': {
            'id': 'project',
            'proportional': False,
            'fields': table_fields,
            'headings': get_table_headings(table_fields),
            'items': items,
        },
        'tags_filter_form': tags_filter_form,
    }

    return template_vars
Ejemplo n.º 5
0
def project_language_index(request, project_code):
    """page listing all languages added to project"""
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   project.directory)

    if not check_permission('view', request):
        raise PermissionDenied

    can_edit = check_permission('administrate', request)

    translation_projects = project.translationproject_set.all()

    items = [make_language_item(request, translation_project) \
            for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))

    languagecount = len(translation_projects)
    project_stats = get_raw_stats(project)
    average = project_stats['translated']['percentage']

    topstats = gentopstats_project(project)

    templatevars = {
        'project': {
            'code':
            project.code,
            'name':
            project.fullname,
            'description_html':
            project.description_html,
            'summary':
            ungettext('%(languages)d language, %(average)d%% translated',
                      '%(languages)d languages, %(average)d%% translated',
                      languagecount, {
                          "languages": languagecount,
                          "average": average
                      }),
        },
        'languages': items,
        'topstats': topstats,
        'statsheadings': get_stats_headings(),
        'can_edit': can_edit,
    }

    if can_edit:
        from pootle_project.forms import DescriptionForm
        templatevars['form'] = DescriptionForm(instance=project)

    return render_to_response('project/project.html',
                              templatevars,
                              context_instance=RequestContext(request))
Ejemplo n.º 6
0
def project_language_index(request, project_code):
    """page listing all languages added to project"""
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   project.directory)
    if not check_permission('view', request):
        raise PermissionDenied

    translation_projects = project.translationproject_set.all()
    items = [
        make_language_item(request, translation_project)
        for translation_project in translation_projects.iterator()
    ]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))
    languagecount = len(translation_projects)
    totals = add_percentages(project.getquickstats())
    average = totals['translatedpercentage']

    topstats = gentopstats_project(project)

    templatevars = {
        'project': {
            'code':
            project.code,
            'name':
            project.fullname,
            'stats':
            ungettext('%(languages)d language, %(average)d%% translated',
                      '%(languages)d languages, %(average)d%% translated',
                      languagecount, {
                          "languages": languagecount,
                          "average": average
                      }),
        },
        'description': project.description,
        'adminlink': _('Admin'),
        'languages': items,
        'instancetitle': pagelayout.get_title(),
        'topstats': topstats,
        'statsheadings': get_stats_headings(),
        'translationlegend': {
            'translated': _('Translations are complete'),
            'fuzzy':
            _('Translations need to be checked (they are marked fuzzy)'),
            'untranslated': _('Untranslated')
        },
    }
    return render_to_response('project/project.html',
                              templatevars,
                              context_instance=RequestContext(request))
Ejemplo n.º 7
0
def project_language_index(request, project_code):
    """page listing all languages added to project"""
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(get_profile(request.user), project.directory)
    if not check_permission('view', request):
        raise PermissionDenied
    
    # Check for form post (MT request)
    if request.method == "POST":
        # TODO: This is not the correct way to handle one of many forms. How do I do it better?
        # TODO: This is not save against injection attacks.
        
        # translation_request_form = TranslationRequestForm(None, request.POST)
        # Get the project
        translator = MachineTranslator.objects.get(pk = request.POST['translator'])
        translation_project = TranslationProject.objects.get(
                                    pk = request.POST['translation_project'])
        translator.create_translation_request(translation_project)
        
        return HttpResponseRedirect("?translator=%s&project=%s" % (translator, translation_project))

    translation_projects = project.translationproject_set.all()
    items = [make_language_item(request, project.source_language, translation_project) for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))
    languagecount = len(translation_projects)
    totals = add_percentages(project.getquickstats())
    average = totals['translatedpercentage']

    topstats = gentopstats_project(project)

    templatevars = {
        'project': {
          'code': project.code,
          'name': project.fullname,
          'stats': ungettext('%(languages)d language, %(average)d%% translated',
                             '%(languages)d languages, %(average)d%% translated',
                             languagecount, {"languages": languagecount, "average": average}),
        },
        'description': project.description,
        'adminlink': _('Admin'),
        'languages': items,
        'templates_code': Language.objects.get_by_natural_key('templates').code,
        'instancetitle': pagelayout.get_title(),
        'topstats': topstats,
        'statsheadings': get_stats_headings(),
        'translationlegend': {'translated': _('Translations are complete'),
                              'fuzzy': _('Translations need to be checked (they are marked fuzzy)'),
                              'untranslated': _('Untranslated')},
    }
    return render_to_response('project/project.html', templatevars, context_instance=RequestContext(request))
Ejemplo n.º 8
0
def get_project_base_template_vars(request, project, can_edit):
    """Get the base template vars for project overview view."""
    translation_projects = project.translationproject_set.all()

    items = [make_language_item(translation_project) \
            for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))

    languagecount = len(translation_projects)
    project_stats = get_raw_stats(project)

    summary_dict = {
        "languages": languagecount,
        "average": project_stats['translated']['percentage'],
    }

    summary = ungettext('%(languages)d language, %(average)d%% translated',
                        '%(languages)d languages, %(average)d%% translated',
                        languagecount, summary_dict)

    table_fields = ['name', 'progress', 'total', 'need-translation',
                    'activity', 'tags']

    template_vars = {
        'project': {
            'code': project.code,
            'name': project.fullname,
            'description': project.description,
            'summary': summary,
        },
        'topstats': gentopstats_project(project),
        'can_edit': can_edit,
        'table': {
            'id': 'project',
            'proportional': False,
            'fields': table_fields,
            'headings': get_table_headings(table_fields),
            'items': items,
        },
    }

    return template_vars
Ejemplo n.º 9
0
def get_project_base_template_vars(request, project, can_edit):
    """Get the base template vars for project overview view."""
    translation_projects = project.translationproject_set.all()

    items = [make_language_item(translation_project) \
            for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))

    languagecount = len(translation_projects)

    summary = ungettext('%(languages)d language', '%(languages)d languages',
                        languagecount, {"languages": languagecount})

    table_fields = [
        'name', 'progress', 'total', 'need-translation', 'activity', 'tags'
    ]

    template_vars = {
        'resource_obj': request.resource_obj,
        'project': {
            'code': project.code,
            'name': project.fullname,
            'description': project.description,
            'summary': summary,
        },
        'topstats': gentopstats_project(project),
        'can_edit': can_edit,
        'table': {
            'id': 'project',
            'proportional': False,
            'fields': table_fields,
            'headings': get_table_headings(table_fields),
            'items': items,
        },
    }

    return template_vars
Ejemplo n.º 10
0
def overview(request, project):
    """Page listing all languages added to project."""
    from locale import strcoll
    from pootle.i18n.gettext import tr_lang

    def _make_lang_item(tp):
        href = tp.get_absolute_url()
        href_all = tp.get_translate_url()
        href_todo = tp.get_translate_url(state="incomplete")

        info = {
            "project": tp.project.code,
            "code": tp.code,
            "href": href,
            "href_all": href_all,
            "href_todo": href_todo,
            "title": tr_lang(tp.language.fullname),
            "lastactivity": get_last_action(tp),
            "tags": tp.tag_like_objects,
            "pk": tp.pk,
        }

        return info

    translation_projects = project.translationproject_set.all()

    items = [_make_lang_item(tp) for tp in translation_projects.iterator()]
    items.sort(lambda x, y: strcoll(x["title"], y["title"]))

    langs = translation_projects.count()

    summary = ungettext("%(langs)d language", "%(langs)d languages", langs, {"langs": langs})

    fields = ["name", "progress", "total", "need-translation", "activity", "tags"]

    ctx = {
        "resource_obj": request.resource_obj,
        "project": {
            "code": project.code,
            "name": project.fullname,
            "description": project.description,
            "summary": summary,
        },
        "topstats": gentopstats_project(project),
        "can_edit": check_permission("administrate", request),
        "table": {
            "id": "project",
            "proportional": False,
            "fields": fields,
            "headings": get_table_headings(fields),
            "items": items,
        },
    }

    if ctx["can_edit"]:
        from pootle_project.forms import DescriptionForm

        tag_action_url = reverse("pootle-xhr-tag-tp-in-project", kwargs={"project_code": project.code})
        ctx.update(
            {
                "form": DescriptionForm(instance=project),
                "form_action": reverse("pootle-project-admin-settings", args=[project.code]),
                "add_tag_form": TranslationProjectTagForm(project=project),
                "add_tag_action_url": tag_action_url,
            }
        )

    return render(request, "projects/overview.html", ctx)
Ejemplo n.º 11
0
def project_language_index(request, project_code):
    """page listing all languages added to project with the possibility to add new ones"""
    
    import logging 
    current_project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(get_profile(request.user), current_project.directory)
    #TODO: maybe find a clever way to check permission
    if not check_permission('view', request):
        raise PermissionDenied
    
    #load the current project
    class TranslationProjectForm(forms.ModelForm):
        
        #since the user has already selected the project he wants to add the languages to
        #we hide the field of the project reference
        project = forms.ModelChoiceField(queryset=Project.objects.filter(pk=current_project.pk),
                                         initial=current_project.pk, widget=forms.HiddenInput)
        
        #form will be based on/extend the TranslationProject object
        class Meta:
            model = TranslationProject
   
    if request.method == 'POST': # If the form has been submitted...
        form = TranslationProjectForm(request.POST) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            
            #proceed with filling in the form values exactly as in the model
            logging.debug("Saving form")
            translation_project = form.save() 
            
            #generate the empty .po translation file for the new language
            #based on the template
            translation_project.update_from_templates()
            translation_project.getcompletestats()
            translation_project.getquickstats()
            
            openproject = translation_project.project
            current_project = translation_project.project
        
            return  HttpResponseRedirect( openproject._get_pootle_path() ) # Redirect after POST
    else:
        form = TranslationProjectForm() # An unbound form
        logging.debug("Unbound form")
        
        logging.debug("%s, %s, ", current_project.code, current_project.fullname )

    

    translation_projects = current_project.translationproject_set.all()
    items = [make_language_item(request, translation_project) for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))
    languagecount = len(translation_projects)
    totals = add_percentages(current_project.getquickstats())
    average = totals['translatedpercentage']

    topstats = gentopstats_project(current_project)

    templatevars = {
        'form' : form,
        'project': {
          'code': current_project.code,
          'name': current_project.fullname,
          'stats': ungettext('%(languages)d language, %(average)d%% translated',
                             '%(languages)d languages, %(average)d%% translated',
                             languagecount, {"languages": languagecount, "average": average})
        },
        'description': current_project.description,
        'adminlink': _('Admin'),
        'languages': items,
        'instancetitle': pagelayout.get_title(),
        'topstats': topstats,
        'statsheadings': get_stats_headings(),
        'translationlegend': {'translated': _('Translations are complete'),
                    'fuzzy': _('Translations need to be checked (they are marked fuzzy)'
                    ), 'untranslated': _('Untranslated')},
    }
    
    
    return render_to_response( 'project/project_edit.html', templatevars, context_instance=RequestContext(request) )
Ejemplo n.º 12
0
def project_language_index(request, project_code):
    """page listing all languages added to project"""
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   project.directory)
    if not check_permission('view', request):
        raise PermissionDenied

    # Check for form post (MT request)
    if request.method == "POST":
        # TODO: This is not the correct way to handle one of many forms. How do I do it better?
        # TODO: This is not save against injection attacks.

        # translation_request_form = TranslationRequestForm(None, request.POST)
        # Get the project
        translator = MachineTranslator.objects.get(
            pk=request.POST['translator'])
        translation_project = TranslationProject.objects.get(
            pk=request.POST['translation_project'])
        translator.create_translation_request(translation_project)

        return HttpResponseRedirect("?translator=%s&project=%s" %
                                    (translator, translation_project))

    translation_projects = project.translationproject_set.all()
    items = [
        make_language_item(request, project.source_language,
                           translation_project)
        for translation_project in translation_projects.iterator()
    ]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))
    languagecount = len(translation_projects)
    totals = add_percentages(project.getquickstats())
    average = totals['translatedpercentage']

    topstats = gentopstats_project(project)

    templatevars = {
        'project': {
            'code':
            project.code,
            'name':
            project.fullname,
            'stats':
            ungettext('%(languages)d language, %(average)d%% translated',
                      '%(languages)d languages, %(average)d%% translated',
                      languagecount, {
                          "languages": languagecount,
                          "average": average
                      }),
        },
        'description': project.description,
        'adminlink': _('Admin'),
        'languages': items,
        'templates_code':
        Language.objects.get_by_natural_key('templates').code,
        'instancetitle': pagelayout.get_title(),
        'topstats': topstats,
        'statsheadings': get_stats_headings(),
        'translationlegend': {
            'translated': _('Translations are complete'),
            'fuzzy':
            _('Translations need to be checked (they are marked fuzzy)'),
            'untranslated': _('Untranslated')
        },
    }
    return render_to_response('project/project.html',
                              templatevars,
                              context_instance=RequestContext(request))