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
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
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))
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
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
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))
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))
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
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
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
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
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) )
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))