Example #1
0
def make_language_item(request, translation_project):
    href = '/%s/%s/' % (translation_project.language.code,
                        translation_project.project.code)
    projectstats = add_percentages(translation_project.getquickstats())
    info = {
        'code':
        translation_project.language.code,
        'href':
        href,
        'title':
        tr_lang(translation_project.language.fullname),
        'data':
        projectstats,
        'lastactivity':
        get_last_action(translation_project),
        'tooltip':
        _('%(percentage)d%% complete',
          {'percentage': projectstats['translatedpercentage']}),
    }
    errors = projectstats.get('errors', 0)
    if errors:
        info['errortooltip'] = ungettext('Error reading %d file',
                                         'Error reading %d files', errors,
                                         errors)
    info.update(stats_descriptions(projectstats))
    return info
Example #2
0
def get_items(request, model, get_last_action, name_func):

    items = []
    if not check_permission('view', request):
        return items

    for item in model.iterator():
        stats = item.getquickstats()
        stats = add_percentages(stats)

        lastact = get_last_action(item)
        items.append({
            'code': item.code,
            'name': name_func(item.fullname),
            'lastactivity': lastact,
            'trans': stats["translatedsourcewords"],
            'fuzzy': stats["fuzzysourcewords"],
            'untrans': stats["untranslatedsourcewords"],
            'total': stats["totalsourcewords"],
            'transper': stats["translatedpercentage"],
            'fuzzyper': stats["fuzzypercentage"],
            'untransper': stats["untranslatedpercentage"],
            'completed_title': _("%(percentage)d%% complete",
                                 {'percentage': stats['translatedpercentage']}),
            })
    items.sort(lambda x, y: locale.strcoll(x['name'], y['name']))
    return items
Example #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

    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))
Example #4
0
def make_language_item(request, source_language, translation_project):
    href = '/wikitrans/%s/%s/' % (
        translation_project.language.code, translation_project.project.code)
    projectstats = add_percentages(translation_project.getquickstats())
    mt_request_form = TranslationRequestForm(
        translation_project,
        initial={'translation_project': translation_project})
    info = {
        'project_id': translation_project.id,
        'mt_request_form': mt_request_form,
        'code': translation_project.language.code,
        'href': href,
        'title': tr_lang(translation_project.language.fullname),
        'data': projectstats,
        'lastactivity': get_last_action(translation_project),
        'tooltip': _('%(percentage)d%% complete',
                     {'percentage': projectstats['translatedpercentage']}),
        # 'translator_form': MachineTranslatorSelectorForm(
        #     source_language, translation_project.language)
        'translators': MachineTranslator.get_eligible_translators(
            source_language, translation_project.language)
    }
    errors = projectstats.get('errors', 0)
    if errors:
        info['errortooltip'] = ungettext(
            'Error reading %d file', 'Error reading %d files', errors, errors)
    info.update(stats_descriptions(projectstats))
    return info
Example #5
0
def get_items(request, model, get_last_action, name_func):

    items = []
    if not check_permission("view", request):
        return items

    for item in model.objects.iterator():
        stats = item.getquickstats()
        stats = add_percentages(stats)

        items.append(
            {
                "code": item.code,
                "name": name_func(item.fullname),
                "lastactivity": get_last_action(item),
                "trans": stats["translatedsourcewords"],
                "fuzzy": stats["fuzzysourcewords"],
                "untrans": stats["untranslatedsourcewords"],
                "total": stats["totalsourcewords"],
                "transper": stats["translatedpercentage"],
                "fuzzyper": stats["fuzzypercentage"],
                "untransper": stats["untranslatedpercentage"],
                "completed_title": _("%(percentage)d%% complete", {"percentage": stats["translatedpercentage"]}),
            }
        )
    items.sort(lambda x, y: locale.strcoll(x["name"], y["name"]))
    return items
Example #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))
Example #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))
Example #8
0
def make_language_item(request, translation_project):
    href = '/%s/%s/' % (translation_project.language.code, translation_project.project.code)
    projectstats = add_percentages(translation_project.getquickstats())
    info = {
        'code': translation_project.language.code,
        'href': href,
        'title': tr_lang(translation_project.language.fullname),
        'data': projectstats,
        'lastactivity': get_last_action(translation_project),
        'tooltip': _('%(percentage)d%% complete',
                     {'percentage': projectstats['translatedpercentage']}),
    }
    errors = projectstats.get('errors', 0)
    if errors:
        info['errortooltip'] = ungettext('Error reading %d file', 'Error reading %d files', errors, errors)
    info.update(stats_descriptions(projectstats))
    return info
Example #9
0
def make_project_item(translation_project):
    project = translation_project.project
    href = translation_project.pootle_path
    projectstats = add_percentages(translation_project.getquickstats())
    info = {
        'code': project.code,
        'href': href,
        'icon': 'folder',
        'title': project.fullname,
        'description': project.description,
        'data': projectstats,
        'lastactivity': get_last_action(translation_project),
        'isproject': True,
        'tooltip': _('%(percentage)d%% complete',
                     {'percentage': projectstats['translatedpercentage']})
    }
    errors = projectstats.get('errors', 0)
    if errors:
        info['errortooltip'] = ungettext('Error reading %d file', 'Error reading %d files', errors, errors)
    info.update(stats_descriptions(projectstats))
    return info
Example #10
0
def get_items(request, model, get_last_action, name_func):

    items = []
    if not check_permission('view', request):
        return items

    for item in model.objects.iterator():
        stats = item.getquickstats()
        stats = add_percentages(stats)

        lastact = get_last_action(item)
        items.append({
            'code':
            item.code,
            'name':
            name_func(item.fullname),
            'lastactivity':
            lastact,
            'trans':
            stats["translatedsourcewords"],
            'fuzzy':
            stats["fuzzysourcewords"],
            'untrans':
            stats["untranslatedsourcewords"],
            'total':
            stats["totalsourcewords"],
            'transper':
            stats["translatedpercentage"],
            'fuzzyper':
            stats["fuzzypercentage"],
            'untransper':
            stats["untranslatedpercentage"],
            'completed_title':
            _("%(percentage)d%% complete",
              {'percentage': stats['translatedpercentage']}),
        })
    items.sort(lambda x, y: locale.strcoll(x['name'], y['name']))
    return items
Example #11
0
def make_language_item(request, source_language, translation_project):
    href = '/%s/%s/' % (translation_project.language.code,
                        translation_project.project.code)
    projectstats = add_percentages(translation_project.getquickstats())
    mt_request_form = TranslationRequestForm(
        translation_project,
        initial={'translation_project': translation_project})
    info = {
        'project_id':
        translation_project.id,
        'mt_request_form':
        mt_request_form,
        'code':
        translation_project.language.code,
        'href':
        href,
        'title':
        tr_lang(translation_project.language.fullname),
        'data':
        projectstats,
        'lastactivity':
        get_last_action(translation_project),
        'tooltip':
        _('%(percentage)d%% complete',
          {'percentage': projectstats['translatedpercentage']}),
        #'translator_form': MachineTranslatorSelectorForm(source_language, translation_project.language)
        'translators':
        MachineTranslator.get_eligible_translators(
            source_language, translation_project.language)
    }
    errors = projectstats.get('errors', 0)
    if errors:
        info['errortooltip'] = ungettext('Error reading %d file',
                                         'Error reading %d files', errors,
                                         errors)
    info.update(stats_descriptions(projectstats))
    return info
Example #12
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) )
Example #13
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))