gpt4 book ai didi

python - 如何在 Pootle 中按总体完成情况显示排序列表

转载 作者:行者123 更新时间:2023-12-01 06:14:14 24 4
gpt4 key购买 nike

嗨,我是 Django 新手,正在从事 Pootle 项目。

我想在 pootle 索引页面中默认按总体完成度排序。例如,http://pootle.locamotion.org/列出语言并按名称排序。您可以单击排序按钮来查看按完成程度排序。但我想在加载页面时显示按完成排序的列表。

在pootle/local_apps/pootle_app/templates/index/index.html,

 <table class="sortable">
<tr>
<th>{% trans 'Language' %}</th>
<th>{% trans 'Overall Completion' %}</th>
<th>{% trans 'Last Activity' %}</th>
</tr>
{% for item in languages %}
{% ifnotequal item.total 0 %}
<tr class="{% cycle 'even' 'odd' %}">
<td class="language">
<a href="{% filter l %}/{{ item.code }}/{% endfilter %}">{{ item.name }}</a></td>
<td>
<div class="sortkey">{{ item.transper }}</div>
<div class="graph" title="{{ item.completed_title }}" dir="{% if LANGUAGE_BIDI %}rtl{% else %}ltr{% endif %}">
<div class="translated" style="width: {{ item.transper }}px"></div>
{% if item.fuzzy %}
<div class="fuzzy" style="{%if LANGUAGE_BIDI%}right{%else%}left{%endif%}: {{ item.transper }}px; width: {{ item.fuzzyper }}px"></div>
{% endif %}
{% if item.untrans %}
<div class="untranslated" style="{% if LANGUAGE_BIDI %}right{% else %}left{% endif %}: {{ item.transper|add:item.fuzzyper }}px; width: {{ item.untransper }}px"></div>
{% endif %}
</div>
</td>
<td>{{ item.lastactivity }}</td>
</tr>
{% endifnotequal %}
{% endfor %}
</table>

item.transper 是我想要排序的键。

这就是项目和语言的定义方式:

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 getlanguages(request):
def get_last_action(item):
try:
return Submission.objects.filter(translation_project__language=item).latest()
except Submission.DoesNotExist:
return ''

return get_items(request, Language, get_last_action, tr_lang)

我应该如何更改此设置,以便默认情况下按整体完成度排序?

非常感谢您的建议

最佳答案

改变

items.sort(lambda x, y: locale.strcoll(x['name'], y['name']))

items.sort(lambda x, y: cmp(x['transper'], y['transper']))

(这与内置 cmp 函数配合得很好,因为 transper 字段由 nice_percentage 函数转换为 int,这作为 add_percentages 的一部分调用)

如果这没有产生您想要的顺序,只需切换对象xy即可。

<小时/>

如果您需要在模板中对其进行排序(弄乱第三方应用程序的源代码通常是一个坏主意),您可以使用 the dictsort filter :

{% for item in languages|dictsort:"transper" %}

同样,如果这不是您想要的顺序,请使用 dictsortreversed .

关于python - 如何在 Pootle 中按总体完成情况显示排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4150571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com